Перенос операций с пикселем

При переносе кода, включающего пиксельные операции, учитывайте следующие моменты:

  • Операции логических пикселей не применяются к буферам цвета RGBA. Дополнительные сведения см. в разделе glLogicOp.
  • Как правило, IRIS GL использует формат ABGR для пикселей, а OpenGL — RGBA. Формат можно изменить с помощью glPixelStore.
  • При переносе функций lrectwrite следует учитывать, где выполняется запись lrectwrite (например, это может быть запись в буфер глубины).

OpenGL обеспечивает дополнительную гибкость в пиксельных операциях. В следующей таблице перечислены функции IRIS GL для операций с пиксельами и их эквивалентные функции OpenGL.

Функция IRIS GL Функция OpenGL Значение
lrectread, rectread, readRGB
glReadPixels Считывает блок пикселей из framebuffer.
lrectwrite, rectwrite glDrawPixels Записывает блок пикселей в framebuffer.
rectcopy glCopyPixels Копирует пиксели в framebuffer.
rectzoom glPixelZoom Задает коэффициенты увеличения пикселей для glDrawPixels и glCopyPixels.
cmov glRasterPos Задает позицию растра для операций с пикселями.
readsource glReadBuffer Выбирает источник буфера цвета для пикселей.
pixmode glPixelStore, glPixelTransfer Задает режимы хранения пикселей. Настройка режимов передачи пикселей.
logicop glLogicOp Задает логическую операцию для операций записи пикселей.
glEnable ( GL_LOGIC_OP ) Включает операции логики пикселей.

Полный список возможных логических операций см. в разделе glLogicOp.

В этом примере кода IRIS GL показана типичная запись пикселей:

unsigned long *packedRaster; 
.. 
packedRaster[k] = 0x00000000; 
.. 
lrectwrite(0, 0, xSize, ySize, packedRaster);

Приведенный выше код выглядит следующим образом при переводе в OpenGL:

glRasterPos2i( 0, 0); 
glDrawPixels( xSize + 1, ySize + 1, GL_RGBA, GL_UNSIGNED_BYTE, packedRaster);