2

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

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

在此处输入图像描述

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

在此处输入图像描述

我正在使用 Apple 的 Texture2D 从 PNG 创建纹理,然后将其绘制到屏幕上。按照 Apress 的“开始 iPhone 开发”一书中的建议,我正在使用 Ortho 投影直视场景。该图像恰好是屏幕的确切尺寸并且是这样绘制的(我没有在上面的屏幕截图中拍摄完整图像)。我没有在模型上使用任何变换,所以绘制图像应该不会导致子像素渲染。

我很高兴发布代码示例,但如果没有简单的解释,我想我会开始。

为什么使用这种方法图像会损失这么多质量?我在我的环境设置中错过了一步吗?我简要阅读了纹理在 2 的幂次方时表现更好的信息——这对 iPhone 有影响吗?我还阅读了有关多重采样的信息,但我不确定这是否相关。

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

4

1 回答 1

0

我仍然不完全理解为什么我的代码会出现质量问题,但我设法解决了这个问题。我最初使用的是 Apress 书籍“开始 iPhone 4 开发”的制造商提供的 OpenGLES2DView 类,我怀疑问题出在这段代码的某个地方。然后我遇到了这个教程,它建议我改用 GLKit。GLKit 让我可以做我想做的事!

一些经验教训:

  1. 使用上面链接的教程中的 GLKit 和 sprites 类,我的纹理不需要是 2 的幂。GLKit 似乎处理得很好。

  2. 多重采样不是解决问题的方法。使用 GLKit,在渲染 2D 图形时,使用多重采样似乎没有效果(在我看来)。

感谢所有试图提供帮助的人。

于 2012-06-14T10:04:29.163 回答