2011-03-02 8 views
2

GLTexSubImage2D를 GL_LUMINANCE 및 GL_UNSIGNED_BYTE와 함께 사용하면 RGB 비트 맵에 수동으로 재 포장하지 않고 카메라의 원시 그레이 스케일 데이터를 직접 표시 할 수 있습니다.OpenGL 텍스처 및 endianness

12 또는 14 비트/픽셀의 고해상도 모드로 카메라를 실행하고 싶습니다.

간단하게 GL_SHORT을 설정하면이 작업을 수행 할 수 있지만 카메라가 빅 엔디안으로 데이터를 반환하고 내 OpenGL 구현이 잘못된 방식으로 (x86에서) 그려지는 것처럼 보입니다.

텍스처가 '잘못된'방법이라는 사실을 OpenGL에 알리는 간단한 방법이 있습니까? 모든 다른 함수가 빅 엔디안 데이터를 예상하기 때문에 데이터를 표시하기 위해 수동으로 바이트 바꾼 데이터를 사용하지 않으려합니다.

답변

6

glPixelStore* 기능 그룹을 확인하십시오.

GL_UNPACK_SWAP_BYTES 또는 GL_UNPACK_LSB_FIRST으로 재생해야 할 수도 있지만 올바른 GL_UNPACK_ALIGNMENT을 사용하고 있는지 다시 한 번 확인하십시오. 기본적으로 풀기 정렬은 4이지만 픽셀 당 1 바이트 (lum/ub)를 사용하는 경우 1로 설정하는 것이 좋습니다. 최근에이 문제가 발생하여 알아 내기까지 더 오래 걸렸습니다. 내가 인정하고 싶다고 생각하는 것보다 :

+0

이 문제를 처음 접했을 때 나는 그것을 해결하기 위해 짧은 GLSL 프로그램을 작성했다. 나는 결국 GL_UNPACK_ALIGNMENT을 발견했을 때 아주 어리 석다. – Tommy

+0

@ Tommy 또한 opengl.org의 일반적인 함정 목록 # 8에도 해당됩니다. http://www.opengl.org/resources/features/KilgardTechniques/oglpitfall/ 바보 우리. – luke

+1

우수 -'glPixelStorei (GL_UNPACK_SWAP_BYTES, 1);입니다. 오픈 GL에 대한 좋은 점은 누군가가 이미 그것을 해결했기 때문입니다. –