glNewList ( 1, GL_COMPILE ); glColor3fv ( color ) ; glEndList ( ) ;
color [2] = 1.0;

Работа с z-буфером Как уже было сказано, OpenGL поддерживает использование аппаратного z-буфера для удаления невидимых поверхностей. Для того чтобы использовать эту поддержку, необходимо разрешить использование теста глубины при помощи следующей команды:

glEnable ( GL_DEPTH_TEST ) ;

Выключить эту проверку можно командой glDisable ( GL_DEPTH_TEST ); Существует возможность задания того, как OpenGL будет определять, что тест глубины выполнен. Для этого служит следующая функция:

void glDepthFunc ( GLEnum func );

Значения параметра func задаются табл. 4.3.

Таблица 4.3

Значение

Условие выполнения текста

GL.NEVER

Никогда не выполнен

GL_LESS

Если поступающее значение глубины меньше значения, хранящегося в буфере глубины

GL.EQUAL

Если поступающее значение глубины совпадает со значением, хранящимся в буфере глубины

GL_LEQUAL

Если поступающее значение глубины меньше или равно значению, хранящемуся в буфере глубины

GL.GREATER

Если поступающее значение глубины больше значения, хранящегося в буфере глубины

GL_NOTEQUAL

Если поступающее значение глубины не равно значению, хранящемуся в буфере глубины

GL.GEQUAL

Если поступающее значение глубины больше или равно значению, хранящемуся в буфере глубины

GL_ALWAYS

Всегда

Задание моделей закрашивания Линия или заполненная грань может быть нарисована одним цветом (плоское закрашивание, GL_FLAT) или путем интерполяции цветов в вершинах (закрашивание Гуро, GL_SMOOTH). В последнем случае значения цвета для пикселов интерполируются между заданными значениями.

Для задания режима закрашивания служит процедура

void glShadeModel ( GLenum mode );

где параметр mode принимает одно из значений GL_FLAT или GL_SMOOTH.

Основы библиотеки OpenGL

Освещение

OpenGL использует модель освещенности, в которой свет приходит из нескольких источников, которые по отдельности могут быть включены или выключены. Кроме того, существует еще общее фоновое (ambient) освещение. Для правильного освещения объектов необходимо для каждой грани задать материал, обладающий определенными свойствами. Материал может испускать свой собственный свет, рассеивать падающий свет во всех направлениях (диффузное отражение) или отражать свет в определенных направлениях подобно зеркалу.


⇐ Предыдущая| |Следующая ⇒