픽셀 포팅 작업
픽셀 작업을 포함하는 코드를 포팅할 때 다음 사항에 유의하세요.
- 논리 픽셀 작업은 RGBA 색 버퍼에 적용되지 않습니다. 자세한 내용은 glLogicOp을 참조하세요.
- 일반적으로 IRIS GL은 픽셀에 ABGR 형식을 사용하는 반면 OpenGL은 RGBA를 사용합니다. glPixelStore를 사용하여 형식을 변경할 수 있습니다.
- lrectwrite 함수를 포팅할 때 lrectwrite가 쓰이는 위치를 주의해야 합니다(예: 깊이 버퍼에 쓸 수 있음).
OpenGL은 픽셀 작업에서 몇 가지 추가 유연성을 제공합니다. 다음 표에서는 픽셀 작업에 대한 IRIS GL 함수와 해당하는 OpenGL 함수를 나열합니다.
IRIS GL 함수 | OpenGL 함수 | 의미 |
---|---|---|
lrectread, rectread,readRGB |
glReadPixels | 프레임 버퍼에서 픽셀 블록을 읽습니다. |
lrectwrite, rectwrite | glDrawPixels | 프레임 버퍼에 픽셀 블록을 씁니다. |
rectcopy | glCopyPixels | 프레임 버퍼의 픽셀을 복사합니다. |
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);