ios - OpenGL ES 2.0/iOS : Skewed drawing of RGBA4 texture

标签 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 字节
  • 宽度: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/

相关文章:

ios - 使用 URL 在 cell.imageView.image 中显示图像

html - 使用 AFNetworking 上传图像 iOS 时匹配您的特定 HTML 表单

ios - 模块文件是由较新版本的编译器创建的

xamarin.ios - IOS 9中的AVPlayer TimeControlstatus应用程序崩溃

iOS 11 : UIBarButtonItem inside UIToolbar goes out of its place

android - 如何快速实现大核框滤镜着色器?

objective-c - OpenGL-ES:如何使用不同的着色器绘制对象两次

android - OpenGL ES 2.0 的纵向和横向模式

.net - 在 Monotouch 中,是否可以将通用列表保存到 NSUserDefaults?

ios - 具有十六进制值的 NavigationBar 色调颜色在 iOS 中效果不佳