ФУНКЦИЯ ПИКСЕЛЬНОГО ОТОБРАЖЕНИЯ OpenGL

Узор, который определяется как массив цветовых значений, накладывается на блок пикселей в буфере кадра с помощью функции

glDrawPixels (width, height, dataFormat, dataType, pixMap); Как и выше, параметры width и height показывают соответственно количество столбцов и строк массива pixMap. Параметр dataFormat - это константа OpenGL, которая показывает, каким образом задаются значения элементов массива. Например, с помощью константы GL_BLUE можно задать синий цвет для всех пикселей или определить три цветовых компонента в таком порядке: синий, зеленый, красный, воспользовавшись константой GL_BGR. Возможен целый ряд других спецификаций цвета, но более подробно выбор цвета будет рассматриваться в следующей главе. Такие константы OpenGL, как GL_BYTE, GL_INT или GL_FLOAT, присваиваются в качестве значения параметра dataType и обозначают тип данных кодов цвета массива. Левый нижний угол этого массива цветов отображается в текущее растровое положение, которое задается с помощью функции glRasterPos. В качестве примера приводится следующая команда, строящая пиксельное отображение, которое задается как массив кодов цвета в массиве RGB размером 128 на 128.

glDrawPixels (128, 128, GL_RGB, GL_UNSIGNED_BYTE, colorShape); Поскольку OpenGL позволяет использовать несколько буферов, массив кодов цвета можно вставить в отдельный буфер, указав этот буфер в качестве цели процедуры glDrawPixels. В одних буферах записываются коды цвета значения, а в других - иная информация о пикселях. В буфере глубины, например, записываются расстояния от точки наблюдения до объекта (глубины), а в буфере шаблонов хранятся узоры, образованные границами объектов сцены. Для выбора одного из этих двух буферов еледует присвоить параметру dataFormat процедуры glDrawPixels значения либо GL_DEPTH_COMPONENT, либо GL_STENCIL_INDEX. Для этих буферов пиксельный массив пришлось бы задавать либо с помощью значений глубины, либо информации о шаблонах. Более подробно эти буферы рассматриваются в последующих главах.

В пакете OpenGL есть четыре буфера цвета, которые можно использовать для обновления экрана. Два буфера цвета образуют лево-правую пару сцены при создании стереоскопических изображений. Для каждого стереоскопического буфера есть передне-задняя пара, используемая в анимации с двойным буфером. В отдельных версиях OpenGL может не поддерживаться либо стереоскопическая визуализация, либо двойная буферизация, а иногда и то, и другое сразу. Если не поддерживаются ни стереоскопические эффекты, ни двойная буферизация, тогда существует только один буфер регенерации, который спроектирован как передний левый буфер цвета. Этот буфер регенерации используется по умолчанию в том случае, если двойная буферизация невозможна или ее нет вообще. Если же двойная буферизация возможна, тогда по умолчанию используется либо задний левый, либо задний правый буфер, в зависимости от текущего состояния стереоскопической проекции. Кроме того, поддерживается целый ряд вспомогательных буферов цвета, которые можно использовать в любых целях, не связанных с регенерацией, например, при сохранении рисунка, который позже будет копироваться в буфер регенерации для создания изображения.


⇐ вернуться назад | | далее ⇒