|
cocos2d-x
3.3
|
Files | |
| file | ccGLStateCache.h |
Namespaces | |
| cocos2d::GL | |
Classes | |
| struct | VertexAttrib |
| struct | Uniform |
| class | GLProgram |
| GLProgram Class that implements a glProgram. More... | |
| struct | GLProgram::flag_struct |
| class | GLProgramCache |
| GLProgramCache Singleton that stores manages GLProgram objects (shaders) More... | |
Typedefs | |
| typedef void(* | GLInfoFunction )(GLuint program, GLenum pname, GLint *params) |
| typedef void(* | GLLogFunction )(GLuint program, GLsizei bufsize, GLsizei *length, GLchar *infolog) |
Functions | |
| GLProgram () | |
| virtual | ~GLProgram () |
| static GLProgram * | createWithPrecompiledProgramByteArray (const GLchar *vShaderByteArray, const GLchar *fShaderByteArray) |
| Initializes the GLProgram with a vertex and fragment with bytes array initWithString initWithString. More... | |
| bool | initWithPrecompiledProgramByteArray (const GLchar *vShaderByteArray, const GLchar *fShaderByteArray) |
| static GLProgram * | createWithByteArrays (const GLchar *vShaderByteArray, const GLchar *fShaderByteArray) |
| Initializes the GLProgram with a vertex and fragment with bytes array initWithString initWithString. More... | |
| bool | initWithByteArrays (const GLchar *vShaderByteArray, const GLchar *fShaderByteArray) |
| static GLProgram * | createWithFilenames (const std::string &vShaderFilename, const std::string &fShaderFilename) |
| Initializes the GLProgram with a vertex and fragment with contents of filenames init init. More... | |
| bool | initWithFilenames (const std::string &vShaderFilename, const std::string &fShaderFilename) |
| Uniform * | getUniform (const std::string &name) |
| VertexAttrib * | getVertexAttrib (const std::string &name) |
| void | bindAttribLocation (const std::string &attributeName, GLuint index) const |
| It will add a new attribute to the shader by calling glBindAttribLocation. More... | |
| GLint | getAttribLocation (const std::string &attributeName) const |
| calls glGetAttribLocation More... | |
| GLint | getUniformLocation (const std::string &attributeName) const |
| calls glGetUniformLocation() More... | |
| bool | link () |
| links the glProgram More... | |
| void | use () |
| it will call glUseProgram() More... | |
| void | updateUniforms () |
| It will create 4 uniforms: More... | |
| GLint | getUniformLocationForName (const char *name) const |
| calls retrieves the named uniform location for this shader program. More... | |
| void | setUniformLocationWith1i (GLint location, GLint i1) |
| calls glUniform1i only if the values are different than the previous call for this same shader program. More... | |
| void | setUniformLocationWith2i (GLint location, GLint i1, GLint i2) |
| calls glUniform2i only if the values are different than the previous call for this same shader program. More... | |
| void | setUniformLocationWith3i (GLint location, GLint i1, GLint i2, GLint i3) |
| calls glUniform3i only if the values are different than the previous call for this same shader program. More... | |
| void | setUniformLocationWith4i (GLint location, GLint i1, GLint i2, GLint i3, GLint i4) |
| calls glUniform4i only if the values are different than the previous call for this same shader program. More... | |
| void | setUniformLocationWith2iv (GLint location, GLint *ints, unsigned int numberOfArrays) |
| calls glUniform2iv only if the values are different than the previous call for this same shader program. More... | |
| void | setUniformLocationWith3iv (GLint location, GLint *ints, unsigned int numberOfArrays) |
| calls glUniform3iv only if the values are different than the previous call for this same shader program. More... | |
| void | setUniformLocationWith4iv (GLint location, GLint *ints, unsigned int numberOfArrays) |
| calls glUniform4iv only if the values are different than the previous call for this same shader program. More... | |
| void | setUniformLocationWith1f (GLint location, GLfloat f1) |
| calls glUniform1f only if the values are different than the previous call for this same shader program. More... | |
| void | setUniformLocationWith2f (GLint location, GLfloat f1, GLfloat f2) |
| calls glUniform2f only if the values are different than the previous call for this same shader program. More... | |
| void | setUniformLocationWith3f (GLint location, GLfloat f1, GLfloat f2, GLfloat f3) |
| calls glUniform3f only if the values are different than the previous call for this same shader program. More... | |
| void | setUniformLocationWith4f (GLint location, GLfloat f1, GLfloat f2, GLfloat f3, GLfloat f4) |
| calls glUniform4f only if the values are different than the previous call for this same shader program. More... | |
| void | setUniformLocationWith1fv (GLint location, const GLfloat *floats, unsigned int numberOfArrays) |
| calls glUniformfv only if the values are different than the previous call for this same shader program. More... | |
| void | setUniformLocationWith2fv (GLint location, const GLfloat *floats, unsigned int numberOfArrays) |
| calls glUniform2fv only if the values are different than the previous call for this same shader program. More... | |
| void | setUniformLocationWith3fv (GLint location, const GLfloat *floats, unsigned int numberOfArrays) |
| calls glUniform3fv only if the values are different than the previous call for this same shader program. More... | |
| void | setUniformLocationWith4fv (GLint location, const GLfloat *floats, unsigned int numberOfArrays) |
| calls glUniform4fv only if the values are different than the previous call for this same shader program. More... | |
| void | setUniformLocationWithMatrix2fv (GLint location, const GLfloat *matrixArray, unsigned int numberOfMatrices) |
| calls glUniformMatrix2fv only if the values are different than the previous call for this same shader program. More... | |
| void | setUniformLocationWithMatrix3fv (GLint location, const GLfloat *matrixArray, unsigned int numberOfMatrices) |
| calls glUniformMatrix3fv only if the values are different than the previous call for this same shader program. More... | |
| void | setUniformLocationWithMatrix4fv (GLint location, const GLfloat *matrixArray, unsigned int numberOfMatrices) |
| calls glUniformMatrix4fv only if the values are different than the previous call for this same shader program. More... | |
| void | setUniformsForBuiltins () |
| will update the builtin uniforms if they are different than the previous call for this same shader program. More... | |
| void | setUniformsForBuiltins (const Mat4 &modelView) |
| std::string | getVertexShaderLog () const |
| returns the vertexShader error log More... | |
| std::string | getFragmentShaderLog () const |
| returns the fragmentShader error log More... | |
| std::string | getProgramLog () const |
| returns the program error log More... | |
| void | reset () |
| const GLuint | getProgram () const |
| bool | initWithVertexShaderByteArray (const GLchar *vertexByteArray, const GLchar *fragByteArray) |
| bool | initWithVertexShaderFilename (const std::string &vertexFilename, const std::string &fragFilename) |
| void | addAttribute (const std::string &attributeName, GLuint index) const |
| bool | updateUniformLocation (GLint location, const GLvoid *data, unsigned int bytes) |
| virtual std::string | getDescription () const |
| void | bindPredefinedVertexAttribs () |
| void | parseVertexAttribs () |
| void | parseUniforms () |
| bool | compileShader (GLuint *shader, GLenum type, const GLchar *source) |
| std::string | logForOpenGLObject (GLuint object, GLInfoFunction infoFunc, GLLogFunction logFunc) const |
| flag_struct () | |
| void CC_DLL | invalidateStateCache (void) |
| Invalidates the GL state cache. More... | |
| void CC_DLL | useProgram (GLuint program) |
| Uses the GL program in case program is different than the current one. More... | |
| void CC_DLL | deleteProgram (GLuint program) |
| Deletes the GL program. More... | |
| void CC_DLL | blendFunc (GLenum sfactor, GLenum dfactor) |
| Uses a blending function in case it not already used. More... | |
| void CC_DLL | blendResetToCache (void) |
| Resets the blending mode back to the cached state in case you used glBlendFuncSeparate() or glBlendEquation(). More... | |
| void CC_DLL | setProjectionMatrixDirty (void) |
| sets the projection matrix as dirty More... | |
| void CC_DLL | enableVertexAttribs (uint32_t flags) |
| Will enable the vertex attribs that are passed as flags. More... | |
| void CC_DLL | bindTexture2D (GLuint textureId) |
| If the texture is not already bound to texture unit 0, it binds it. More... | |
| void CC_DLL | bindTexture2DN (GLuint textureUnit, GLuint textureId) |
| If the texture is not already bound to a given unit, it binds it. More... | |
| void CC_DLL | deleteTexture (GLuint textureId) |
| It will delete a given texture. More... | |
| void CC_DLL | deleteTextureN (GLuint textureUnit, GLuint textureId) |
| It will delete a given texture. More... | |
| void CC_DLL | activeTexture (GLenum texture) |
| Select active texture unit. More... | |
| void CC_DLL | bindVAO (GLuint vaoId) |
| If the vertex array is not already bound, it binds it. More... | |
Friends | |
| class | GLProgramState |
| typedef void(* GLInfoFunction)(GLuint program, GLenum pname, GLint *params) |
| typedef void(* GLLogFunction)(GLuint program, GLsizei bufsize, GLsizei *length, GLchar *infolog) |
| anonymous enum |
| anonymous enum |
| anonymous enum |
|
inline |
| GLProgram | ( | ) |
|
virtual |
| void CC_DLL cocos2d::GL::activeTexture | ( | GLenum | texture | ) |
Select active texture unit.
If CC_ENABLE_GL_STATE_CACHE is disabled, it will call glActiveTexture() directly.
|
inline |
| void bindAttribLocation | ( | const std::string & | attributeName, |
| GLuint | index | ||
| ) | const |
It will add a new attribute to the shader by calling glBindAttribLocation.
|
protected |
| void CC_DLL cocos2d::GL::bindTexture2D | ( | GLuint | textureId | ) |
If the texture is not already bound to texture unit 0, it binds it.
If CC_ENABLE_GL_STATE_CACHE is disabled, it will call glBindTexture() directly.
| void CC_DLL cocos2d::GL::bindTexture2DN | ( | GLuint | textureUnit, |
| GLuint | textureId | ||
| ) |
If the texture is not already bound to a given unit, it binds it.
If CC_ENABLE_GL_STATE_CACHE is disabled, it will call glBindTexture() directly.
| void CC_DLL cocos2d::GL::bindVAO | ( | GLuint | vaoId | ) |
If the vertex array is not already bound, it binds it.
If CC_ENABLE_GL_STATE_CACHE is disabled, it will call glBindVertexArray() directly.
| void CC_DLL cocos2d::GL::blendFunc | ( | GLenum | sfactor, |
| GLenum | dfactor | ||
| ) |
Uses a blending function in case it not already used.
If CC_ENABLE_GL_STATE_CACHE is disabled, it will the glBlendFunc() directly.
| void CC_DLL cocos2d::GL::blendResetToCache | ( | void | ) |
Resets the blending mode back to the cached state in case you used glBlendFuncSeparate() or glBlendEquation().
If CC_ENABLE_GL_STATE_CACHE is disabled, it will just set the default blending mode using GL_FUNC_ADD.
|
protected |
|
static |
Initializes the GLProgram with a vertex and fragment with bytes array initWithString initWithString.
|
static |
Initializes the GLProgram with a vertex and fragment with contents of filenames init init.
|
static |
Initializes the GLProgram with a vertex and fragment with bytes array initWithString initWithString.
Initializes the CCGLProgram with precompiled shader program
| void CC_DLL cocos2d::GL::deleteProgram | ( | GLuint | program | ) |
Deletes the GL program.
If it is the one that is being used, it invalidates it. If CC_ENABLE_GL_STATE_CACHE is disabled, it will the glDeleteProgram() directly.
| void CC_DLL cocos2d::GL::deleteTexture | ( | GLuint | textureId | ) |
It will delete a given texture.
If the texture was bound, it will invalidate the cached. If CC_ENABLE_GL_STATE_CACHE is disabled, it will call glDeleteTextures() directly.
| void CC_DLL cocos2d::GL::deleteTextureN | ( | GLuint | textureUnit, |
| GLuint | textureId | ||
| ) |
It will delete a given texture.
If the texture was bound, it will invalidate the cached for the given texture unit. If CC_ENABLE_GL_STATE_CACHE is disabled, it will call glDeleteTextures() directly.
Will enable the vertex attribs that are passed as flags.
Possible flags:
VERTEX_ATTRIB_FLAG_POSITION VERTEX_ATTRIB_FLAG_COLOR VERTEX_ATTRIB_FLAG_TEX_COORDS
These flags can be ORed. The flags that are not present, will be disabled.
| GLint getAttribLocation | ( | const std::string & | attributeName | ) | const |
calls glGetAttribLocation
|
protectedvirtual |
| std::string getFragmentShaderLog | ( | ) | const |
returns the fragmentShader error log
|
inline |
| std::string getProgramLog | ( | ) | const |
returns the program error log
| Uniform* getUniform | ( | const std::string & | name | ) |
| GLint getUniformLocation | ( | const std::string & | attributeName | ) | const |
calls glGetUniformLocation()
| GLint getUniformLocationForName | ( | const char * | name | ) | const |
calls retrieves the named uniform location for this shader program.
| VertexAttrib* getVertexAttrib | ( | const std::string & | name | ) |
| std::string getVertexShaderLog | ( | ) | const |
returns the vertexShader error log
| bool initWithFilenames | ( | const std::string & | vShaderFilename, |
| const std::string & | fShaderFilename | ||
| ) |
| bool initWithPrecompiledProgramByteArray | ( | const GLchar * | vShaderByteArray, |
| const GLchar * | fShaderByteArray | ||
| ) |
|
inline |
|
inline |
| void CC_DLL cocos2d::GL::invalidateStateCache | ( | void | ) |
| bool link | ( | ) |
links the glProgram
|
protected |
|
protected |
|
protected |
| void reset | ( | ) |
| void CC_DLL cocos2d::GL::setProjectionMatrixDirty | ( | void | ) |
sets the projection matrix as dirty
| void setUniformLocationWith1f | ( | GLint | location, |
| GLfloat | f1 | ||
| ) |
calls glUniform1f only if the values are different than the previous call for this same shader program.
In js or lua,please use setUniformLocationF32 NA
| void setUniformLocationWith1fv | ( | GLint | location, |
| const GLfloat * | floats, | ||
| unsigned int | numberOfArrays | ||
| ) |
calls glUniformfv only if the values are different than the previous call for this same shader program.
| void setUniformLocationWith1i | ( | GLint | location, |
| GLint | i1 | ||
| ) |
calls glUniform1i only if the values are different than the previous call for this same shader program.
setUniformLocationI32 setUniformLocationI32
| void setUniformLocationWith2f | ( | GLint | location, |
| GLfloat | f1, | ||
| GLfloat | f2 | ||
| ) |
calls glUniform2f only if the values are different than the previous call for this same shader program.
In js or lua,please use setUniformLocationF32 NA
| void setUniformLocationWith2fv | ( | GLint | location, |
| const GLfloat * | floats, | ||
| unsigned int | numberOfArrays | ||
| ) |
calls glUniform2fv only if the values are different than the previous call for this same shader program.
| void setUniformLocationWith2i | ( | GLint | location, |
| GLint | i1, | ||
| GLint | i2 | ||
| ) |
calls glUniform2i only if the values are different than the previous call for this same shader program.
| void setUniformLocationWith2iv | ( | GLint | location, |
| GLint * | ints, | ||
| unsigned int | numberOfArrays | ||
| ) |
calls glUniform2iv only if the values are different than the previous call for this same shader program.
| void setUniformLocationWith3f | ( | GLint | location, |
| GLfloat | f1, | ||
| GLfloat | f2, | ||
| GLfloat | f3 | ||
| ) |
calls glUniform3f only if the values are different than the previous call for this same shader program.
In js or lua,please use setUniformLocationF32 NA
| void setUniformLocationWith3fv | ( | GLint | location, |
| const GLfloat * | floats, | ||
| unsigned int | numberOfArrays | ||
| ) |
calls glUniform3fv only if the values are different than the previous call for this same shader program.
| void setUniformLocationWith3i | ( | GLint | location, |
| GLint | i1, | ||
| GLint | i2, | ||
| GLint | i3 | ||
| ) |
calls glUniform3i only if the values are different than the previous call for this same shader program.
| void setUniformLocationWith3iv | ( | GLint | location, |
| GLint * | ints, | ||
| unsigned int | numberOfArrays | ||
| ) |
calls glUniform3iv only if the values are different than the previous call for this same shader program.
| void setUniformLocationWith4f | ( | GLint | location, |
| GLfloat | f1, | ||
| GLfloat | f2, | ||
| GLfloat | f3, | ||
| GLfloat | f4 | ||
| ) |
calls glUniform4f only if the values are different than the previous call for this same shader program.
In js or lua,please use setUniformLocationF32 NA
| void setUniformLocationWith4fv | ( | GLint | location, |
| const GLfloat * | floats, | ||
| unsigned int | numberOfArrays | ||
| ) |
calls glUniform4fv only if the values are different than the previous call for this same shader program.
| void setUniformLocationWith4i | ( | GLint | location, |
| GLint | i1, | ||
| GLint | i2, | ||
| GLint | i3, | ||
| GLint | i4 | ||
| ) |
calls glUniform4i only if the values are different than the previous call for this same shader program.
| void setUniformLocationWith4iv | ( | GLint | location, |
| GLint * | ints, | ||
| unsigned int | numberOfArrays | ||
| ) |
calls glUniform4iv only if the values are different than the previous call for this same shader program.
| void setUniformLocationWithMatrix2fv | ( | GLint | location, |
| const GLfloat * | matrixArray, | ||
| unsigned int | numberOfMatrices | ||
| ) |
calls glUniformMatrix2fv only if the values are different than the previous call for this same shader program.
| void setUniformLocationWithMatrix3fv | ( | GLint | location, |
| const GLfloat * | matrixArray, | ||
| unsigned int | numberOfMatrices | ||
| ) |
calls glUniformMatrix3fv only if the values are different than the previous call for this same shader program.
| void setUniformLocationWithMatrix4fv | ( | GLint | location, |
| const GLfloat * | matrixArray, | ||
| unsigned int | numberOfMatrices | ||
| ) |
calls glUniformMatrix4fv only if the values are different than the previous call for this same shader program.
| void setUniformsForBuiltins | ( | ) |
will update the builtin uniforms if they are different than the previous call for this same shader program.
| void setUniformsForBuiltins | ( | const Mat4 & | modelView | ) |
|
protected |
| void updateUniforms | ( | ) |
It will create 4 uniforms:
And it will bind "GLProgram::UNIFORM_SAMPLER" to 0
| void use | ( | ) |
it will call glUseProgram()
| void CC_DLL cocos2d::GL::useProgram | ( | GLuint | program | ) |
Uses the GL program in case program is different than the current one.
If CC_ENABLE_GL_STATE_CACHE is disabled, it will the glUseProgram() directly.
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
|
static |
|
static |
|
static |
|
static |
|
static |
|
static |
|
static |
|
static |
|
static |
| GLuint index |
| GLint location |
| std::string name |
| std::string name |
|
static |
|
static |
|
static |
|
static |
|
static |
|
static |
|
static |
|
static |
|
static |
|
static |
|
static |
|
static |
|
static |
|
static |
|
static |
|
static |
|
static |
|
static |
|
static |
|
static |
|
static |
| GLint size |
| GLint size |
| GLenum type |
| GLenum type |
|
static |
|
static |
|
static |
|
static |
|
static |
|
static |
|
static |
|
static |
|
static |
|
static |
|
static |
|
static |
|
static |
|
static |
| unsigned int usesMV |
| unsigned int usesMVP |
| unsigned int usesNormal |
| unsigned int usesP |
| unsigned int usesRandom |
| unsigned int usesTime |
|
friend |