2016-06-24 4 views
1

glBindImageTexture에는 24 비트 RGB (3 비트 채널) 이미지에 대해 image format이없는 것 같습니다. 텍스처의 내부 형식이 GL_RGB8 (24 비트 RGB 이미지)입니다. 불행히도 런타임에 이미지 단위에 바인딩하는 텍스처 유형을 쉽게 변경할 수 없습니다. imageLoad와 다른 이미지 형식을 사용할 수 있으며 여전히 24 비트 RGB 데이터에 액세스 할 수 있습니까?OpenGL 이미지로드/저장 24 비트 RGB 이미지

+0

"불행히도 런타임시 이미지 단위에 바인딩하는 텍스처의 유형을 쉽게 변경할 수는 없습니다. 그것은 * 당신의 질감 *; 당신이 그것을 만들었습니다. 형식을 어떻게 관리 할 수 ​​있습니까? –

+0

텍스처의 형식을 변경할 수는 있지만 런타임에 실제로 픽셀 데이터를 변경할 수는 없습니다. 다시 말해, 3 개의 연속 8 비트 필드로 내부적으로 구성된 특정 크기의 바이트 배열을 얻습니다. GL_RGBA8UI – AnimatedRNG

+4

을 사용할 수 있도록 4 개의 연속 8 비트 필드가있는 새 배열을 만들 수 없습니다. 그래서? OpenGL은 RGB 데이터를 RGBA8 텍스처로 업로드 할 수 있습니다. 그리고 이것이 더 느릴 것이라고 생각한다면, OpenGL은 현재 당신의 현재 3 채널 텍스처로 이미 * 수행 중입니다. –

답변

3

아니요, 이미지로드/저장과 함께 GL_RGB8을 사용할 수 없습니다. 구현은 GL_RGBA8으로 대체하여 GL_RGB8을 지원할 수 있으므로이 작업이 수행됩니다. 그러나 3 가지 형식을 직접 지원할 수 있다면 그렇게 할 수 없습니다. 따라서 OpenGL은 사양으로서 실제로 구현시 픽셀 당 24 비트를 처리 할 수 ​​있는지 또는 32 비트 텍스처로 구현하는 것으로 가장하는 지 여부를 알지 못합니다.

그래서 OpenGL을 사용하면 이 명시 적으로 대체 작업을 수행합니다.

관련 문제