Opengl纹理和字节序

Mar*_*ett 2 opengl image endianness glteximage2d

我正在使用带有GL_LUMINANCE和GL_UNSIGNED_BYTE的glTexSubImage2D来直接显示来自摄像机的原始灰度数据 - 而不是必须手动将其重新打包成RGB位图.

我想以更高分辨率模式运行相机,具有12或14位/像素.

我只需通过设置即可完成此操作,GL_SHORT但相机会以big endian返回数据,而我的openGL实现似乎正在以错误的方式绘制(在x86上).

有没有一种简单的方法告诉openGL纹理是'错误'的方式?我想避免手动字节换取数据只是为了显示,因为所有其他函数都需要大端数据.

luk*_*uke 6

查看glPixelStore*功能组.

你可能需要玩GL_UNPACK_SWAP_BYTES或者GL_UNPACK_LSB_FIRST仔细检查你是否使用了正确的GL_UNPACK_ALIGNMENT.默认情况下,unpack对齐是4,但是如果你每个像素使用一个字节(lum/ub),你需要将它设置为1.我最近遇到了这个问题,我花了更长时间才弄明白比我小心承认:)