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

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

  • Операции логического пикселя не применяются к буферам цвета 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 Записывает блок пикселей в кадрbuffer.
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);