GLProgram Class that implements a glProgram. More...
Inherits Ref.
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 } |
Enum the preallocated vertex attribute. More... | |
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 } |
Preallocated uniform handle. More... | |
Public Member Functions | |
GLProgram () | |
Constructor. More... | |
virtual | ~GLProgram () |
Destructor. More... | |
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 | |
void | use () |
it will call glUseProgram() | |
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. | |
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 () |
Update the builtin uniforms if they are different than the previous call for this same shader program. | |
void | setUniformsForBuiltins (const Mat4 &modelView) |
Update the builtin uniforms if they are different than the previous call for this same shader program. More... | |
std::string | getVertexShaderLog () const |
returns the vertexShader error log | |
std::string | getFragmentShaderLog () const |
returns the fragmentShader error log | |
std::string | getProgramLog () const |
returns the program error log | |
void | reset () |
Reload all shaders, this function is designed for android when opengl context lost, so don't call it. | |
Uniform * | getUniform (const std::string &name) |
![]() | |
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 () |
Destructor. More... | |
Static Public Attributes | |
static const char * | UNIFORM_NAME_ALPHA_TEST_VALUE |
Alpha test value uniform. More... | |
static const char * | ATTRIBUTE_NAME_NORMAL |
Attribute normal. More... | |
static const char * | ATTRIBUTE_NAME_BLEND_WEIGHT |
Attribute blend weight. More... | |
static const char * | ATTRIBUTE_NAME_BLEND_INDEX |
Attribute blend index. More... | |
Built Shader types | |
static const char * | SHADER_NAME_POSITION_TEXTURE_COLOR |
Built in shader for 2d. More... | |
static const char * | SHADER_NAME_POSITION_TEXTURE_COLOR_NO_MVP |
Built in shader for 2d. More... | |
static const char * | SHADER_NAME_POSITION_TEXTURE_ALPHA_TEST |
Built in shader for 2d. More... | |
static const char * | SHADER_NAME_POSITION_TEXTURE_ALPHA_TEST_NO_MV |
Built in shader for 2d. More... | |
static const char * | SHADER_NAME_POSITION_COLOR |
Built in shader for 2d. More... | |
static const char * | SHADER_NAME_POSITION_COLOR_TEXASPOINTSIZE |
Built in shader for 2d. More... | |
static const char * | SHADER_NAME_POSITION_COLOR_NO_MVP |
Built in shader for 2d. More... | |
static const char * | SHADER_NAME_POSITION_TEXTURE |
Built in shader for 2d. More... | |
static const char * | SHADER_NAME_POSITION_TEXTURE_U_COLOR |
Built in shader for 2d. More... | |
static const char * | SHADER_NAME_POSITION_TEXTURE_A8_COLOR |
Built in shader for 2d. More... | |
static const char * | SHADER_NAME_POSITION_U_COLOR |
Built in shader for 2d. More... | |
static const char * | SHADER_NAME_POSITION_LENGTH_TEXTURE_COLOR |
Built in shader for draw a sector with 90 degrees with center at bottom left point. More... | |
static const char * | SHADER_NAME_POSITION_GRAYSCALE |
Built in shader for ui effects. | |
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 |
Built in shader used for 3D, support Position vertex attribute, with color specified by a uniform. More... | |
static const char * | SHADER_3D_POSITION_TEXTURE |
Built in shader used for 3D, support Position and Texture vertex attribute, with color specified by a uniform. More... | |
static const char * | SHADER_3D_SKINPOSITION_TEXTURE |
Built in shader used for 3D, support Position (Skeletal animation by hardware skin) and Texture vertex attribute, with color specified by a uniform. | |
static const char * | SHADER_3D_POSITION_NORMAL |
Built in shader used for 3D, support Position and Normal vertex attribute, used in lighting. More... | |
static const char * | SHADER_3D_POSITION_NORMAL_TEXTURE |
Built in shader used for 3D, support Position, Normal, Texture vertex attribute, used in lighting. More... | |
static const char * | SHADER_3D_SKINPOSITION_NORMAL_TEXTURE |
Built in shader used for 3D, support Position(skeletal animation by hardware skin), Normal, Texture vertex attribute, used in lighting. More... | |
static const char * | SHADER_3D_PARTICLE_TEXTURE |
Built in shader for particles, support Position and Texture, with a color specified by a uniform. | |
static const char * | SHADER_3D_PARTICLE_COLOR |
Built in shader for particles, support Position, with a color specified by a uniform. | |
static const char * | SHADER_3D_SKYBOX |
Built in shader for skybox. | |
static const char * | SHADER_3D_TERRAIN |
Built in shader for terrain. | |
static const char * | SHADER_CAMERA_CLEAR |
Built in shader for camera clear. | |
Built uniform names | |
static const char * | UNIFORM_NAME_AMBIENT_COLOR |
Ambient Color uniform. More... | |
static const char * | UNIFORM_NAME_P_MATRIX |
Projection Matrix uniform. More... | |
static const char * | UNIFORM_NAME_MV_MATRIX |
Model view matrix uniform. More... | |
static const char * | UNIFORM_NAME_MVP_MATRIX |
Model view projection uniform. More... | |
static const char * | UNIFORM_NAME_NORMAL_MATRIX |
Normal matrix uniform. More... | |
static const char * | UNIFORM_NAME_TIME |
Time uniform. More... | |
static const char * | UNIFORM_NAME_SIN_TIME |
Sin time uniform. More... | |
static const char * | UNIFORM_NAME_COS_TIME |
Cos time uniform. More... | |
static const char * | UNIFORM_NAME_RANDOM01 |
Random number uniform. More... | |
static const char * | UNIFORM_NAME_SAMPLER0 |
Sampler uniform 0-3, used for textures. | |
static const char * | UNIFORM_NAME_SAMPLER1 |
static const char * | UNIFORM_NAME_SAMPLER2 |
static const char * | UNIFORM_NAME_SAMPLER3 |
Built Attribute names | |
static const char * | ATTRIBUTE_NAME_COLOR |
Attribute color. More... | |
static const char * | ATTRIBUTE_NAME_POSITION |
Attribute position. More... | |
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 GLProgram * | createWithByteArrays (const GLchar *vShaderByteArray, const GLchar *fShaderByteArray) |
static GLProgram * | createWithFilenames (const std::string &vShaderFilename, const std::string &fShaderFilename) |
Additional Inherited Members | |
![]() | |
unsigned int | _ID |
object id, ScriptSupport need public _ID | |
int | _luaID |
Lua reference id. | |
void * | _scriptObject |
scriptObject, support for swift | |
GLProgram Class that implements a glProgram.
GLProgram | ( | ) |
Constructor.
|
virtual |
Destructor.
|
static |
Create or Initializes the GLProgram with a vertex and fragment with bytes array.
|
static |
Create or Initializes the GLProgram with a vertex and fragment with contents of filenames.
Uniform* getUniform | ( | const std::string & | name | ) |
Get the uniform or vertex attribute by string name in shader, return null if it does not exist.
void bindAttribLocation | ( | const std::string & | attributeName, |
GLuint | index | ||
) | const |
It will add a new attribute to the shader by calling glBindAttribLocation.
GLint getAttribLocation | ( | const std::string & | attributeName | ) | const |
Calls glGetAttribLocation.
GLint getUniformLocation | ( | const std::string & | attributeName | ) | const |
Calls glGetUniformLocation().
void updateUniforms | ( | ) |
It will create 4 uniforms:
And it will bind "GLProgram::UNIFORM_SAMPLER" to 0
GLint getUniformLocationForName | ( | const char * | name | ) | const |
calls retrieves the named uniform location for this 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 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 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 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 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 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 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
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
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
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
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 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 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 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 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 | ( | const Mat4 & | modelView | ) |
Update the builtin uniforms if they are different than the previous call for this same shader program.
modelView | modelView matrix applied to the built in uniform of the shader. |
|
static |
Built in shader for 2d.
Support Position, Texture and Color vertex attribute.
|
static |
Built in shader for 2d.
Support Position, Texture and Color vertex attribute, but without multiply vertex by MVP matrix.
|
static |
Built in shader for 2d.
Support Position, Texture vertex attribute, but include alpha test.
|
static |
Built in shader for 2d.
Support Position, Texture and Color vertex attribute, include alpha test and without multiply vertex by MVP matrix.
|
static |
Built in shader for 2d.
Support Position, Color vertex attribute.
|
static |
Built in shader for 2d.
Support Position, Color, Texture vertex attribute. texture coordinate will used as point size.
|
static |
Built in shader for 2d.
Support Position, Color vertex attribute, without multiply vertex by MVP matrix.
|
static |
Built in shader for 2d.
Support Position, Texture vertex attribute.
|
static |
Built in shader for 2d.
Support Position, Texture vertex attribute. with a specified uniform as color
|
static |
Built in shader for 2d.
Support Position, Texture and Color vertex attribute. but alpha will be the multiplication of color attribute and texture.
|
static |
Built in shader for 2d.
Support Position, with color specified by a uniform.
|
static |
Built in shader for draw a sector with 90 degrees with center at bottom left point.
|
static |
Built in shader for label and label with effects.
|
static |
Built in shader used for 3D, support Position vertex attribute, with color specified by a uniform.
|
static |
Built in shader used for 3D, support Position and Texture vertex attribute, with color specified by a uniform.
|
static |
Built in shader used for 3D, support Position and Normal vertex attribute, used in lighting.
with color specified by a uniform.
|
static |
Built in shader used for 3D, support Position, Normal, Texture vertex attribute, used in lighting.
with color specified by a uniform.
|
static |
Built in shader used for 3D, support Position(skeletal animation by hardware skin), Normal, Texture vertex attribute, used in lighting.
with color specified by a uniform.
|
static |
Ambient Color uniform.
|
static |
Projection Matrix uniform.
|
static |
Model view matrix uniform.
|
static |
Model view projection uniform.
|
static |
Normal matrix uniform.
|
static |
Time uniform.
|
static |
Sin time uniform.
|
static |
Cos time uniform.
|
static |
Random number uniform.
|
static |
Alpha test value uniform.
|
static |
Attribute color.
|
static |
Attribute position.
|
static |
Attribute Texcoord 0-3.
|
static |
Attribute normal.
|
static |
Attribute blend weight.
|
static |
Attribute blend index.