cocos2d-x  3.3
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
GLProgram Class Reference

GLProgram Class that implements a glProgram. More...

#include <CCGLProgram.h>

Inheritance diagram for GLProgram:
Ref

Classes

struct  flag_struct
 

Public Types

enum  {
  VERTEX_ATTRIB_POSITION, VERTEX_ATTRIB_COLOR, VERTEX_ATTRIB_TEX_COORD, VERTEX_ATTRIB_TEX_COORD1,
  VERTEX_ATTRIB_TEX_COORD2, VERTEX_ATTRIB_TEX_COORD3, VERTEX_ATTRIB_NORMAL, VERTEX_ATTRIB_BLEND_WEIGHT,
  VERTEX_ATTRIB_BLEND_INDEX, VERTEX_ATTRIB_MAX, VERTEX_ATTRIB_TEX_COORDS = VERTEX_ATTRIB_TEX_COORD
}
 
enum  {
  UNIFORM_AMBIENT_COLOR, UNIFORM_P_MATRIX, UNIFORM_MV_MATRIX, UNIFORM_MVP_MATRIX,
  UNIFORM_NORMAL_MATRIX, UNIFORM_TIME, UNIFORM_SIN_TIME, UNIFORM_COS_TIME,
  UNIFORM_RANDOM01, UNIFORM_SAMPLER0, UNIFORM_SAMPLER1, UNIFORM_SAMPLER2,
  UNIFORM_SAMPLER3, UNIFORM_MAX
}
 

Public Member Functions

 GLProgram ()
 
virtual ~GLProgram ()
 
bool initWithPrecompiledProgramByteArray (const GLchar *vShaderByteArray, const GLchar *fShaderByteArray)
 
bool initWithByteArrays (const GLchar *vShaderByteArray, const GLchar *fShaderByteArray)
 
bool initWithFilenames (const std::string &vShaderFilename, const std::string &fShaderFilename)
 
UniformgetUniform (const std::string &name)
 
VertexAttribgetVertexAttrib (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
 
- Public Member Functions inherited from Ref
void retain ()
 Retains the ownership. More...
 
void release ()
 Releases the ownership immediately. More...
 
Refautorelease ()
 Releases the ownership sometime soon automatically. More...
 
unsigned int getReferenceCount () const
 Returns the Ref's current reference count. More...
 
virtual ~Ref ()
 NA NA More...
 

Static Public Member Functions

static GLProgramcreateWithPrecompiledProgramByteArray (const GLchar *vShaderByteArray, const GLchar *fShaderByteArray)
 Initializes the GLProgram with a vertex and fragment with bytes array initWithString initWithString. More...
 
static GLProgramcreateWithByteArrays (const GLchar *vShaderByteArray, const GLchar *fShaderByteArray)
 Initializes the GLProgram with a vertex and fragment with bytes array initWithString initWithString. More...
 
static GLProgramcreateWithFilenames (const std::string &vShaderFilename, const std::string &fShaderFilename)
 Initializes the GLProgram with a vertex and fragment with contents of filenames init init. More...
 

Static Public Attributes

static const char * SHADER_NAME_POSITION_TEXTURE_COLOR
 
static const char * SHADER_NAME_POSITION_TEXTURE_COLOR_NO_MVP
 
static const char * SHADER_NAME_POSITION_TEXTURE_ALPHA_TEST
 
static const char * SHADER_NAME_POSITION_TEXTURE_ALPHA_TEST_NO_MV
 
static const char * SHADER_NAME_POSITION_COLOR
 
static const char * SHADER_NAME_POSITION_COLOR_NO_MVP
 
static const char * SHADER_NAME_POSITION_TEXTURE
 
static const char * SHADER_NAME_POSITION_TEXTURE_U_COLOR
 
static const char * SHADER_NAME_POSITION_TEXTURE_A8_COLOR
 
static const char * SHADER_NAME_POSITION_U_COLOR
 
static const char * SHADER_NAME_POSITION_LENGTH_TEXTURE_COLOR
 
static const char * SHADER_NAME_LABEL_NORMAL
 
static const char * SHADER_NAME_LABEL_OUTLINE
 
static const char * SHADER_NAME_LABEL_DISTANCEFIELD_NORMAL
 
static const char * SHADER_NAME_LABEL_DISTANCEFIELD_GLOW
 
static const char * SHADER_3D_POSITION
 
static const char * SHADER_3D_POSITION_TEXTURE
 
static const char * SHADER_3D_SKINPOSITION_TEXTURE
 
static const char * SHADER_3D_POSITION_NORMAL
 
static const char * SHADER_3D_POSITION_NORMAL_TEXTURE
 
static const char * SHADER_3D_SKINPOSITION_NORMAL_TEXTURE
 
static const char * UNIFORM_NAME_AMBIENT_COLOR
 
static const char * UNIFORM_NAME_P_MATRIX
 
static const char * UNIFORM_NAME_MV_MATRIX
 
static const char * UNIFORM_NAME_MVP_MATRIX
 
static const char * UNIFORM_NAME_NORMAL_MATRIX
 
static const char * UNIFORM_NAME_TIME
 
static const char * UNIFORM_NAME_SIN_TIME
 
static const char * UNIFORM_NAME_COS_TIME
 
static const char * UNIFORM_NAME_RANDOM01
 
static const char * UNIFORM_NAME_SAMPLER0
 
static const char * UNIFORM_NAME_SAMPLER1
 
static const char * UNIFORM_NAME_SAMPLER2
 
static const char * UNIFORM_NAME_SAMPLER3
 
static const char * UNIFORM_NAME_ALPHA_TEST_VALUE
 
static const char * ATTRIBUTE_NAME_COLOR
 
static const char * ATTRIBUTE_NAME_POSITION
 
static const char * ATTRIBUTE_NAME_TEX_COORD
 
static const char * ATTRIBUTE_NAME_TEX_COORD1
 
static const char * ATTRIBUTE_NAME_TEX_COORD2
 
static const char * ATTRIBUTE_NAME_TEX_COORD3
 
static const char * ATTRIBUTE_NAME_NORMAL
 
static const char * ATTRIBUTE_NAME_BLEND_WEIGHT
 
static const char * ATTRIBUTE_NAME_BLEND_INDEX
 

Protected Member Functions

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
 
- Protected Member Functions inherited from Ref
 Ref ()
 Constructor. More...
 

Protected Attributes

GLuint _program
 
GLuint _vertShader
 
GLuint _fragShader
 
GLint _builtInUniforms [UNIFORM_MAX]
 
bool _hasShaderCompiler
 
std::string _shaderId
 
struct
cocos2d::GLProgram::flag_struct 
_flags
 
std::unordered_map
< std::string, Uniform
_userUniforms
 
std::unordered_map
< std::string, VertexAttrib
_vertexAttribs
 
std::unordered_map< GLint,
GLvoid * > 
_hashForUniforms
 
Director_director
 
- Protected Attributes inherited from Ref
unsigned int _referenceCount
 count of references More...
 

Friends

class GLProgramState
 

Detailed Description

GLProgram Class that implements a glProgram.

Since
v2.0.0

The documentation for this class was generated from the following file: