glCopyPixels (xmin, ymin, width, height, pixelValues); Нижний левый угол этого блока находится в точке экрана с координатами (xmin, ymin), а параметрам width и height присваиваются положительные целочисленные значения, обозначающие соответственно количество столбцов и строк, которые следует скопировать. Параметру pixelValues присваивается значение GL_COLOR, GL_DEPTH или GL_STENCIL, указывающее тип информации, которую мы хотим скопировать: коды цвета, значения глубины или значения шаблонов. Таким образом, блок значений пикселей копируется из буфера-источника в буфер назначения, при этом его нижний левый угол переносится в текущее растровое положение. Буфер-источник выбирается с помощью команды glReadBuffer, а буфер назначения задается командой glDrawBuf fer. Как копируемая, так и целевая области должны полностью лежать в области координат экрана.

Для достижения различных эффектов при помещении блока пикселей в буфер с помощью команд glDrawPixels или glCopyPixels можно объединять поступающие значения со старыми значениями буфера. Например, можно выполнить такие логические операции, как И, ИЛИ и исключающее ИЛИ, объединяющие два блока значений пикселей. В пакете OpenGL для выбора побитовой логической операции для объединения поступающих кодов цвета со значениями пикселей назначения используются такие функции.

glEnable (GL_COLOR_LOGIC_OP);

glLogicOp (logicOp); Параметру logicOp можно присвоить значение из набора символьных констант, в том числе GL_AND, GL_OR или GL_XOR. Кроме того, или поступающие значения битов, или значения битов назначения могут задаваться в инвертированной форме (значения 0 и 1 меняются местами). Константа GL_COPY_INVERTED используется для того, чтобы превратить обращенные поступающие значения битов в правильные, а затем заменить значения битов назначения инвертированными значениями поступающих битов. С помощью функции GL_INVERT можно также просто инвертировать значения битов назначения без последующей замены их поступающими значениями. Различные операции инверсии также можно объединять с логическими операциями И, ИЛИ и исключающим ИЛИ. К числу других возможностей можно отнести очистку всех битов назначения до значения О (GL_CLEAR) или присвоение всем битам назначения значения 1 (GL_SET). По умолчанию значением параметра процедуры glLogicOp является GL_COPY, при котором значения битов назначения просто заменяются поступающими значениями.

Существуют и другие процедуры OpenGL для выполнения различных действий с пиксельными массивами, которые обрабатываются с помощью функций glDrawPixels, glReadPixels и glCopyPixels. Например, процедуры glPixel-Transfer и glPixelMap можно использовать для смещения или выравнивания кодов цвета, значений глубины или значений шаблонов. Мы еще вернемся к операциям с пикселями в последующих главах при исследовании других вопросов компьютерной графики и графических пакетов.

ПРИМИТИВЫ символов

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


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