4

我想知道什么时候应该启用CC_ENABLE_GL_STATE_CACHE以及使用它有什么限制。我发现一些帖子表明某些设备上的某些 OpenGL 操作存在潜在问题

编辑:这就是我从配置文件中读取的内容。禁用此功能的主要原因是如果我使用以前的代码使用 OpenGL 1.x ES 函数,因此,使用 OpenGL 2.0 ES 从头开始​​这个项目应该没问题。

/** @def CC_ENABLE_GL_STATE_CACHE
 If enabled, cocos2d will maintain an OpenGL state cache internally to avoid unnecessary switches.
 In order to use them, you have to use the following functions, insead of the the GL ones:
    - ccGLUseProgram() instead of glUseProgram()
    - ccGLDeleteProgram() instead of glDeleteProgram()
    - ccGLBlendFunc() instead of glBlendFunc()

 If this functionality is disabled, then ccGLUseProgram(), ccGLDeleteProgram(), ccGLBlendFunc() will call the GL ones, without using the cache.

 It is recommened to enable it whenever possible to improve speed.
 If you are migrating your code from GL ES 1.1, then keep it disabled. Once all your code works as expected, turn it on.

 Default value: Disabled by default

 @since v2.0.0
 */
4

1 回答 1

2

它应该默认启用。

我知道默认情况下未启用的唯一原因是您所说的:向后兼容性。但是由于你不应该在 cocos2d 2.0 中使用 GL ES 1.1 函数,这可能只适用于从 cocos2d 1.x 升级到 2.x 并逐渐将他们的 GL ES 1.1 代码迁移到 2.0 的人——尽管你必须改变大部分,在这种情况下,如果不是所有自定义 GL 代码。

自 2012 年 10 月(在 KT 发布之前)以来,我在KoboldTouch中启用了状态缓存,它没有给我造成任何问题,也没有任何使用 KT 的人报告与状态缓存相关的问题。

于 2013-04-02T18:14:17.857 回答