2013-02-27 6 views
2

정확히 glTexImage1D, glTexImage2D 및 glTexImage3D 함수는 내부 형식 (즉, GL_RGBA8, GL_R32UI 등)과 픽셀 형식이 필요합니까? (GL_RGBA, GL_RED_INTEGER)glTexImage * D 매개 변수 중복성?

픽셀 형식은 내부 형식에서 쉽게 해석 될 수 있습니다. 호기심이 아니라, 필자가 작성한 OpenGL 텍스처 개체 및 프레임 버퍼 개체 래퍼 (내부 형식의 픽셀 형식을 추정)가 모든 내부 형식의 픽셀 형식을 올바르게 추출 할 수 있는지 확인하기 때문에이 문제를 호기심에서 해결해야합니다.

답변

6

픽셀 형식은 사용자가 텍스처 데이터를 제공하는 형식이며, 내부 형식은 OpenGL에서 내부적으로 저장하는 형식입니다. OpenGL이 자동으로 변환을 처리합니다.

man page for glTexImage2D에는 내부 형식 레이아웃 테이블이 포함되어 있으며 각 형식이 어떻게 변환되는지 설명되어 있습니다.

예를 들어, 픽셀 형식이 GL_RG이고 내부 형식이 GL_COMPRESSED_RGBA 인 경우 GL은 전체 파란색 채널을 0으로, 알파 채널을 1로 채운 다음 내부 압축을 수행합니다.

각 요소는 빨간색/녹색 이중입니다. GL은 이것을 부동 소수점으로 변환하고 파란색으로 0을, 알파로 1을 붙임으로써 RGBA 요소로 어셈블합니다. 그런 다음 각 구성 요소에 부호가 달린 스케일 인수 GL_c_SCALE을 곱하고 부호가있는 바이어스 GL_c_BIAS에 더하고 범위 [0,1]에 고정합니다.

+0

위대한 설명! 그것은 큰 도움이됩니다. –

관련 문제