Перенос операций с пикселем
При переносе кода, включающего операции с пиксельным вводом, учитывайте следующие моменты:
- Операции логического пикселя не применяются к буферам цвета 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);