Mar*_*ett 2 opengl image endianness glteximage2d
我正在使用带有GL_LUMINANCE和GL_UNSIGNED_BYTE的glTexSubImage2D来直接显示来自摄像机的原始灰度数据 - 而不是必须手动将其重新打包成RGB位图.
我想以更高分辨率模式运行相机,具有12或14位/像素.
我只需通过设置即可完成此操作,GL_SHORT
但相机会以big endian返回数据,而我的openGL实现似乎正在以错误的方式绘制(在x86上).
有没有一种简单的方法告诉openGL纹理是'错误'的方式?我想避免手动字节换取数据只是为了显示,因为所有其他函数都需要大端数据.
查看glPixelStore*功能组.
你可能需要玩GL_UNPACK_SWAP_BYTES
或者GL_UNPACK_LSB_FIRST
仔细检查你是否使用了正确的GL_UNPACK_ALIGNMENT
.默认情况下,unpack对齐是4,但是如果你每个像素使用一个字节(lum/ub),你需要将它设置为1.我最近遇到了这个问题,我花了更长时间才弄明白比我小心承认:)