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


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


glEnable(GL_COLOR_MATERIAL);    // Включает раскрашивание материала

Наконец, мы устанавливаем коррекцию перспективы для улучшения внешнего вида и возвращаем TRUE, давая знать нашей программе, что инициализация прошла OK.

glHint(GL_PERSPECTIVE_CORRECTION_HINT, GL_NICEST);      // Изящная коррекция перспективы

return TRUE;                                            // Инициализация прошла OK

}

Теперь часть программы для рисования. Как обычно, я немного шизею с математики. Нет SIN и COS, но это все еще непривычно :). Мы начнем, как обычно, с очистки экрана и глубины буфера.

Затем мы привяжем текстуру к кубу. Я мог добавить эту строку в коде списка отображения, но, оставляя ее вне списка, я могу изменить текстуру, когда захочу. Если бы я добавил строку glBindTexture(GL_TEXTURE_2D, texture[0]) внутри кода списка отображения, список был бы создан с этой текстурой постоянно нанесенной на него.

int DrawGLScene(GLvoid)                 // Здесь мы выполняем все рисование

{

glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);     // Очищаем экран и буфер глубины


glBindTexture(GL_TEXTURE_2D, texture[0]);               // Выбираем текстуру

Теперь немного позабавимся. Мы имеем цикл по yloop. Этот цикл используется для позиционирования кубов по оси Y (вверх и вниз). Мы хотим иметь 5 строк кубиков вверх и вниз, итак мы создадим цикл от 1 до 6 (то есть 5).

        for (yloop=1;yloop

        

{

Создадим другой цикл по xloop. Он используется для позиционирования кубиков по оси x (слева направо). Количество кубов зависит от того, в какой они рисуются строке. В верхней строчке xloop будет изменяться только от 0 до 1 (рисование одного кубика). В следующей строке xloop изменяется от 0 до 2 (рисование 2-х кубиков) и так далее.

                for (xloop=0;xloop< yloop;xloop++)              // Цикл по плоскости X

                

{

Мы очищаем наше окно с помощью glLoadIdentity().

                        glLoadIdentity();                       // Очистка вида

Следующая строка задает особую точку на экране. Это может сбить с толку, но не пугайтесь. На оси X происходит следующее:




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



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