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


Урок 5. Создание фигур в 3D - часть 5


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

        glColor3f(1.0f,0.5f,0.0f);              // Оранжевый

        

glVertex3f( 1.0f,-1.0f, 1.0f);          // Верх право квадрата (Низ)

        

glVertex3f(-1.0f,-1.0f, 1.0f);          // Верх лево

        

glVertex3f(-1.0f,-1.0f,-1.0f);          // Низ лево

        

glVertex3f( 1.0f,-1.0f,-1.0f);          // Низ право

Сейчас мы рисуем передний квадрат. Мы сдвигаемся на одну единицу ближе к экрану, и дальше от центра для того чтобы нарисовать переднею грань. Заметим, что ось Z всегда равна единице. В гранях пирамиды ось Z не всегда единица. Вверху, ось Z равна нулю. Если Вы попробуете установить ось Z равной нулю в привиденом ниже коде, вы увидите, что угол, который вы изменили наклонен к экрану. Но это не то, что мы хотим сейчас сделать ;).

        glColor3f(1.0f,0.0f,0.0f);              // Красный

        

glVertex3f( 1.0f, 1.0f, 1.0f);          // Верх право квадрата (Перед)

        

glVertex3f(-1.0f, 1.0f, 1.0f);          // Верх лево

        

glVertex3f(-1.0f,-1.0f, 1.0f);          // Низ лево

        

glVertex3f( 1.0f,-1.0f, 1.0f);          // Низ право

Задняя грань квадрата такая же ка передняя грань, но сдвинута вглубь экрана. Отметим, что ось Z всегда минус один во всех точках.

        glColor3f(1.0f,1.0f,0.0f);              // Желтый

        

glVertex3f( 1.0f,-1.0f,-1.0f);          // Верх право квадрата (Зад)

        

glVertex3f(-1.0f,-1.0f,-1.0f);          // Верх лево

        

glVertex3f(-1.0f, 1.0f,-1.0f);          // Низ лево

        

glVertex3f( 1.0f, 1.0f,-1.0f);          // Низ право

Сейчас нам осталось нарисовать только два квадрата. Как вы уже успели заметить одна ось всегда имеет тоже самое значение у всех точек квадрата. В этом случае ось X всегда равна минус один. Поскольку мы рисуем левую грань.




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



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