OpenGL ES 2.0 / iOS:RGBA4纹理的倾斜绘图

时间:2011-12-15 10:48:31

标签: ios opengl-es xamarin.ios opengl-es-2.0

我正在使用有效的DDS加载器加载我的纹理,但RGBA4格式(GL_UNSIGNED_SHORT_4_4_4_4)似乎存在一个问题,它被绘制为倾斜。 我在背景上使用相同的着色器(可以使用RGB565)和其他纹理。

以下是截图:

Fail Rendering

正如您所看到的那样,纹理是倾斜的,它应该是一个后退按钮。 纹理加载也是正确的,它加载它应该加载的所有字节(调试它),OpenGL加载看起来像这样:

GL.TexImage2D(All.Texture2D, 0, (int)All.Rgba, Width, Height, 0, (int)All.Rgba, All.UnsignedShort4444, image.GetData());

图片资料:

  • 大小:16402字节
  • 宽度:139像素
  • 身高:59px

修改

纹理是npot,但OpenGL ES 2.0应该支持。

编辑II

这里似乎有2个问题,第一个是通道不正确,第二个是纹理偏斜。 NPOT纹理和苹果的倾斜可能是一个问题,因为我测试了另一个大小为128x128的图像并且它没有偏斜但是它有一些频道被交换。

1 个答案:

答案 0 :(得分:3)

您是否通过调用 glPixelStore 来设置像素对齐?

默认情况下,每行应与4字节边界对齐。

对齐参数(GL_PACK_ALIGNMENT)不依赖于纹理内部格式,但它取决于源数据。 在调用 TexImage 之前调用 glPixelStore 。将参数设置为1,然后研究像素传输参数!