void ShaderSprite::initShader() { GLchar * fragSource = (GLchar*) String::createWithContentsOfFile( FileUtils::getInstance()->fullPathForFilename(_fragSourceFile).c_str())->getCString(); auto program = new GLProgram(); program->initWithVertexShaderByteArray(ccPositionTextureColor_vert, fragSource); setShaderProgram(program); program->release(); CHECK_GL_ERROR_DEBUG(); program->addAttribute(GLProgram::ATTRIBUTE_NAME_POSITION, GLProgram::VERTEX_ATTRIB_POSITION); program->addAttribute(GLProgram::ATTRIBUTE_NAME_COLOR, GLProgram::VERTEX_ATTRIB_COLOR); program->addAttribute(GLProgram::ATTRIBUTE_NAME_TEX_COORD, GLProgram::VERTEX_ATTRIB_TEX_COORDS); CHECK_GL_ERROR_DEBUG(); program->link(); CHECK_GL_ERROR_DEBUG(); program->updateUniforms(); CHECK_GL_ERROR_DEBUG(); buildCustomUniforms(); CHECK_GL_ERROR_DEBUG(); }
bool GLShaderProgram::initWithVertexShaderByFile( const char* vertexFile,const char* fragmentFile ) { unsigned long length = 0; GLchar* vertArray = (GLchar*)gsShareFileUtils()->getFileData( vertexFile,"r",length); vertArray[length] = '\0'; GLchar* fragArray = (GLchar*)gsShareFileUtils()->getFileData( fragmentFile,"r",length); fragArray[length] = '\0'; return initWithVertexShaderByteArray(vertArray,fragArray); }