glBegin(GL_P0LYG0N) ;
glVertex3f(0.0, 0.0, 0.0);
glVertex3f(0.0, 1.0, 0.0);
glVertex3f(0.0, 0.0, 1.0); glEnd( );
Обращаю ваше внимание на то, что, добавив в список дополнительные вершины, можно описать произвольный многоугольник. Изменив параметр типа GL_POLYGON, можно на тех же самых вершинах построить иной примитив. Например, примитив типа GL_LINE_STRIP соответствует двум связанным отрезкам прямых, проходящих через те же точки, а примитив типа GL_POINTS сформирует изображения трех точек.
Некоторые API позволяют пользователю работать напрямую с буфером кадра- считывать и записывать коды засветки отдельных пикселей. Иногда в число примитивов включаются отрезки кривых и участки поверхностей, хотя чаще такие объекты приходится аппроксимировать более простыми примитивами, причем эта задача возлагается на саму прикладную программу. В OpenGL поддерживается доступ к отдельным пикселям буфера кадра, а также создание криволинейных отрезков и участков поверхностей.
Описать наблюдателя или камеру можно разными способами. Доступные на сегодняшний день графические API отличаются как гибкостью, которую они обеспечивают при выборе параметров камеры, так и количеством имеющихся в распоряжении пользователя методов ее описания. Для камеры, представленной на рис. 1.23, существует четыре типа параметров, однозначно определяющих характеристики создаваемого ею изображения.
1. Положение камеры задается положением центра проекции (ЦП).
2. Ориентация. Расположив центр проекции в определенной точке пространства, можно совместить с ним начало локальной системы координат камеры и вращать ее относительно осей этой системы координат, изменяя таким образом ориентацию объектива.
3. Фокусное расстояние объектива камеры фактически определяет размер изображения на плоскости проекции.
/. 7. Интерфейс программиста
4. Плоскость светоприемника. Задняя стенка камеры имеет конечные размеры в высоту и ширину. Некоторые API позволяют настраивать ориентацию плоскости светоприемника независимо от ориентации объектива.