3

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

我想以 12 或 14 位/像素的更高分辨率模式运行相机。

我可以通过简单地设置来做到这一点,GL_SHORT但是相机以大端序返回数据,而我的 openGL 实现似乎以错误的方式绘制它(在 x86 上)。

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

4

1 回答 1

7

查看glPixelStore*函数组。

您可能需要使用GL_UNPACK_SWAP_BYTESGL_UNPACK_LSB_FIRST仔细检查您使用的是正确的GL_UNPACK_ALIGNMENT. 默认情况下,解包对齐为 4,但如果您使用每个像素一个字节(lum / ub),则需要将其设置为 1。我最近遇到了这个问题,我花了更长的时间才弄清楚比我愿意承认的:)

于 2011-03-02T20:55:16.590 回答