픽셀 포팅 작업

픽셀 작업을 포함하는 코드를 포팅할 때는 다음 사항에 유의해야 합니다.

  • 논리 픽셀 작업은 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);