Cocos2d-x  v3.12
All Classes Namespaces Functions Variables Typedefs Enumerations Enumerator Groups
GLProgramState Class Reference

GLProgramState holds the 'state' (uniforms and attributes) of the GLProgram. More...

Inherits Ref.

Classes

class  AutoBindingResolver
 An abstract base class that can be extended to support custom material auto bindings. More...
 

Public Member Functions

GLProgramStateclone () const
 Returns a new copy of the GLProgramState. More...
 
void apply (const Mat4 &modelView)
 Apply GLProgram, attributes and uniforms. More...
 
void applyGLProgram (const Mat4 &modelView)
 Apply GLProgram, and built in uniforms. More...
 
void applyAttributes (bool applyAttribFlags=true)
 Apply attributes. More...
 
void applyUniforms ()
 Apply user defined uniforms.
 
void setGLProgram (GLProgram *glprogram)
 Set the binded GLProgram.
 
GLProgramgetGLProgram () const
 Get the binded GLProgram.
 
uint32_t getVertexAttribsFlags () const
 Get the flag of vertex attribs used by OR operation.
 
ssize_t getVertexAttribCount () const
 Get the number of vertex attributes.
 
void setVertexAttribCallback (const std::string &name, const std::function< void(VertexAttrib *)> &callback)
 Set the vertex attribute value by calling callback. More...
 
void setVertexAttribPointer (const std::string &name, GLint size, GLenum type, GLboolean normalized, GLsizei stride, GLvoid *pointer)
 Set the vertex attribute value. More...
 
ssize_t getUniformCount () const
 Get the number of user defined uniform count.
 
void setUniformInt (GLint uniformLocation, int value)
 set the value for uniform. More...
 
void setUniformFloat (GLint uniformLocation, float value)
 set the value for uniform. More...
 
void setUniformFloatv (GLint uniformLocation, ssize_t size, const float *pointer)
 set the value for uniform. More...
 
void setUniformVec2 (GLint uniformLocation, const Vec2 &value)
 set the value for uniform. More...
 
void setUniformVec2v (GLint uniformLocation, ssize_t size, const Vec2 *pointer)
 set the value for uniform. More...
 
void setUniformVec3 (GLint uniformLocation, const Vec3 &value)
 set the value for uniform. More...
 
void setUniformVec3v (GLint uniformLocation, ssize_t size, const Vec3 *pointer)
 set the value for uniform. More...
 
void setUniformVec4 (GLint uniformLocation, const Vec4 &value)
 set the value for uniform. More...
 
void setUniformVec4v (GLint uniformLocation, ssize_t size, const Vec4 *pointer)
 set the value for uniform. More...
 
void setUniformMat4 (GLint uniformLocation, const Mat4 &value)
 set the value for uniform. More...
 
void setUniformCallback (GLint uniformLocation, const std::function< void(GLProgram *, Uniform *)> &callback)
 set the value for uniform. More...
 
void setUniformTexture (GLint uniformLocation, Texture2D *texture)
 set the value for uniform. More...
 
void setUniformTexture (GLint uniformLocation, GLuint textureId)
 set the value for uniform. More...
 
NodegetNodeBinding () const
 Get the Node bound to the GLProgramState Node bound to the GLProgramState.
 
void setNodeBinding (Node *node)
 Sets the node that this render state is bound to. More...
 
void applyAutoBinding (const std::string &uniformName, const std::string &autoBinding)
 Applies the specified custom auto-binding. More...
 
void setParameterAutoBinding (const std::string &uniformName, const std::string &autoBinding)
 Sets a uniform auto-binding. More...
 
void setUniformInt (const std::string &uniformName, int value)
 set the value for uniform. More...
 
void setUniformFloat (const std::string &uniformName, float value)
 set the value for uniform. More...
 
void setUniformFloatv (const std::string &uniformName, ssize_t size, const float *pointer)
 set the value for uniform. More...
 
void setUniformVec2 (const std::string &uniformName, const Vec2 &value)
 set the value for uniform. More...
 
void setUniformVec2v (const std::string &uniformName, ssize_t size, const Vec2 *pointer)
 set the value for uniform. More...
 
void setUniformVec3 (const std::string &uniformName, const Vec3 &value)
 set the value for uniform. More...
 
void setUniformVec3v (const std::string &uniformName, ssize_t size, const Vec3 *pointer)
 set the value for uniform. More...
 
void setUniformVec4 (const std::string &uniformName, const Vec4 &value)
 set the value for uniform. More...
 
void setUniformVec4v (const std::string &uniformName, ssize_t size, const Vec4 *pointer)
 set the value for uniform. More...
 
void setUniformMat4 (const std::string &uniformName, const Mat4 &value)
 set the value for uniform. More...
 
void setUniformCallback (const std::string &uniformName, const std::function< void(GLProgram *, Uniform *)> &callback)
 set the value for uniform. More...
 
void setUniformTexture (const std::string &uniformName, Texture2D *texture)
 set the value for uniform. More...
 
void setUniformTexture (const std::string &uniformName, GLuint textureId)
 set the value for uniform. More...
 
- 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 ()
 Destructor.
 

Static Public Member Functions

static GLProgramStatecreate (GLProgram *glprogram)
 returns a new instance of GLProgramState for a given GLProgram
 
static GLProgramStategetOrCreateWithGLProgram (GLProgram *glprogram)
 gets-or-creates an instance of GLProgramState for a given GLProgram
 
static GLProgramStategetOrCreateWithGLProgramName (const std::string &glProgramName)
 gets-or-creates an instance of GLProgramState for a given GLProgramName
 
static GLProgramStategetOrCreateWithShaders (const std::string &vertexShader, const std::string &fragShader, const std::string &compileTimeDefines)
 gets-or-creates an instance of GLProgramState for given shaders
 

Additional Inherited Members

- Public Attributes inherited from Ref
unsigned int _ID
 object id, ScriptSupport need public _ID
 
int _luaID
 Lua reference id.
 
void * _scriptObject
 scriptObject, support for swift
 
bool _rooted
 When true, it means that the object was already rooted.
 
bool _scriptOwned
 The life of the object is scrolled by the scripting engine. More...
 

Detailed Description

GLProgramState holds the 'state' (uniforms and attributes) of the GLProgram.

A GLProgram can be used by thousands of Nodes, but if different uniform values are going to be used, then each node will need its own GLProgramState

Member Function Documentation

GLProgramState* clone ( ) const

Returns a new copy of the GLProgramState.

The GLProgram is reused

void apply ( const Mat4 modelView)

Apply GLProgram, attributes and uniforms.

The applied modelView matrix to shader.

void applyGLProgram ( const Mat4 modelView)

Apply GLProgram, and built in uniforms.

The applied modelView matrix to shader.

void applyAttributes ( bool  applyAttribFlags = true)

Apply attributes.

Call GL::enableVertexAttribs(_vertexAttribsFlags) or not.

void setVertexAttribCallback ( const std::string &  name,
const std::function< void(VertexAttrib *)> &  callback 
)

Set the vertex attribute value by calling callback.

The name of Vertex attrib. The callback for setting vertex attrib.

void setVertexAttribPointer ( const std::string &  name,
GLint  size,
GLenum  type,
GLboolean  normalized,
GLsizei  stride,
GLvoid *  pointer 
)

Set the vertex attribute value.

The vertex attrib name. The count of data in the vertex attrib, range from 0-4. The type of data in the vertex attrib Normalize the data or not 0-255 will be mapped to 0-1.0 The stride of the interleaved array. The data pointer

void setUniformInt ( const std::string &  uniformName,
int  value 
)

set the value for uniform.

Setting user defined uniforms by uniform string name in the shader. The name of uniform. The int value

void setUniformFloat ( const std::string &  uniformName,
float  value 
)

set the value for uniform.

The name of uniform. The float value

void setUniformFloatv ( const std::string &  uniformName,
ssize_t  size,
const float *  pointer 
)

set the value for uniform.

The name of uniform. The count of value The pointer of float value

void setUniformVec2 ( const std::string &  uniformName,
const Vec2 value 
)

set the value for uniform.

The name of uniform. The Vec2 value

void setUniformVec2v ( const std::string &  uniformName,
ssize_t  size,
const Vec2 pointer 
)

set the value for uniform.

The name of uniform. The count of value The pointer of Vec2 value

void setUniformVec3 ( const std::string &  uniformName,
const Vec3 value 
)

set the value for uniform.

The name of uniform. The Vec3 value

void setUniformVec3v ( const std::string &  uniformName,
ssize_t  size,
const Vec3 pointer 
)

set the value for uniform.

The name of uniform. The count of value The pointer of Vec3 value

void setUniformVec4 ( const std::string &  uniformName,
const Vec4 value 
)

set the value for uniform.

The name of uniform. The Vec4 value

void setUniformVec4v ( const std::string &  uniformName,
ssize_t  size,
const Vec4 pointer 
)

set the value for uniform.

The name of uniform. The count of value The pointer of Vec4 value

void setUniformMat4 ( const std::string &  uniformName,
const Mat4 value 
)

set the value for uniform.

The name of uniform. The Mat4 value

void setUniformCallback ( const std::string &  uniformName,
const std::function< void(GLProgram *, Uniform *)> &  callback 
)

set the value for uniform.

The name of uniform. callback function for uniform

void setUniformTexture ( const std::string &  uniformName,
Texture2D texture 
)

set the value for uniform.

The name of uniform. The texture value,the openGL handle will be used

void setUniformTexture ( const std::string &  uniformName,
GLuint  textureId 
)

set the value for uniform.

The name of uniform. The texture value

void setUniformInt ( GLint  uniformLocation,
int  value 
)

set the value for uniform.

The location of uniform. The int value

void setUniformFloat ( GLint  uniformLocation,
float  value 
)

set the value for uniform.

The location of uniform. The float value

void setUniformFloatv ( GLint  uniformLocation,
ssize_t  size,
const float *  pointer 
)

set the value for uniform.

The location of uniform. The count of value The pointer of float value

void setUniformVec2 ( GLint  uniformLocation,
const Vec2 value 
)

set the value for uniform.

The location of uniform. The Vec2 value

void setUniformVec2v ( GLint  uniformLocation,
ssize_t  size,
const Vec2 pointer 
)

set the value for uniform.

The location of uniform. The count of value The pointer of Vec2 value

void setUniformVec3 ( GLint  uniformLocation,
const Vec3 value 
)

set the value for uniform.

The location of uniform. The Vec3 value

void setUniformVec3v ( GLint  uniformLocation,
ssize_t  size,
const Vec3 pointer 
)

set the value for uniform.

The location of uniform. The count of value The pointer of Vec3 value

void setUniformVec4 ( GLint  uniformLocation,
const Vec4 value 
)

set the value for uniform.

The location of uniform. The Vec4 value

void setUniformVec4v ( GLint  uniformLocation,
ssize_t  size,
const Vec4 pointer 
)

set the value for uniform.

The location of uniform. The count of value The pointer of Vec4 value

void setUniformMat4 ( GLint  uniformLocation,
const Mat4 value 
)

set the value for uniform.

The location of uniform. The Mat4 value

void setUniformCallback ( GLint  uniformLocation,
const std::function< void(GLProgram *, Uniform *)> &  callback 
)

set the value for uniform.

The location of uniform. callback function for uniform

void setUniformTexture ( GLint  uniformLocation,
Texture2D texture 
)

set the value for uniform.

The location of uniform. The texture value,the openGL handle will be used

void setUniformTexture ( GLint  uniformLocation,
GLuint  textureId 
)

set the value for uniform.

The location of uniform. The texture value

void setNodeBinding ( Node node)

Sets the node that this render state is bound to.

The specified node is used to apply auto-bindings for the render state. This is typically set to the node of the model that a material is applied to. The node to use for applying auto-bindings.

void applyAutoBinding ( const std::string &  uniformName,
const std::string &  autoBinding 
)

Applies the specified custom auto-binding.

Name of the shader uniform. Name of the auto binding.

void setParameterAutoBinding ( const std::string &  uniformName,
const std::string &  autoBinding 
)

Sets a uniform auto-binding.

This method parses the passed in autoBinding string and attempts to convert it to an enumeration value. If it matches to one of the predefined strings, it will create a callback to get the correct value at runtime. The name of the material parameter to store an auto-binding for. A string matching one of the built-in AutoBinding enum constants.


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