1

我使用 GLES 2.0 for iOS 制作了一款 iOS 游戏。当我在实际设备上运行它时,它与我的高分辨率图像完美配合,但是当我在模拟器中运行它时,我得到的图像非常不稳定:

断断续续

在开发过程中我并没有真正关心,但是现在我要提交到 iTunes Store,我必须上传我没有的 3.5 英寸和 4 英寸 iPhone 的屏幕截图(我一直在开发iPad)。所以我决定使用模拟器,但老实说我不能使用这些截图。

没有购买 3.5 英寸和 4 英寸设备只是为了截图,我该如何解决这个问题并获得高质量的截图?

注意:原始图像质量很高。即使在视网膜 iPad 上,它们看起来一点也不波涛汹涌。

4

2 回答 2

2

这是预期/已知的行为。模拟器就是这样:模拟器而不是模拟器。模拟器中的 OpenGL 性能和图像质量通常与实际设备上的大不相同(而且通常更差)。确定 OpenGL 代码在设备上的外观和性能的唯一方法是在设备上对其进行测试,而在您的情况下获得好的屏幕截图的唯一方法是寻找这样的设备并使用它来进行测试截屏。否则,就模拟器而言,所见即所得。没有神奇的开关说“让它看起来像在设备上一样”。

于 2013-02-07T01:06:01.727 回答
1

事实证明,模拟器一直都是正确的。

我在朋友的 iPhone 5 上试用了最终版本,乍一看还不错,但仔细一看,它就像上面的屏幕截图一样。我可以通过让我的朋友截图来验证这一点,实际上看起来就像我在那里发布的截图一样。

它在 iPad 上看起来不错的原因是因为在 iPad 上,游戏实际上是在放大纹理,即使只是轻微的,而且放大算法比缩小算法产生更好的结果。(我可以发誓它在 480x320 2.3 机器人上看起来不错)

所以无论如何,我开始通过在加载时创建 mipmap 来解决问题

GL.GenerateMipmap(TextureTarget.Texture2D);

然后设置缩小以使用这些 mipmap

GL.TexParameter(TextureTarget.Texture2D, TextureParameterName.TextureMinFilter, (int)All.LinearMipmapLinear);

现在波涛汹涌的缩小已经消失了,取而代之的是一个肮脏的缩小。奥兹

实际上这样做表明我错误地使用了对视网膜显示器的支持。该应用程序以 iPhone 3GS 的分辨率运行。

所以我只需要确保创建的帧缓冲区大小正确,问题就消失了。然而,在使用视网膜显示器时,我再次放大了我的纹理,所以我只在非视网膜设备上创建了 mipmap(这会消耗更多的 VRAM 并使游戏加载速度变慢)。

于 2013-02-08T18:17:20.987 回答