OpenGL纹理以非常低的质量渲染

由于Core Graphics的性能瓶颈,我试图在iOS上使用OpenGL EL来绘制2D场景,但OpenGL正在以令人难以置信的低分辨率渲染我的图像。

这里是我使用的图像的一部分(在Xcode中):

在这里输入图像描述

和OpenGL的纹理渲染(在模拟器中):

在这里输入图像描述

我使用Apple的Texture2D从PNG创建纹理,然后将其绘制到屏幕上。 正如Apress的“Beginning iPhone Development”一书中推荐的,我正在使用Ortho投影来观察场景。 该图像恰好是屏幕的确切大小,并按此方式绘制(我没有在上面的屏幕截图中看到完整图像)。 我没有在模型上使用任何变换,因此绘制图像应该不会导致子像素渲染。

我很高兴发布代码示例,但认为我会在没有简单解释的情况下开始。

为什么使用这种方法会造成图像质量下降? 我错过了我的环境设置中的一个步骤吗? 我简要阅读了关于纹理效果更好的两个幂的大小 - 在iPhone上处理这个问题? 我还阅读了多重抽样,但我不确定这是否相关。

编辑:更新屏幕截图以减轻混淆。


我仍然不完全明白为什么我的代码存在质量问题,但我设法解决了这个问题。 我最初使用的是由Apress的书“Beginning iPhone 4 Development”制作人提供的OpenGLES2DView类,我怀疑这个代码中的问题存在。 然后我遇到了这个教程,其中建议我使用GLKit。 GLKit允许我做我想要的东西!

一些经验教训:

  • 在上面链接的教程中使用GLKit和sprites类,我的纹理不需要是两个幂。 GLKit似乎处理这个罚款。

  • 多重采样不是解决问题的办法。 对于GLKit,在渲染2D图形时,使用多重抽样看起来没有任何效果(在我眼中)。

  • 谢谢所有试图帮助的人。

    链接地址: http://www.djcxy.com/p/5817.html

    上一篇: OpenGL texture renders with very low quality

    下一篇: OpenGL texture blending problems