Компьютерный форум
Правила
Вернуться   Компьютерный форум > Форум программистов > Технологии программирования > Программирование графики
Перезагрузить страницу Артефакты при рисовании ломанной плоскости при помощи GL_TRIANGLE_STRIP|GL_QUADS
Ответ
 
Опции темы Опции просмотра
  (#1 (permalink)) Старый
Ququ Ququ вне форума
Новичок
 
Сообщений: 1
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 17.02.2011
По умолчанию Артефакты при рисовании ломанной плоскости при помощи GL_TRIANGLE_STRIP|GL_QUADS - 17.02.2011, 00:24

доброго времени суток!

ОС: fedora-14
IDE: Monodevelop
надстройка над OpenGL: TAO

рисую в цикле (по карте высот) ломанную плоскость:
csharp Код:
//настройки камеры

Gl.glEnable(Gl.GL_CULL_FACE);
Gl.glEnable(Gl.GL_DEPTH_TEST);
Gl.glDepthMask(Gl.GL_TRUE);

//отключение света

for(int i=0; i<_SIZE-1; i++)
for(int j=0; j<_SIZE-1; j++)
{
Gl.glBegin(Gl.GL_QUADS);
Gl.glColor3f(/*задаю цвет*/);
Gl.glVertex3f((float)i/2, массив_высот[i, j], (float)j/2);
           
Gl.glColor3f(/*задаю цвет*/);
Gl.glVertex3f((float)i/2, массив_высот[i, j+1], (float)(j+1)/2);
           
Gl.glColor3f(/*задаю цвет*/);
Gl.glVertex3f((float)(i+1)/2, массив_высот[i+1, j+1], (float)(j+1)/2);
           
Gl.glColor3f(/*задаю цвет*/);
Gl.glVertex3f((float)(i+1)/2, массив_высот[i+1, j], (float)j/2);
               
Gl.glEnd();
}

Отрисовываю все четырехугольники по очереди при помощи GL_QUADS.
Так же рисую границы каждого четырехугольника линиями.
На рисунке 1 видно, угол поднят - следовательно мы смотрим на заднюю грань, и она невидима. На рисунке 2, оно же, только без линий.

Если приблизим камеру и посмотрим на туже точку с другого ракурса, то видим, что с лицевой стороны с этим квадрантом все в порядке.

Неприятность появляется, когда такая вещь происходит в середине ломанной плоскости. На рисунке 4 видно две "впадины". При изменении точки взгляда, в этих двух местах образуется артефакт. Т.е. почему-то не отображается часть лицевой грани, затем следует обратная сторона, которую мы не видим естественно, и затем нормально-отображаемая другая лицевая грань. Но так-как лицевые грани имеют разные цвета, артефакт становится виден.

Подскажите, пожалуйста, как можно избежать подобного?

спасибо!
Изображения
Тип файла: png Выделение_001.png (7.4 Кб, 164 просмотров)
Тип файла: png Выделение_002.png (4.4 Кб, 113 просмотров)
Тип файла: png Выделение_003.png (8.4 Кб, 107 просмотров)
Тип файла: jpg Выделение_004.jpg (11.5 Кб, 75 просмотров)
Тип файла: jpg Выделение_005.jpg (10.1 Кб, 76 просмотров)
Ответить с цитированием
Ads
Ответ

Опции темы
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Trackbacks are Вкл.
Pingbacks are Вкл.
Refbacks are Выкл.


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Круг на плоскости qwertyo Pascal 2 23.09.2011 22:57
Объекты в JS создание объекта с точкой на плоскости evro DHTML, JavaScript, VBScript 0 07.04.2011 15:51
Прямоугольники на плоскости overcoder Алгоритмы 2 11.01.2011 22:04
Определите тип, представлюящий геометрические фигуры на плоскости krosss Haskell 1 16.12.2010 02:00
Access описание вариантов предметной плоскости sveta0391 Другие СУБД 0 14.12.2010 22:36
Область на плоскости является либо прямоугольником sheldon Haskell 10 14.11.2010 16:25
Предотвращение мерцания при рисовании в MFC kirrun Visual C++ 0 08.04.2007 01:24
Как избежать мерцания изображения при рисовании Sash&#39;Ok&#33; Visual C++ 10 21.09.2006 11:45
Использование многопоточности при рисовании графиков сигнала Xopc Visual C++ 6 05.04.2006 08:36
Укладка графа на плоскости RuzilyaAngel С/С++ 0 22.11.2005 00:48
Прозрачность при рисовании BabyBear Visual C++ 8 27.05.2005 00:26
Фрагмент кольца на плоскости Decembrist Программирование графики 3 27.11.2004 16:48



Powered by vBulletin® Version 3.8.7
Copyright ©2000 - 2018, Jelsoft Enterprises Ltd.
Нardforum.ru - компьютерный форум и программирование, форум программистов