iphone - 在 iOS 上使用多重采样抗锯齿会对性能产生什么影响?

标签 iphone graphics opengl-es ios4 antialiasing

我一直在尝试使用多重采样在 iOS 4 上的 iPhone 和 iPad 上进行全场景抗锯齿。一般机制使用 Apple 的 APPLE_framebuffer_multisample 扩展 ( http://www.khronos.org/registry/gles/extensions/APPLE/APPLE_framebuffer_multisample.txt ),并在该问题的答案中进行了描述: How do you activate multisampling in OpenGL ES on the iPhone?并由 Apple 在其 OpenGL ES 编程指南中记录。

它的工作原理与描述的一样,但是当我将样本数设置为 2 时,我的测试应用程序的绘图性能下降了大约 50%。我主要在 iPhone 4 上进行测试,使用不支持视网膜的应用程序。我正在使用 Apple 在其文档中提供的其他性能建议(使用 glDiscardFramebufferEXT 丢弃附加到多重采样帧缓冲区的渲染缓冲区,使用 glClear 在帧开始时清除整个帧缓冲区等)。

以这种方式启用多重采样的性能开销对我来说似乎出奇地大。你们是否看到了类似的结果,或者这是否表明我做错了什么?

最佳答案

您提到您正在 iPhone 4 上运行此程序。您的 OpenGL ES 层是否以完整的 2X Retina 显示比例因子进行渲染?也就是说,您是否将 OpenGL ES 托管层上的 contentScaleFactor 设置为 [[UIScreen mainScreen] scale]?如果是这样,那么您一开始就推送了大量像素。

在应用多重采样抗锯齿之前,您的填充率是否受到限制?要进行检查,请针对正在运行的应用程序使用 Instruments 中的 OpenGL ES 工具,并启用 Tiler Utilization 和 Renderer Utilization 统计信息。如果您的应用程序在未启用 MSAA 的情况下显示较高的渲染器利用率,则填充率一开始就会受到限制。由于这个瓶颈,在此基础上添加 MSAA 可能会显着降低帧速率。

在我拥有的一个受几何限制而不是填充率限制的应用程序中,在 iPhone 4 上使用 4X MSAA 时,我没有看到那么大的减速。我猜测您的应用程序中的瓶颈就是将像素推到屏幕上。

关于iphone - 在 iOS 上使用多重采样抗锯齿会对性能产生什么影响?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4716983/

相关文章:

iphone - 应用程序在模拟器上崩溃。适用于 iPhone 设备

Java Graphics如何在keyPressed中绘制图像

c++ - 将 glutTimerFunc 与 glutMouseFunc 一起使用

ios - 在 iOS5 的 xcode 4 中将 openGL ES 1.1 设置为默认值

android - 缩放、旋转、平移 w。 openGl ES 2.0 中的矩阵

iphone - 使用 VLC,是否可以在同一台计算机上对 30 到 40 个基于 IP 的网络摄像头进行编码?

iphone - 使用 AppDelegate 进行数据操作和处理是一个好习惯吗?

iphone - uitableview 在滚动到顶部时自动更新

java - 如何优化我的 JOGL 应用程序?

ios - 如何更改渲染对象在屏幕上的放置位置,OpenGL Es 2.0 iOS