由于Core Graphics中的性能瓶颈,我试图在iOS上使用OpenGL EL来绘制2D场景,但OpenGL以令人难以置信的低分辨率渲染我的图像。OpenGL纹理以非常低的质量呈现
下面是我使用(在Xcode)图像的一部分:
和OpenGL的纹理渲染(在模拟器):
我使用的是苹果公司的Texture2D从PNG创建纹理,然后将其绘制到屏幕上。正如Apress的“Beginning iPhone Development”一书中推荐的,我正在使用Ortho投影来观察场景。该图像恰好是屏幕的确切大小,并按此方式绘制(我没有在上面的屏幕截图中看到完整图像)。我没有在模型上使用任何变换,因此绘制图像应该不会导致子像素渲染。
我很高兴发布代码示例,但认为我会在没有简单解释的情况下开始。
为什么使用这种方法图像会失去如此多的质量?我错过了我的环境设置中的一个步骤吗?我简要阅读了关于纹理效果更好的两个幂的大小 - 在iPhone上处理这个问题?我还阅读了多重抽样,但我不确定这是否相关。
编辑:更新屏幕截图以减轻混淆。
你使用mip-mapping吗?编辑:看起来像纹理刚被切割,所以这可能意味着你正在使用的纹理坐标不能使整个纹理呈现在该四边形上,所以它看起来像在你的图像中“放大”。是一个真正的截图或只是手动?它看起来很奇怪......不能想到这样的渲染是可能的。也许尝试一个明确的256x256纹理并显示结果? – Rookie
我担心我的截图会令人困惑。他们只是手动截图。我的图像是在屏幕上绘制的,它是图像的确切尺寸,所以是的,整个纹理应该被渲染。 –
什么是图像的宽度/高度?无论如何,你总是应该使用两种纹理的力量。你可以从显示你正在使用的纹理坐标和顶点坐标开始。同时显示整个纹理,以防万一,并使用一些清晰的纹理(而不是砂纹理等难以看到边缘)。 – Rookie