我对 OpenGL 有点陌生,尽管我很确定我的问题在于所使用的像素格式,或者我的纹理是如何生成的......
我正在使用 16 位 RGB5_A1 像素格式在平面 2D 四边形上绘制纹理,尽管在此阶段我没有使用任何 alpha。我遇到的问题是每对水平像素值都已交换。
也就是说......如果像素位置应按此顺序排列(假设 8x2 图像)
0 1 2 3
4 5 6 7
它们被绘制为
1 0 3 2
5 4 7 6
或者,从这张图片(下图)可以更清楚地看到。左边是我得到的……右边是我应该得到的。
.
问题是......我是怎么结束的?像素格式有问题吗?不太可能,因为颜色看起来都是正确的,如果归结为字节序,我会期待各种讨厌的东西。建议非常感谢。
更新:原来问题出在我的源渲染器中。有趣的是,我通过使用 32 位纹理完全避免了这个问题(此时还没有尝试过 24 位)。