由于Core Graphics的性能瓶颈,我试图在iOS上使用OpenGL EL绘制2D场景,但OpenGL以极低的分辨率渲染我的图像。
这是我使用的图像的一部分(在Xcode中):
和OpenGL的纹理渲染(在模拟器中):
我使用Apple的Texture2D从PNG创建纹理,然后将其绘制到屏幕上。我正在使用Ortho投影直视场景,就像Apress'开始iPhone开发书。图像恰好是屏幕的确切大小,并且是这样绘制的(我没有在上面的屏幕截图中拍摄完整的图像)。我没有在模型上使用任何变换,因此绘制图像不会导致任何子像素渲染。
我很乐意发布代码示例,但我想在没有简单解释的情况下开始。
为什么使用这种方法图像会失去这么多质量?我在环境设置中错过了一步吗?我简要介绍一下纹理表现得更好,因为它的大小是两个 - 这在iPhone上有用吗?我还读到了关于多重采样的内容,但我不确定这是否相关。
编辑:更新了屏幕截图,以减轻混淆。
答案 0 :(得分:0)
我仍然不完全理解为什么我的代码存在质量问题,但我设法解决了这个问题。我最初使用的是Apress书籍“Beginning iPhone 4 Development”的制作者提供的OpenGLES2DView类,我怀疑这个问题在这段代码中存在。然后我遇到this tutorial,建议我改用GLKit。 GLKit让我完全按照自己的意愿行事!
吸取了一些教训:
在上面链接的教程中使用GLKit和sprite类,我的纹理不需要是2的幂。 GLKit似乎处理这个问题。
多重采样不是解决问题的方法。使用GLKit,在渲染2D图形时,使用多重采样看起来没有任何影响(我的眼睛)。
感谢所有试图提供帮助的人。