glColor3d (1.0. 0.0. 0.0); //вершины разного цвета glVertex3d(0.8. 0.2, 0.0);

glColor3d (0.0. 0.0. 1.0): //но треугольник будет синим. glVertex3d(0.5. 1.0.0.0);

glColor3d ( 0.0. 1.0. 0.0); //Второй треугольник будет зеленым.

glVertex4d(-0.1. 0.3. -0.8. 1.0);
glVertex4d( 0.95. 0.7. 1.0. 1.0);
glVertex4d( -0.1. 0.7. -0.8. 1.0);
glEndO;

//Затем выводятся треугольники с теми же координатами, но изменены область

//просмотра и порядок передачи вершин первого треугольника. Изменить область

//просмотра можно только до следующего начала вывода примитивов

gl Viewport(-R.right/2.0.R.right.R.bottom/3);

glBegin(GL_TRIANGLES); //Те же треугольники будут

glColor3d (0.0. 1.0. 0.0); //перемещены и масштабированы

glVertex3d(0.25.0.0. 0.0); //изменением области просмотра.

glColor3d (0.0. 0.0. 1.0);
glVertex3d(0.5. 1.0. 0.0);

gl Color3d (1.0. 0.0. 0.0): //Первый треугольник будет не синим, а красным. glVertex3d(0.8.. 0.2. 0.0);

gl Color3d ( 0.0. 1.0. 0.0); //У всех следующих вершин будет зеленый цвет. glVertex4d( 9.5. 7. 10.0. 10.0); glVertex4d(-l. 3. -8.0. 10.0): glVertex4d( -1. 7. -8.0. 10.0):

glEnd(): продолжение J

Инициализация библиотек и вывод примитивов

Листинг 22.4 (продолжение)

glFinishO;

//Выше были переданы команды на рисование в графическую систему. Функция //glFinishO не возвратит управления до завершения рисования. Ее можно //удалить.

SwapBuffers(wglGetCurrentDCO); //Переключение страниц. }

Вызывать такую функцию можно по сообщению WM_PAINT, по сообщению таймера или при обработке команды того или иного пункта меню.

Вид формируемого в окне изображения показан на рис. 22.1.

Следует обратить внимание на то, что координаты на плоскости х=X/ W, у = У/ W первой и второй пары треугольников одинаковы. Изображение смещается и масштабируется из-за разных параметров области просмотра, задаваемых функцией Viewport(). Также следует отметить, что при выводе второй пары треугольников изменен порядок передачи вершин в графическую систему. В результате первая пара треугольников обращена к наблюдателю лицевой стороной, а вторая - тыльной. На экране видны обе пары только потому, что по умолчанию не включен режим отбрасывания тыльных граней. Изменяется также цвет первого треугольника.


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