缓存GLProgramState。reuse the old GLProgramState, which will accelerate the creation of game objects such as sprites, particles etc.

    1. class CC_DLL GLProgramStateCache
    2. {
    3. public:
    4. static GLProgramStateCache* getInstance();
    5. static void destroyInstance();
    6. GLProgramState* getGLProgramState(GLProgram* program); // 没有则将为这个program创建ProgramState
    7. void removeAllGLProgramState();
    8. void removeUnusedGLProgramState(); // referenceCount == 1
    9. protected:
    10. GLProgramStateCache();
    11. ~GLProgramStateCache();
    12. // key: gl program object
    13. // value: program对应的program state
    14. // 注意是cocos2d::Map类型,因此只要缓存了programState,那么就不必担心program的生命周期。
    15. Map<GLProgram*, GLProgramState*> _glProgramStates;
    16. static GLProgramStateCache* s_instance;
    17. };