glEnableClientState(GL_C0L0R_ARRAY); glEnableClientState(GL_VERTEX_ARRAY) ;

Сами по себе массивы те же, что и раньше, причем объявляются они в статусе глобальных:

GLfloat vertices[] = {{-1.0,-1.0,-1.0}, {1.0,-1.0,-1.0}, {1.0,1.0,-1.0}, {-1.0,1.0,-1.0}, {-1.0,-1.0,1.0}, {1.0,-1.0,1.0}, {1.0,1.0,1.0}, {-1.0,1.0,1.0}};
GLfloat colors[] = {{0.0,0.0,0.0}, {1.0,0.0,0.0}, {1.0,1.0,0.0}, {0.0,1.0,0.0}, {0.0,0.0,1.0}, {1.0,0.0,1.0}, {1.0,1.0,1.0}, {0.0,1.0,1.0}};

Следующая операция - передать OpenGL информацию о том, где находятся массивы. Это выполняется следующим образом:

glVertexPointer(3, GL_FL0AT, 0, vertices); glColorPointer(3, GL_FL0AT, 0, colors);

Первые три аргумента несут информацию о том, что элементы массивов являются соответственно трехмерными цветами и вершинами, которые сохраняются в формате float, и что элементы образуют непрерывный массив. Четвертый аргумент - указатель на определенный массив.

Теперь нужно включить в структуру данных информацию об отношениях между вершинами и гранями в кубе. Для этого организуется массив из 24 упорядоченных индексов вершин для шести граней:

GLubyte cubelndices[24]={0,3,2,1,
2,3,7,6, 0,4,7,3, 1,2,6,5, 4,5,6,7, 0,1,5,4};

Первая грань имеет вершины с индексами (0, 3, 2,1), вторая - (2, 3, 7,6) и т.д. Обратите внимание на то, что при упорядочении индексов вершин нужно учитывать порядок их обхода в многоугольнике при взгляде с внешней стороны куба. Массив индексов вершин также должен иметь статус глобального.

Теперь можно приступить к формированию трехмерного объекта - в данном случае куба - на основе информации из этих массивов. При формировании изображения обрабатываются все элементы объявленных массивов (в данном случае - цветов и вершин). Имеется несколько опций настройки, касающихся режима обработки массивов при отображении. Для настройки используется функция

glDrawElements(type, n, format, pointer) Аргументы функции имеют следующий смысл:

4.4. Модель разноцветного куба

type - тип элемента, например линия или многоугольник, который определяется массивом;


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