0

我已经分析了我在 XCode 上运行 OpenGL Analyzer 的游戏。我在游戏中使用 Cococs2d 2.0 作为静态库,想知道以下任何建议是否会提高我的性能。我在其他论坛上读过一些帖子说我不应该担心这个,但由于我确实有一些性能问题,我想了解这些建议是否可能会改善它们。

建议:

详细视图

概述:

概述

思维:

特别是我指的是它说的建议:“推荐使用VAO和VBO

然后我也想知道为什么会有“许多小批量绘制调用”。我正在使用 spritebatch 节点,这应该可以避免这个问题。

其他建议似乎也很有意义,但那些是最“频繁”的建议,所以想开始分析这些建议。

4

1 回答 1

0

“小批量绘制调用”是指少于 n 个顶点的任何东西。我不确定使用的确切阈值,但它可能在 100-200 的数量级上。spritebatches 真正做的是消除多次拆分绘图调用以切换绑定纹理的需要,这并不自动意味着每个绘图调用将超过 100(或在此上下文中定义的任何 n)顶点;这是一个很大的可能性,但不是必需的。

老实说,我会更关心非 VBO 绘图调用,而不是使用 VAO,特别是如果您希望您的代码向前兼容。

“Logical Buffer Load”和“Mipmapping Usage”警告很可能相关;可能两者都与FBO有关。其中一个与未glClear (...)正确使用有关,另一个与使用没有 mipmap 的纹理有关。

关于逻辑缓冲区加载,您应该研究一下GL_EXT_discard_framebuffer,以这种方式清除帧缓冲区对于基于 Tile 的延迟渲染 GPU(例如所有 iOS 设备使用的 GPU)来说是一种非常健康的优化策略。

至于 mipmap 使用警告,我相信这是被触发的,因为您正在绘制 FBO 纹理,然后使用 mipmap 过滤器模式应用该纹理。绘制的 FBO 的 mip 链/金字塔必须使用glGenerateMipamp (...).

如果您能指出一些触发这些警告的个别行,我很乐意为您更详细地解释它们。

于 2013-09-18T17:29:39.823 回答