void LayerRadialGradient::onDraw(const Mat4& transform, uint32_t /*flags*/) { auto program = getGLProgram(); program->use(); program->setUniformsForBuiltins(transform); program->setUniformLocationWith4f(_uniformLocationStartColor, _startColorRend.r, _startColorRend.g, _startColorRend.b, _startColorRend.a); program->setUniformLocationWith4f(_uniformLocationEndColor, _endColorRend.r, _endColorRend.g, _endColorRend.b, _endColorRend.a); program->setUniformLocationWith2f(_uniformLocationCenter, _center.x, _center.y); program->setUniformLocationWith1f(_uniformLocationRadius, _radius); program->setUniformLocationWith1f(_uniformLocationExpand, _expand); GL::enableVertexAttribs( GL::VERTEX_ATTRIB_FLAG_POSITION); // // Attributes // glBindBuffer(GL_ARRAY_BUFFER, 0); glVertexAttribPointer(GLProgram::VERTEX_ATTRIB_POSITION, 2, GL_FLOAT, GL_FALSE, 0, _vertices); GL::blendFunc(_blendFunc.src, _blendFunc.dst); glDrawArrays(GL_TRIANGLE_STRIP, 0, 4); CC_INCREMENT_GL_DRAWN_BATCHES_AND_VERTICES(1,4); }
void ShaderNode::onDraw(const kmMat4 &transform, bool transformUpdated) { auto shader = getShaderProgram(); shader->use(); shader->setUniformsForBuiltins(transform); shader->setUniformLocationWith2f(_uniformResolution, _resolution.x, _resolution.y); //glUniform1f(_uniformTime, _time); // We uses the build-in @CC_Time[4] this->setCustomUniforms(); GL::enableVertexAttribs( cocos2d::GL::VERTEX_ATTRIB_FLAG_POSITION ); /* Draw viewport with two triangles */ GLfloat vertices[12] = {0, 0, _resolution.x, 0, _resolution.x, _resolution.y, 0, 0, 0, _resolution.y, _resolution.x,_resolution.y}; glVertexAttribPointer(GLProgram::VERTEX_ATTRIB_POSITION, 2, GL_FLOAT, GL_FALSE, 0, vertices); glDrawArrays(GL_TRIANGLES, 0, 6); CC_INCREMENT_GL_DRAWN_BATCHES_AND_VERTICES(1,6); }
void BlurSprite::setCustomUniforms() { auto program = getShaderProgram(); program->setUniformLocationWith2f(pixelSizeLocation, _pixelSize.x, _pixelSize.y); program->setUniformLocationWith4f(coefficientLocation, _samplingRadius, _scale,_cons,_weightSum); }