Если нужно включить удаление невидимых поверхностей методом z-буфера, то необходимо очистить г-буфер и подать команду
glEnable ( GL_DEPTH_TEST );
Все геометрические примитивы задаются в терминах вершин. Каждая вершина задается набором чисел.
OpenGL работает с однородными координатами (дт, у, г, w). Если координата г не задана, то она кладется равной нулю. Если координата w не задана, то она кладется равной единице.
Библиотека OpenGL может выводить точки, линии, полигоны и битовые изображения.
Под линией в OpenGL подразумевается отрезок, заданный своими начальной и конечной вершинами.
Под гранью (многоугольником) в OpenGL подразумевается замкнутый выпуклый многоугольник с несамопересекающейся границей.
Все геометрические объекты в OpenGL задаются посредством вершин, а сами вершины задаются процедурой
void glVertex{2 3 4}{s i f d){v}( TYPE x, … );
где реальное количество аргументов определяется первым суффиксом (2, 3 или 4) и суффикс v означает, что в качестве единственного аргумента выступает массив, содержащий необходимое количество координат. Например:
glVertex2s ( 1, 2 ) ; glVertext3f ( 2.3, 1.5, 0.2 ) ;
GLdouble vect [] ={ 1.0, 2.0, 3.0, 4.0); glVertext4dv ( vect ) ;
Для задания геометрических примитивов необходимо как-то выделить набор вершин, задающий этот объект. Для этого служат процедуры glBegin и glEnd.
Процедура
void glBegin ( GLenum mode );
обозначает начало списка вершин, описывающих геометрический примитив. Тип примитива задается параметром mode, который принимает одно из следующих значений (рис. 4.2): GLJPOINTS - набор отдельных точек;
GL_LINES - пары вершин, задающие отдельные отрезки:
[v0,v,],[v2,v3] т.д.;
GL_LINE_STRIP - незамкнутая ломаная v0v,v2…vn ; GL_LINE_LOOP - замкнутая ломаная v0v,v2…vnv0; GLJPOLYGON - простой выпуклый многоугольник;
GL_TRIANGLES - тройки вершин, интерпретируемые как вершины
отдельных треугольников: v0v,v2, v3v4v5,… ; GL_TRIANGLE_STRIP- связанная полоса треугольников: