class ffw::GLProgram
Class List > ffw :: GLProgram
An OpenGL shader program. More...
Public Functions
Type | Name |
---|---|
GLProgram () | |
GLProgram (const std::initializer_list< GLShader *> & shaders) | |
GLProgram (const GLProgram & other) = delete | |
GLProgram (GLProgram && other) | |
virtual | ~GLProgram () |
GLProgram & | operator= (const GLProgram & other) = delete |
GLProgram & | operator= (GLProgram && other) |
void | swap (GLProgram & other) |
void | attachShader (const GLShader & shader) |
void | linkProgram () |
void | destroy () |
GLint | getHandle () const |
bool | isCreated () const |
void | enableVertexAttribArray (GLint location) const Enables a vertex attrib array at a specific location. |
void | disableVertexAttribArray (GLint location) const Disables a vertex attrib array at a specific location. |
void | setAttributePointerf (GLint location, GLint size, GLsizei stride, const GLvoid * offset) const Specify the location and data format of the array of generic vertex attributes at a specific index. |
void | setAttributeDivisor (GLuint index, GLuint divisor) const Modify the rate at which generic vertex attributes advance during instanced rendering. |
void | drawArrays (unsigned int mode, int first, int count) const |
void | drawArraysInstanced (unsigned int mode, int first, int count, int instancecount) const |
void | drawElements (unsigned int mode, int count, unsigned int type, const void * indices) const |
void | drawElementsRange (unsigned int mode, unsigned int start, unsigned int end, int count, unsigned int type, const void * indices) const |
void | drawElementsInstanced (unsigned int mode, int count, unsigned int type, const void * indices, int instancecount) const |
void | bind () const |
void | unbind () const |
int | getUniformLocation (const char * name) const |
int | getAttributeLocation (const char * name) const |
void | setUniform1f (int location, float value) const |
void | setUniform1fv (int location, const float * array, int length) const |
void | setUniform1i (int location, int value) const |
void | setUniform1iv (int location, const int * array, int length) const |
void | setUniform2f (int location, float x, float y) const |
void | setUniform2fv (int location, const float * array, int length) const |
void | setUniform2i (int location, int x, int y) const |
void | setUniform2iv (int location, const int * array, int length) const |
void | setUniform3f (int location, float x, float y, float z) const |
void | setUniform3fv (int location, const float * array, int length) const |
void | setUniform3i (int location, int x, int y, int z) const |
void | setUniform3iv (int location, const int * array, int length) const |
void | setUniform4f (int location, float x, float y, float z, float w) const |
void | setUniform4fv (int location, const float * array, int length) const |
void | setUniform4i (int location, int x, int y, int z, int w) const |
void | setUniform4iv (int location, const int * array, int length) const |
void | setUniformMatrix2fv (int location, const float * mat, int length) const |
void | setUniformMatrix3fv (int location, const float * mat, int length) const |
void | setUniformMatrix4fv (int location, const float * mat, int length) const |
void | setUniform2f (int location, const ffw::Vec2f & vec) const |
void | setUniform2fv (int location, const ffw::Vec2f * array, int length) const |
void | setUniform2i (int location, const ffw::Vec2i & vec) const |
void | setUniform2iv (int location, const ffw::Vec2i * array, int length) const |
void | setUniform3f (int location, const ffw::Vec3f & vec) const |
void | setUniform3fv (int location, const ffw::Vec3f * array, int length) const |
void | setUniform3i (int location, const ffw::Vec3i & vec) const |
void | setUniform3iv (int location, const ffw::Vec3i * array, int length) const |
void | setUniform4f (int location, const ffw::Vec4f & vec) const |
void | setUniform4fv (int location, const ffw::Vec4f * array, int length) const |
void | setUniform4i (int location, const ffw::Vec4i & vec) const |
void | setUniform4iv (int location, const ffw::Vec4i * array, int length) const |
void | setUniform4f (int location, const Color & color) const |
void | setUniform4fv (int location, const Color * colors, int length) const |
void | setUniformMatrix3fv (int location, const Mat3x3f * mat, int length) const |
void | setUniformMatrix4fv (int location, const Mat4x4f * mat, int length) const |
Detailed Description
This does not create the shaders. You will have to create the shaders using ffw::GLShader and then add them to this ffw::GLProgram! An example code below:
// Somewhere in your chode
ffw::GLProgram program;
ffw::GLShader vertShader;
ffw::GLShader fragShader;
// Initialization (run this only once)
try {
// Compiles the shaders
vertShader = ffw::GLShader(GL_VERTEX_SHADER, ...shader code here as string...);
fragShader = ffw::GLShader(GL_FRAGMENT_SHADER, ...shader code here as string...);
// Links the two shaders into one program
program = ffw::GLProgram({ &vertShader, &fragShader });
} catch (ffw::GLException& e) {
std::cerr << "Something went wrong: " << e.what() << std::endl;
}
// Rendering
while(true) {
// Begin our shader program
program.bind();
// Bind VBOs, VAos, etc...
// Bind uniforms, attributes...
program.setUniformMatrix4fv(
boxProgram.getUniformLocation("model"), &matrix[0], 1);
// Draw the vertices using VBO
program.drawArrays(GL_TRIANGLES, 0, 24);
// Stops the shader program
program.unbind();
}
Public Functions Documentation
function GLProgram (1/4)
ffw::GLProgram::GLProgram ()
function GLProgram (2/4)
ffw::GLProgram::GLProgram (
const std::initializer_list< GLShader *> & shaders
)
function GLProgram (3/4)
ffw::GLProgram::GLProgram (
const GLProgram & other
) = delete
function GLProgram (4/4)
ffw::GLProgram::GLProgram (
GLProgram && other
)
function ~GLProgram
virtual ffw::GLProgram::~GLProgram ()
function operator= (1/2)
GLProgram & ffw::GLProgram::operator= (
const GLProgram & other
) = delete
function operator= (2/2)
GLProgram & ffw::GLProgram::operator= (
GLProgram && other
)
function swap
void ffw::GLProgram::swap (
GLProgram & other
)
function attachShader
void ffw::GLProgram::attachShader (
const GLShader & shader
)
function linkProgram
void ffw::GLProgram::linkProgram ()
function destroy
void ffw::GLProgram::destroy ()
function getHandle
GLint ffw::GLProgram::getHandle () const
function isCreated
bool ffw::GLProgram::isCreated () const
function enableVertexAttribArray
void ffw::GLProgram::enableVertexAttribArray (
GLint location
) const
Enables a vertex attrib array at a specific location.
Note:
This method is being called by setAttributePointerf
function disableVertexAttribArray
void ffw::GLProgram::disableVertexAttribArray (
GLint location
) const
Disables a vertex attrib array at a specific location.
function setAttributePointerf
void ffw::GLProgram::setAttributePointerf (
GLint location,
GLint size,
GLsizei stride,
const GLvoid * offset
) const
Specify the location and data format of the array of generic vertex attributes at a specific index.
Note:
This automatically calls enableVertexAttribArray with the location
function setAttributeDivisor
void ffw::GLProgram::setAttributeDivisor (
GLuint index,
GLuint divisor
) const
Modify the rate at which generic vertex attributes advance during instanced rendering.
function drawArrays
void ffw::GLProgram::drawArrays (
unsigned int mode,
int first,
int count
) const
function drawArraysInstanced
void ffw::GLProgram::drawArraysInstanced (
unsigned int mode,
int first,
int count,
int instancecount
) const
function drawElements
void ffw::GLProgram::drawElements (
unsigned int mode,
int count,
unsigned int type,
const void * indices
) const
function drawElementsRange
void ffw::GLProgram::drawElementsRange (
unsigned int mode,
unsigned int start,
unsigned int end,
int count,
unsigned int type,
const void * indices
) const
function drawElementsInstanced
void ffw::GLProgram::drawElementsInstanced (
unsigned int mode,
int count,
unsigned int type,
const void * indices,
int instancecount
) const
function bind
void ffw::GLProgram::bind () const
function unbind
void ffw::GLProgram::unbind () const
function getUniformLocation
int ffw::GLProgram::getUniformLocation (
const char * name
) const
function getAttributeLocation
int ffw::GLProgram::getAttributeLocation (
const char * name
) const
function setUniform1f
void ffw::GLProgram::setUniform1f (
int location,
float value
) const
function setUniform1fv
void ffw::GLProgram::setUniform1fv (
int location,
const float * array,
int length
) const
function setUniform1i
void ffw::GLProgram::setUniform1i (
int location,
int value
) const
function setUniform1iv
void ffw::GLProgram::setUniform1iv (
int location,
const int * array,
int length
) const
function setUniform2f (1/2)
void ffw::GLProgram::setUniform2f (
int location,
float x,
float y
) const
function setUniform2fv (1/2)
void ffw::GLProgram::setUniform2fv (
int location,
const float * array,
int length
) const
function setUniform2i (1/2)
void ffw::GLProgram::setUniform2i (
int location,
int x,
int y
) const
function setUniform2iv (1/2)
void ffw::GLProgram::setUniform2iv (
int location,
const int * array,
int length
) const
function setUniform3f (1/2)
void ffw::GLProgram::setUniform3f (
int location,
float x,
float y,
float z
) const
function setUniform3fv (1/2)
void ffw::GLProgram::setUniform3fv (
int location,
const float * array,
int length
) const
function setUniform3i (1/2)
void ffw::GLProgram::setUniform3i (
int location,
int x,
int y,
int z
) const
function setUniform3iv (1/2)
void ffw::GLProgram::setUniform3iv (
int location,
const int * array,
int length
) const
function setUniform4f (1/3)
void ffw::GLProgram::setUniform4f (
int location,
float x,
float y,
float z,
float w
) const
function setUniform4fv (1/3)
void ffw::GLProgram::setUniform4fv (
int location,
const float * array,
int length
) const
function setUniform4i (1/2)
void ffw::GLProgram::setUniform4i (
int location,
int x,
int y,
int z,
int w
) const
function setUniform4iv (1/2)
void ffw::GLProgram::setUniform4iv (
int location,
const int * array,
int length
) const
function setUniformMatrix2fv
void ffw::GLProgram::setUniformMatrix2fv (
int location,
const float * mat,
int length
) const
function setUniformMatrix3fv (1/2)
void ffw::GLProgram::setUniformMatrix3fv (
int location,
const float * mat,
int length
) const
function setUniformMatrix4fv (1/2)
void ffw::GLProgram::setUniformMatrix4fv (
int location,
const float * mat,
int length
) const
function setUniform2f (2/2)
void ffw::GLProgram::setUniform2f (
int location,
const ffw::Vec2f & vec
) const
function setUniform2fv (2/2)
void ffw::GLProgram::setUniform2fv (
int location,
const ffw::Vec2f * array,
int length
) const
function setUniform2i (2/2)
void ffw::GLProgram::setUniform2i (
int location,
const ffw::Vec2i & vec
) const
function setUniform2iv (2/2)
void ffw::GLProgram::setUniform2iv (
int location,
const ffw::Vec2i * array,
int length
) const
function setUniform3f (2/2)
void ffw::GLProgram::setUniform3f (
int location,
const ffw::Vec3f & vec
) const
function setUniform3fv (2/2)
void ffw::GLProgram::setUniform3fv (
int location,
const ffw::Vec3f * array,
int length
) const
function setUniform3i (2/2)
void ffw::GLProgram::setUniform3i (
int location,
const ffw::Vec3i & vec
) const
function setUniform3iv (2/2)
void ffw::GLProgram::setUniform3iv (
int location,
const ffw::Vec3i * array,
int length
) const
function setUniform4f (2/3)
void ffw::GLProgram::setUniform4f (
int location,
const ffw::Vec4f & vec
) const
function setUniform4fv (2/3)
void ffw::GLProgram::setUniform4fv (
int location,
const ffw::Vec4f * array,
int length
) const
function setUniform4i (2/2)
void ffw::GLProgram::setUniform4i (
int location,
const ffw::Vec4i & vec
) const
function setUniform4iv (2/2)
void ffw::GLProgram::setUniform4iv (
int location,
const ffw::Vec4i * array,
int length
) const
function setUniform4f (3/3)
void ffw::GLProgram::setUniform4f (
int location,
const Color & color
) const
function setUniform4fv (3/3)
void ffw::GLProgram::setUniform4fv (
int location,
const Color * colors,
int length
) const
function setUniformMatrix3fv (2/2)
void ffw::GLProgram::setUniformMatrix3fv (
int location,
const Mat3x3f * mat,
int length
) const
function setUniformMatrix4fv (2/2)
void ffw::GLProgram::setUniformMatrix4fv (
int location,
const Mat4x4f * mat,
int length
) const
The documentation for this class was generated from the following file: include/ffw/graphics/glprogram.h