【问题标题】:Cocos2d 2.0 and OpenGL analyizer suggestionsCocos2d 2.0 和 OpenGL 分析器建议
【发布时间】:2013-09-18 15:03:35
【问题描述】:
我分析了我在 XCode 上运行 OpenGL Analyzer 的游戏。我在我的游戏中使用 Cococs2d 2.0 作为静态库,想知道以下任何建议是否会提高我的性能。我在其他论坛上读过一些帖子说我不应该担心这个,但由于我确实有一些性能问题,我想了解这些建议是否可能会改善它们。
建议:
概述:
思考:
我特别提到了它所说的建议:
"推荐使用 VAO 和 VBO"
那我也想知道为什么会有“很多小批量绘制调用”。我正在使用 spritebatch 节点,这应该可以避免这个问题。
其他建议似乎也有道理,但这些是最“常见”的建议,因此想开始分析这些建议。
【问题讨论】:
标签:
xcode
performance
opengl-es
cocos2d-iphone
【解决方案1】:
“小批量绘制调用”是指少于 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 (...) 手动构建。
如果您能指出一些触发这些警告的个别行,我很乐意为您更详细地解释它们。