void CSpriteRGBA::shaderMulColor(float r, float g, float b, float a) { CCGLProgram *pShaders = new CCGLProgram; pShaders->initWithVertexShaderByteArray(ccPositionTextureColor_vert, SPRITERGBA_SHADER_MUL_COLOR_FSH); CHECK_GL_ERROR_DEBUG(); pShaders->addAttribute(kCCAttributeNamePosition, kCCVertexAttrib_Position); pShaders->addAttribute(kCCAttributeNameColor, kCCVertexAttrib_Color); pShaders->addAttribute(kCCAttributeNameTexCoord, kCCVertexAttrib_TexCoords); CHECK_GL_ERROR_DEBUG(); pShaders->link(); CHECK_GL_ERROR_DEBUG(); pShaders->updateUniforms(); CHECK_GL_ERROR_DEBUG(); GLint nDotColorLocation = pShaders->getUniformLocationForName("v_dotcolor"); pShaders->setUniformLocationWith4f(nDotColorLocation, r, g, b, a); scale9Image->setShaderProgram(pShaders); CHECK_GL_ERROR_DEBUG(); pShaders->release(); }
void CCShaders::setBlur(CCSize nodeSize, CCSize blurSize, ccColor4F blurSubtract) { loadCustomShader(kCCShader_blur); CCGLProgram* p = CCShaderCache::sharedShaderCache()->programForKey(kCCShader_blur); p->use(); p->setUniformLocationWith2f(sUniform_pos_CC_blurSize, blurSize.width / nodeSize.width, blurSize.height / nodeSize.height); p->setUniformLocationWith4f(sUniform_pos_CC_blurSubtract, blurSubtract.r, blurSubtract.g, blurSubtract.b, blurSubtract.a); }
static int tolua_CCGLProgram_CCGLProgram_setUniformLocationWith4f00(lua_State* tolua_S) { #ifndef TOLUA_RELEASE tolua_Error tolua_err; if ( !tolua_isusertype(tolua_S,1,"CCGLProgram",0,&tolua_err) || !tolua_isnumber(tolua_S,2,0,&tolua_err) || !tolua_isnumber(tolua_S,3,0,&tolua_err) || !tolua_isnumber(tolua_S,4,0,&tolua_err) || !tolua_isnumber(tolua_S,5,0,&tolua_err) || !tolua_isnumber(tolua_S,6,0,&tolua_err) || !tolua_isnoobj(tolua_S,7,&tolua_err) ) goto tolua_lerror; else #endif { CCGLProgram* self = (CCGLProgram*) tolua_tousertype(tolua_S,1,0); int location = ((int) tolua_tonumber(tolua_S,2,0)); float f1 = ((float) tolua_tonumber(tolua_S,3,0)); float f2 = ((float) tolua_tonumber(tolua_S,4,0)); float f3 = ((float) tolua_tonumber(tolua_S,5,0)); float f4 = ((float) tolua_tonumber(tolua_S,6,0)); #ifndef TOLUA_RELEASE if (!self) tolua_error(tolua_S,"invalid 'self' in function 'setUniformLocationWith4f'", NULL); #endif { self->setUniformLocationWith4f(location,f1,f2,f3,f4); } } return 0; #ifndef TOLUA_RELEASE tolua_lerror: tolua_error(tolua_S,"#ferror in function 'setUniformLocationWith4f'.",&tolua_err); return 0; #endif }