Народный учебник по OpenGL


Урок 12. Использование списков отображения - часть 4


glNewList(box,GL_COMPILE);      // Новый откомпилированный список отображения box

В следующей части кода нарисуем коробку без верха. Она не окажется на экране. Она будет сохранена в списке отображения.

Вы можете написать любую команду, какую только захотите, между glNewList() и glEndList(). Вы можете задавать цвета, менять текстуры и т.д. Единственный тип кода, который вы не можете использовать - это код, который изменит список отображения "на лету". Однажды создав список отображения, вы не можете его изменить.

Если вы добавите строку glColor3ub(rand()%255,rand()%255,rand()%255) в нижеследующий код, вы можете подумать, что каждый раз, когда вы рисуете объект на экране, он будет другого цвета. Но так как список создается лишь однажды, цвет не будет изменяться всякий раз, как вы рисуете его на экране. Каким бы ни был цвет объекта, когда он создается первый раз, таким он и останется.

Если вы хотите изменить цвет списка отображения, вам необходимо изменить его ДО того как список отображения будет выведен на экран. Я больше расскажу об этом позже.

glBegin(GL_QUADS);      // Начинаем рисование четырехугольников (quads)

                        

// Нижняя поверхность

glTexCoord2f(1.0f, 1.0f);

glVertex3f(-1.0f, -1.0f, -1.0f);        // Верхний правый угол текстуры и четырехугольник

glTexCoord2f(0.0f, 1.0f);

glVertex3f( 1.0f, -1.0f, -1.0f);        // Верхний левый угол текстуры и четырехугольник

glTexCoord2f(0.0f, 0.0f);

glVertex3f( 1.0f, -1.0f, 1.0f);        // Нижний левый угол текстуры и четырехугольник

glTexCoord2f(1.0f, 0.0f);

glVertex3f(-1.0f, -1.0f, 1.0f);        // Нижний правый угол текстуры и четырехугольник

                        

// Передняя поверхность

glTexCoord2f(0.0f, 0.0f);

glVertex3f(-1.0f, -1.0f, 1.0f);        // Нижний левый угол текстуры и четырехугольник

glTexCoord2f(1.0f, 0.0f);

glVertex3f( 1.0f, -1.0f, 1.0f);        // Нижний правый угол текстуры и четырехугольник

glTexCoord2f(1.0f, 1.0f);

glVertex3f( 1.0f, 1.0f, 1.0f);        // Верхний правый угол текстуры и четырехугольник




Начало  Назад  Вперед



Книжный магазин