ios – Cocos2d 2.0:CC_ENABLE_GL_STATE_CACHE的含义和用法

我想知道我
should何时启用CC_ENABLE_GL_STATE_CACHE以及使用它的限制是什么.我发现一些
posts表明在某些具有某些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
 */

最佳答案 它应该默认启用.

我知道默认情况下它没有打开的唯一原因就是你所说的:向后兼容性.但由于你不应该在cocos2d 2.0中使用GL ES 1.1函数,这可能只适用于那些从cocos2d 1.x升级到2.x并逐渐将其GL ES 1.1代码迁移到2.0的人 – 尽管你必须改变大多数,如果不是所有自定义GL代码,无论如何在这种情况下.

自2012年10月(KT发布之前)我在KoboldTouch中启用了状态缓存,并没有给我带来任何问题,也没有任何与KT合作的人报告与状态缓存相关的问题.

点赞