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

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

#include <CCGLProgramState.h>

Inheritance diagram for GLProgramState:
Ref

Public Member Functions

void apply (const Mat4 &modelView)
void applyGLProgram (const Mat4 &modelView)
void applyAttributes (bool applyAttribFlags=true)
 apply vertex attributes More...
 
void applyUniforms ()
void setGLProgram (GLProgram *glprogram)
GLProgram * getGLProgram () const
uint32_t getVertexAttribsFlags () const
ssize_t getVertexAttribCount () const
void setVertexAttribCallback (const std::string &name, const std::function< void(VertexAttrib *)> &callback)
void setVertexAttribPointer (const std::string &name, GLint size, GLenum type, GLboolean normalized, GLsizei stride, GLvoid *pointer)
ssize_t getUniformCount () const
void setUniformInt (const std::string &uniformName, int value)
void setUniformFloat (const std::string &uniformName, float value)
void setUniformVec2 (const std::string &uniformName, const Vec2 &value)
void setUniformVec3 (const std::string &uniformName, const Vec3 &value)
void setUniformVec4 (const std::string &uniformName, const Vec4 &value)
void setUniformMat4 (const std::string &uniformName, const Mat4 &value)
void setUniformCallback (const std::string &uniformName, const std::function< void(GLProgram *, Uniform *)> &callback)
void setUniformTexture (const std::string &uniformName, Texture2D *texture)
void setUniformTexture (const std::string &uniformName, GLuint textureId)
void setUniformInt (GLint uniformLocation, int value)
void setUniformFloat (GLint uniformLocation, float value)
void setUniformVec2 (GLint uniformLocation, const Vec2 &value)
void setUniformVec3 (GLint uniformLocation, const Vec3 &value)
void setUniformVec4 (GLint uniformLocation, const Vec4 &value)
void setUniformMat4 (GLint uniformLocation, const Mat4 &value)
void setUniformCallback (GLint uniformLocation, const std::function< void(GLProgram *, Uniform *)> &callback)
void setUniformTexture (GLint uniformLocation, Texture2D *texture)
void setUniformTexture (GLint uniformLocation, GLuint textureId)
- Public Member Functions inherited from Ref
void retain ()
 Retains the ownership. More...
 
void release ()
 Releases the ownership immediately. More...
 
Ref * autorelease ()
 Releases the ownership sometime soon automatically. More...
 
unsigned int getReferenceCount () const
 Returns the Ref's current reference count. More...
 
virtual ~Ref ()

Static Public Member Functions

static GLProgramState * create (GLProgram *glprogram)
 returns a new instance of GLProgramState for a given GLProgram More...
 
static GLProgramState * getOrCreateWithGLProgram (GLProgram *glprogram)
 gets-or-creates an instance of GLProgramState for a given GLProgram More...
 
static GLProgramState * getOrCreateWithGLProgramName (const std::string &glProgramName)
 gets-or-creates an instance of GLProgramState for a given GLProgramName More...
 

Protected Member Functions

 GLProgramState ()
 ~GLProgramState ()
bool init (GLProgram *program)
void resetGLProgram ()
void updateUniformsAndAttributes ()
VertexAttribValue * getVertexAttribValue (const std::string &attributeName)
UniformValue * getUniformValue (const std::string &uniformName)
UniformValue * getUniformValue (GLint uniformLocation)
- Protected Member Functions inherited from Ref
 Ref ()
 Constructor. More...
 
 Ref ()
 Constructor. More...
 

Protected Attributes

bool _uniformAttributeValueDirty
std::unordered_map
< std::string, GLint > 
_uniformsByName
std::unordered_map< GLint,
UniformValue > 
_uniforms
std::unordered_map
< std::string,
VertexAttribValue > 
_attributes
std::unordered_map
< std::string, int > 
_boundTextureUnits
int _textureUnitIndex
uint32_t _vertexAttribsFlags
GLProgram * _glprogram
EventListenerCustom * _backToForegroundlistener
- Protected Attributes inherited from Ref
unsigned int _referenceCount
 count of references More...
 
var _referenceCount
 count of references More...
 
local _referenceCount
 count of references More...
 

Friends

class GLProgramStateCache

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

Constructor & Destructor Documentation

GLProgramState ( )
protected
~GLProgramState ( )
protected

Member Function Documentation

void apply ( const Mat4 &  modelView)
void applyAttributes ( bool  applyAttribFlags = true)

apply vertex attributes

Parameters
applyAttribFlagsCall GL::enableVertexAttribs(_vertexAttribsFlags) or not
void applyGLProgram ( const Mat4 &  modelView)
void applyUniforms ( )
static GLProgramState* create ( GLProgram *  glprogram)
static

returns a new instance of GLProgramState for a given GLProgram

GLProgram* getGLProgram ( ) const
inline
static GLProgramState*
getOrCreateWithGLProgram
( GLProgram *  glprogram)
static

gets-or-creates an instance of GLProgramState for a given GLProgram

static GLProgramState*
getOrCreateWithGLProgramName
( const std::string &  glProgramName)
static

gets-or-creates an instance of GLProgramState for a given GLProgramName

ssize_t getUniformCount ( ) const
inline
UniformValue* getUniformValue ( const std::string &  uniformName)
protected
UniformValue* getUniformValue ( GLint  uniformLocation)
protected
ssize_t getVertexAttribCount ( ) const
inline
uint32_t getVertexAttribsFlags ( ) const
inline
VertexAttribValue*
getVertexAttribValue
( const std::string &  attributeName)
protected
bool init ( GLProgram *  program)
protected
void resetGLProgram ( )
protected
void setGLProgram ( GLProgram *  glprogram)
void setUniformCallback ( const std::string &  uniformName,
const std::function< void(GLProgram *, Uniform *)> &  callback 
)
void setUniformCallback ( GLint  uniformLocation,
const std::function< void(GLProgram *, Uniform *)> &  callback 
)
void setUniformFloat ( const std::string &  uniformName,
float  value 
)
void setUniformFloat ( GLint  uniformLocation,
float  value 
)
void setUniformInt ( const std::string &  uniformName,
int  value 
)
void setUniformInt ( GLint  uniformLocation,
int  value 
)
void setUniformMat4 ( const std::string &  uniformName,
const Mat4 &  value 
)
void setUniformMat4 ( GLint  uniformLocation,
const Mat4 &  value 
)
void setUniformTexture ( const std::string &  uniformName,
Texture2D *  texture 
)
void setUniformTexture ( const std::string &  uniformName,
GLuint  textureId 
)
void setUniformTexture ( GLint  uniformLocation,
Texture2D *  texture 
)
void setUniformTexture ( GLint  uniformLocation,
GLuint  textureId 
)
void setUniformVec2 ( const std::string &  uniformName,
const Vec2 &  value 
)
void setUniformVec2 ( GLint  uniformLocation,
const Vec2 &  value 
)
void setUniformVec3 ( const std::string &  uniformName,
const Vec3 &  value 
)
void setUniformVec3 ( GLint  uniformLocation,
const Vec3 &  value 
)
void setUniformVec4 ( const std::string &  uniformName,
const Vec4 &  value 
)
void setUniformVec4 ( GLint  uniformLocation,
const Vec4 &  value 
)
void setVertexAttribCallback ( const std::string &  name,
const std::function< void(VertexAttrib *)> &  callback 
)
void setVertexAttribPointer ( const std::string &  name,
GLint  size,
GLenum  type,
GLboolean  normalized,
GLsizei  stride,
GLvoid *  pointer 
)
void updateUniformsAndAttributes ( )
protected

Friends And Related Function Documentation

friend class GLProgramStateCache
friend

Member Data Documentation

std::unordered_map<std::string,
VertexAttribValue> _attributes
protected
EventListenerCustom*
_backToForegroundlistener
protected
std::unordered_map<std::string,
int> _boundTextureUnits
protected
GLProgram* _glprogram
protected
int _textureUnitIndex
protected
bool _uniformAttributeValueDirty
protected
std::unordered_map<GLint,
UniformValue> _uniforms
protected
std::unordered_map<std::string,
GLint> _uniformsByName
protected
uint32_t _vertexAttribsFlags
protected

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