Цветной треугольник30.01.2000 — 11.03.2000 Определения
Система координатРазличие OpenGL и Direct3DСистема координат в OpenGL — правосторонняя. Я привычней к левосторонней, как в Direct3D, ;-) поэтому придется написать немного строк для преобразования... но не сейчас. Сейчас лучше заняться вещами попроще.
Область просмотраКак уже говорилось, в OpenGL используется правосторонняя система координат. По умолчанию, в OpenGL все координаты интерпретируются как находящиеся в пространстве просмотра. Так же, по умолчанию, область просмотра ограничена по координате Z: от -1 до 1. Такое ограничение по Z кажется мне немного неестественным... далее я изменю это ограничение, а пока использую это. Также, по умолчанию, ширина и высота экрана для области просмотра ограничены от -1 до 1. То есть, если задать точку (1, 1, 0), то она будет как раз на правом-верхнем углу экрана. Если задать точку (-1, -1, 0), то она будет лежать в левом-нижнем углу. РисованиеЧтобы нарисовать треугольник, нужно задать его вершины. Эти вершины должны находиться в области просмотра — так, чтобы их было видно. Пусть это будут... ну, пусть (0.5f, 0.5f, 0), (-0.7f, 0, 0) и (0, -0.7f, 0). Чтобы начать рисование треугольников в OpenGL, нужно вызвать функцию glBegin(GL_TRIANGLES). Параметр, который туда передается, говорит о том, что программа хочет вывести список треугольников. Заканчиваться такой вывод должен вызовом функции glEnd(). Координаты вершин передаются вызовами функции glVertex3f(x, y, z).
Вот такая функция нарисует на окне белый треугольник... Почему белый? Потому что по умолчанию в OpenGL используется белый цвет. В OpenGL есть возможность задать для каждой вершины свой цвет. Когда OpenGL будет рисовать треугольник, цвета вершин "растекутся" по его поверхности. Цвет задается в блоке glBegin/glEnd функцией glColor3f(Red, Green, Blue). Параметры — это интенсивности цветов от 0 до 1. 0 соответствует отсутствию цвета (полной темноте), 1 соответствует максимальной интенсивности.
ПримерА вот и первый пример, на котором можно посмотреть результат работы трехмерной части OpenGL. В нем также содержится подправленный главный цикл программы. Следующая страница: Трансформации (c) 2000 Константин Михеев — проект "Elfish Engine" |