image - Opengl 纹理和字节顺序

标签 image opengl endianness glteximage2d

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

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

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

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

最佳答案

查看 glPixelStore*函数组。

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

关于image - Opengl 纹理和字节顺序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5173273/

相关文章:

javascript - 通过 JavaScript 更改图像?

php - 我应该在 Drupal 中将 ImageMagick 还是 GD2 与 ImageAPI 一起使用?

c++ - 如何在 OpenGL 中创建 "Concave/Convex Circle Illusion"

c - Endianness:这个宏在做什么?

c++ - 将数据转换为大端

javascript - 如何在 Javascript 中将所有图像缩放到特定高度?

javascript - 获取调整后的 html 图像元素的原始尺寸

c++ - 在OpenGL程序中绘制彩色四边形作为背景

c - glReadPixels 导致崩溃

c++ - C++ 中的字节翻转数据仅返回零