我正在使用工作中的 DDS 加载程序加载我的纹理,但似乎存在倾斜绘制的 RGBA4 格式 ( GL_UNSIGNED_SHORT_4_4_4_4 ) 的问题。 我在背景(可以工作但使用 RGB565)和其他纹理上使用相同的着色器。
截图如下:
如您所见,纹理是倾斜的,它应该是一个后退按钮。 纹理加载也是正确的,它加载了它应该加载的所有字节(已调试)并且 OpenGL 加载看起来像这样:
GL.TexImage2D(All.Texture2D, 0, (int)All.Rgba, Width, Height, 0, (int)All.Rgba, All.UnsignedShort4444, image.GetData());
图像数据:
- 大小:16402 字节
- 宽度:139px
- 高度:59px
编辑
纹理是 npot,但这应该由 OpenGL ES 2.0 支持。
编辑二
我这里似乎有两个问题,第一个是 channel 不正确,第二个是纹理倾斜。倾斜可能是 NPOT 纹理和苹果的问题,因为我测试了另一张尺寸为 128x128 的图像,它没有倾斜,但交换了一些 channel 。
最佳答案
您是否已通过调用 glPixelStore 设置像素对齐?
默认情况下,每行应对齐到 4 字节边界。
对齐参数(GL_PACK_ALIGNMENT)不依赖于纹理内部格式,而是依赖于源数据。 在调用 TexImage 之前调用 glPixelStore。将参数设置为1,然后研究像素传输参数!
关于ios - OpenGL ES 2.0/iOS : Skewed drawing of RGBA4 texture,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8518861/