然后在 void GLProgramCache::loadDefaultGLPrograms() 中写加载我们shader的代码: p = new GLProgram(); loadDefaultGLProgram(p, kShaderType_PositionTextureColor_noMVP_gray); _programs.insert( std::make_pair( GLProgram::SHADER_NAME_POSITION_TEXTURE_COLOR_NO_MVP_GRAY, p ) );
到void GLProgramCache::loadDefaultGLProgram(GLProgram *p, int type) 中,配置我们shader用的VS 和PS阶段的 的相关代码:(因为做灰度只需要改动pos部分,所以可以直接用cocos2d现有的VS阶段的代码ccPositionTextureColor_noMVP_vert)
case kShaderType_PositionTextureColor_noMVP_gray: p->initWithByteArrays(ccPositionTextureColor_noMVP_vert, ccPositionTextureColor_noMVP_gray_frag); break;