交换每个水平对绘制的OpenGL像素

时间:2011-01-12 07:11:55

标签: opengl distortion pixelformat

我对OpenGL有点新鲜,虽然我很确定我的问题在于使用的像素格式,或者我的纹理是如何生成的......

我正在使用16位RGB5_A1像素格式在平面2D四边形上绘制纹理,尽管在此阶段我没有使用任何alpha。我遇到的问题是每对水平像素值已经交换

即...如果像素位置应按此顺序排列(假设为8x2图像)

0 1 2 3 
4 5 6 7

它们被绘制为

1 0 3 2
5 4 7 6

或者,从这张图片中可以更清楚地看到(下图)。 左边是我得到的......正确的是我应该得到的。

问题是......我最终是怎么做到的?像素格式有问题吗?不太可能因为颜色看起来都是正确的,如果它落到了endian-ness,我会期待各种各样的讨厌。建议非常感谢。

更新:原来我的源渲染器出现了问题。有趣的是,我通过使用32位纹理完全避免了这个问题(此时尚未尝试过24位)。

1 个答案:

答案 0 :(得分:-1)

这可能是无关的,您找到了一种解决方法,但它可能与OpenGL解包对齐有关。你试过以下电话吗?指示将每个图像行对齐到1个字节(默认为4)。

glPixelStorei(GL_UNPACK_ALIGNMENT, 1);