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でステート キャッシュを有効にしていますが、問題は 1 つも発生していません。

于 2013-04-02T18:14:17.857 に答える