cocos2d-x  2.2.3-gd2.113-rev1ec524e
Loading...
Searching...
No Matches
Shaders

Files

file  ccGLStateCache.h
 

Classes

class  CCGLProgram
 CCGLProgram Class that implements a glProgram. More...
 
class  CCShaderCache
 CCShaderCache Singleton that stores manages GL shaders. More...
 

Macros

#define kCCShader_PositionTextureColor   "ShaderPositionTextureColor"
 
#define kCCShader_PositionTextureColorAlphaTest   "ShaderPositionTextureColorAlphaTest"
 
#define kCCShader_PositionColor   "ShaderPositionColor"
 
#define kCCShader_PositionTexture   "ShaderPositionTexture"
 
#define kCCShader_PositionTexture_uColor   "ShaderPositionTexture_uColor"
 
#define kCCShader_PositionTextureA8Color   "ShaderPositionTextureA8Color"
 
#define kCCShader_Position_uColor   "ShaderPosition_uColor"
 
#define kCCShader_PositionLengthTexureColor   "ShaderPositionLengthTextureColor"
 
#define kCCShader_ControlSwitch   "Shader_ControlSwitch"
 
#define kCCUniformPMatrix_s   "CC_PMatrix"
 
#define kCCUniformMVMatrix_s   "CC_MVMatrix"
 
#define kCCUniformMVPMatrix_s   "CC_MVPMatrix"
 
#define kCCUniformTime_s   "CC_Time"
 
#define kCCUniformSinTime_s   "CC_SinTime"
 
#define kCCUniformCosTime_s   "CC_CosTime"
 
#define kCCUniformRandom01_s   "CC_Random01"
 
#define kCCUniformSampler_s   "CC_Texture0"
 
#define kCCUniformAlphaTestValue   "CC_alpha_value"
 
#define kCCAttributeNameColor   "a_color"
 
#define kCCAttributeNamePosition   "a_position"
 
#define kCCAttributeNameTexCoord   "a_texCoord"
 

Typedefs

typedef void(* GLInfoFunction) (GLuint program, GLenum pname, GLint *params)
 
typedef void(* GLLogFunction) (GLuint program, GLsizei bufsize, GLsizei *length, GLchar *infolog)
 

Enumerations

enum  { kCCVertexAttrib_Position , kCCVertexAttrib_Color , kCCVertexAttrib_TexCoords , kCCVertexAttrib_MAX }
 
enum  {
  kCCUniformPMatrix , kCCUniformMVMatrix , kCCUniformMVPMatrix , kCCUniformTime ,
  kCCUniformSinTime , kCCUniformCosTime , kCCUniformRandom01 , kCCUniformSampler ,
  kCCUniform_MAX
}
 
enum  {
  kCCVertexAttribFlag_None = 0 , kCCVertexAttribFlag_Position = 1 << 0 , kCCVertexAttribFlag_Color = 1 << 1 , kCCVertexAttribFlag_TexCoords = 1 << 2 ,
  kCCVertexAttribFlag_PosColorTex = ( kCCVertexAttribFlag_Position | kCCVertexAttribFlag_Color | kCCVertexAttribFlag_TexCoords )
}
 vertex attrib flags More...
 
enum  ccGLServerState { CC_GL_ALL = 0 }
 GL server side states. More...
 

Functions

void CC_DLL ccGLInvalidateStateCache (void)
 Invalidates the GL state cache. More...
 
void CC_DLL ccGLUseProgram (GLuint program)
 Uses the GL program in case program is different than the current one. More...
 
void CC_DLL ccGLDeleteProgram (GLuint program)
 Deletes the GL program. More...
 
void CC_DLL ccGLBlendFunc (GLenum sfactor, GLenum dfactor)
 Uses a blending function in case it not already used. More...
 
void CC_DLL ccGLBlendResetToCache (void)
 Resets the blending mode back to the cached state in case you used glBlendFuncSeparate() or glBlendEquation(). More...
 
void CC_DLL ccSetProjectionMatrixDirty (void)
 sets the projection matrix as dirty More...
 
void CC_DLL ccGLEnableVertexAttribs (unsigned int flags)
 Will enable the vertex attribs that are passed as flags. More...
 
void CC_DLL ccGLBindTexture2D (GLuint textureId)
 If the texture is not already bound to texture unit 0, it binds it. More...
 
void CC_DLL ccGLBindTexture2DN (GLuint textureUnit, GLuint textureId)
 If the texture is not already bound to a given unit, it binds it. More...
 
void CC_DLL ccGLDeleteTexture (GLuint textureId)
 It will delete a given texture. More...
 
void CC_DLL ccGLDeleteTextureN (GLuint textureUnit, GLuint textureId)
 It will delete a given texture. More...
 
void CC_DLL ccGLBindVAO (GLuint vaoId)
 If the vertex array is not already bound, it binds it. More...
 
void CC_DLL ccGLEnable (ccGLServerState flags)
 It will enable / disable the server side GL states. More...
 

Variables

CC_DLL const GLcharccPosition_uColor_frag
 
CC_DLL const GLcharccPosition_uColor_vert
 
CC_DLL const GLcharccPositionColor_frag
 
CC_DLL const GLcharccPositionColor_vert
 
CC_DLL const GLcharccPositionTexture_frag
 
CC_DLL const GLcharccPositionTexture_vert
 
CC_DLL const GLcharccPositionTextureA8Color_frag
 
CC_DLL const GLcharccPositionTextureA8Color_vert
 
CC_DLL const GLcharccPositionTextureColor_frag
 
CC_DLL const GLcharccPositionTextureColor_vert
 
CC_DLL const GLcharccPositionTextureColorAlphaTest_frag
 
CC_DLL const GLcharccPositionTexture_uColor_frag
 
CC_DLL const GLcharccPositionTexture_uColor_vert
 
CC_DLL const GLcharccPositionColorLengthTexture_frag
 
CC_DLL const GLcharccPositionColorLengthTexture_vert
 
CC_DLL const GLcharccExSwitchMask_frag
 

Detailed Description

Macro Definition Documentation

◆ kCCAttributeNameColor

#define kCCAttributeNameColor   "a_color"

◆ kCCAttributeNamePosition

#define kCCAttributeNamePosition   "a_position"

◆ kCCAttributeNameTexCoord

#define kCCAttributeNameTexCoord   "a_texCoord"

◆ kCCShader_ControlSwitch

#define kCCShader_ControlSwitch   "Shader_ControlSwitch"

◆ kCCShader_Position_uColor

#define kCCShader_Position_uColor   "ShaderPosition_uColor"

◆ kCCShader_PositionColor

#define kCCShader_PositionColor   "ShaderPositionColor"

◆ kCCShader_PositionLengthTexureColor

#define kCCShader_PositionLengthTexureColor   "ShaderPositionLengthTextureColor"

◆ kCCShader_PositionTexture

#define kCCShader_PositionTexture   "ShaderPositionTexture"

◆ kCCShader_PositionTexture_uColor

#define kCCShader_PositionTexture_uColor   "ShaderPositionTexture_uColor"

◆ kCCShader_PositionTextureA8Color

#define kCCShader_PositionTextureA8Color   "ShaderPositionTextureA8Color"

◆ kCCShader_PositionTextureColor

#define kCCShader_PositionTextureColor   "ShaderPositionTextureColor"

◆ kCCShader_PositionTextureColorAlphaTest

#define kCCShader_PositionTextureColorAlphaTest   "ShaderPositionTextureColorAlphaTest"

◆ kCCUniformAlphaTestValue

#define kCCUniformAlphaTestValue   "CC_alpha_value"

◆ kCCUniformCosTime_s

#define kCCUniformCosTime_s   "CC_CosTime"

◆ kCCUniformMVMatrix_s

#define kCCUniformMVMatrix_s   "CC_MVMatrix"

◆ kCCUniformMVPMatrix_s

#define kCCUniformMVPMatrix_s   "CC_MVPMatrix"

◆ kCCUniformPMatrix_s

#define kCCUniformPMatrix_s   "CC_PMatrix"

◆ kCCUniformRandom01_s

#define kCCUniformRandom01_s   "CC_Random01"

◆ kCCUniformSampler_s

#define kCCUniformSampler_s   "CC_Texture0"

◆ kCCUniformSinTime_s

#define kCCUniformSinTime_s   "CC_SinTime"

◆ kCCUniformTime_s

#define kCCUniformTime_s   "CC_Time"

Typedef Documentation

◆ GLInfoFunction

typedef void(* GLInfoFunction) (GLuint program, GLenum pname, GLint *params)

◆ GLLogFunction

typedef void(* GLLogFunction) (GLuint program, GLsizei bufsize, GLsizei *length, GLchar *infolog)

Enumeration Type Documentation

◆ anonymous enum

anonymous enum
Enumerator
kCCVertexAttrib_Position 
kCCVertexAttrib_Color 
kCCVertexAttrib_TexCoords 
kCCVertexAttrib_MAX 

◆ anonymous enum

anonymous enum
Enumerator
kCCUniformPMatrix 
kCCUniformMVMatrix 
kCCUniformMVPMatrix 
kCCUniformTime 
kCCUniformSinTime 
kCCUniformCosTime 
kCCUniformRandom01 
kCCUniformSampler 
kCCUniform_MAX 

◆ anonymous enum

anonymous enum

vertex attrib flags

Enumerator
kCCVertexAttribFlag_None 
kCCVertexAttribFlag_Position 
kCCVertexAttribFlag_Color 
kCCVertexAttribFlag_TexCoords 
kCCVertexAttribFlag_PosColorTex 

◆ ccGLServerState

GL server side states.

Enumerator
CC_GL_ALL 

Function Documentation

◆ ccGLBindTexture2D()

void CC_DLL ccGLBindTexture2D ( 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.

Since
v2.0.0

◆ ccGLBindTexture2DN()

void CC_DLL ccGLBindTexture2DN ( 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.

Since
v2.1.0

◆ ccGLBindVAO()

void CC_DLL ccGLBindVAO ( 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.

Since
v2.0.0

◆ ccGLBlendFunc()

void CC_DLL ccGLBlendFunc ( 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.

Since
v2.0.0

◆ ccGLBlendResetToCache()

void CC_DLL ccGLBlendResetToCache ( 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.

Since
v2.0.0

◆ ccGLDeleteProgram()

void CC_DLL ccGLDeleteProgram ( 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.

Since
v2.0.0

◆ ccGLDeleteTexture()

void CC_DLL ccGLDeleteTexture ( 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.

Since
v2.0.0

◆ ccGLDeleteTextureN()

void CC_DLL ccGLDeleteTextureN ( 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.

Since
v2.1.0

◆ ccGLEnable()

void CC_DLL ccGLEnable ( ccGLServerState  flags)

It will enable / disable the server side GL states.

If CC_ENABLE_GL_STATE_CACHE is disabled, it will call glEnable() directly.

Since
v2.0.0

◆ ccGLEnableVertexAttribs()

void CC_DLL ccGLEnableVertexAttribs ( unsigned int  flags)

Will enable the vertex attribs that are passed as flags.

Possible flags:

 kCCVertexAttribFlag_Position
 kCCVertexAttribFlag_Color
 kCCVertexAttribFlag_TexCoords

These flags can be ORed. The flags that are not present, will be disabled.

Since
v2.0.0

◆ ccGLInvalidateStateCache()

void CC_DLL ccGLInvalidateStateCache ( void  )

Invalidates the GL state cache.

If CC_ENABLE_GL_STATE_CACHE it will reset the GL state cache.

Since
v2.0.0

◆ ccGLUseProgram()

void CC_DLL ccGLUseProgram ( 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.

Since
v2.0.0

◆ ccSetProjectionMatrixDirty()

void CC_DLL ccSetProjectionMatrixDirty ( void  )

sets the projection matrix as dirty

Since
v2.0.0

Variable Documentation

◆ ccExSwitchMask_frag

CC_DLL const GLchar* ccExSwitchMask_frag
extern

◆ ccPosition_uColor_frag

CC_DLL const GLchar* ccPosition_uColor_frag
extern

◆ ccPosition_uColor_vert

CC_DLL const GLchar* ccPosition_uColor_vert
extern

◆ ccPositionColor_frag

CC_DLL const GLchar* ccPositionColor_frag
extern

◆ ccPositionColor_vert

CC_DLL const GLchar* ccPositionColor_vert
extern

◆ ccPositionColorLengthTexture_frag

CC_DLL const GLchar* ccPositionColorLengthTexture_frag
extern

◆ ccPositionColorLengthTexture_vert

CC_DLL const GLchar* ccPositionColorLengthTexture_vert
extern

◆ ccPositionTexture_frag

CC_DLL const GLchar* ccPositionTexture_frag
extern

◆ ccPositionTexture_uColor_frag

CC_DLL const GLchar* ccPositionTexture_uColor_frag
extern

◆ ccPositionTexture_uColor_vert

CC_DLL const GLchar* ccPositionTexture_uColor_vert
extern

◆ ccPositionTexture_vert

CC_DLL const GLchar* ccPositionTexture_vert
extern

◆ ccPositionTextureA8Color_frag

CC_DLL const GLchar* ccPositionTextureA8Color_frag
extern

◆ ccPositionTextureA8Color_vert

CC_DLL const GLchar* ccPositionTextureA8Color_vert
extern

◆ ccPositionTextureColor_frag

CC_DLL const GLchar* ccPositionTextureColor_frag
extern

◆ ccPositionTextureColor_vert

CC_DLL const GLchar* ccPositionTextureColor_vert
extern

◆ ccPositionTextureColorAlphaTest_frag

CC_DLL const GLchar* ccPositionTextureColorAlphaTest_frag
extern