CGVIS Utils
Loading...
Searching...
No Matches
GLProgram Class Reference

OpenGL shader program with helpers for creation and data binding. More...

#include <GLProgram.h>

Public Member Functions

 ~GLProgram ()
 Destroy and delete owned GL shader objects and program.
 GLProgram (const GLProgram &other)
 Copy‑construct a new program with duplicated shaders and linkage.
GLProgram & operator= (const GLProgram &other)
 Copy‑assign, releasing current GL objects and recreating from other.
void unsetTexture1D (GLenum unit) const
 Unbind any 1D texture from texture unit unit.
void unsetTexture2D (GLenum unit) const
 Unbind any 2D texture from texture unit unit.
void unsetTexture3D (GLenum unit) const
 Unbind any 3D texture from texture unit unit.
void enable () const
 Bind this program for subsequent draw calls (glUseProgram).
void disable () const
 Unbind any program (glUseProgram(0)).
Introspection
GLint getAttributeLocation (const std::string &id) const
 Query an attribute location by name.
GLint getUniformLocation (const std::string &id) const
 Query a uniform location by name.
Uniform setters (by name)

Upload scalar, vector, and matrix values.

void setUniform (const std::string &id, float value) const
void setUniform (const std::string &id, const Vec2 &value) const
void setUniform (const std::string &id, const Vec3 &value) const
void setUniform (const std::string &id, const Vec4 &value) const
void setUniform (const std::string &id, int value) const
void setUniform (const std::string &id, const Vec2i &value) const
void setUniform (const std::string &id, const Mat4 &value, bool transpose=false) const
Texture setters (by name)
void setTexture (const std::string &id, const GLDepthTexture &texture, GLenum unit=0) const
void setTexture (const std::string &id, const GLTexture1D &texture, GLenum unit=0) const
void setTexture (const std::string &id, const GLTextureCube &texture, GLenum unit=0) const
void setTexture (const std::string &id, const GLTexture2D &texture, GLenum unit=0) const
void setTexture (const std::string &id, const GLTexture3D &texture, GLenum unit=0) const
Uniform setters (by location)

Upload scalar, vector, matrix values and arrays using a known location.

void setUniform (GLint id, float value) const
void setUniform (GLint id, const Vec2 &value) const
void setUniform (GLint id, const Vec3 &value) const
void setUniform (GLint id, const Vec4 &value) const
void setUniform (GLint id, int value) const
void setUniform (GLint id, const Vec2i &value) const
void setUniform (GLint id, const Vec3i &value) const
void setUniform (GLint id, const Vec4i &value) const
void setUniform (GLint id, const Mat4 &value, bool transpose=false) const
void setUniform (GLint id, const std::vector< float > &value) const
void setUniform (GLint id, const std::vector< Vec2 > &value) const
void setUniform (GLint id, const std::vector< Vec3 > &value) const
void setUniform (GLint id, const std::vector< Vec4 > &value) const
void setUniform (GLint id, const std::vector< int > &value) const
void setUniform (GLint id, const std::vector< Vec2i > &value) const
void setUniform (GLint id, const std::vector< Vec3i > &value) const
void setUniform (GLint id, const std::vector< Vec4i > &value) const
void setUniform (GLint id, const std::vector< Mat4 > &value, bool transpose=false) const
Texture setters (by location)
void setTexture (GLint id, const GLTexture1D &texture, GLenum unit=0) const
void setTexture (GLint id, const GLDepthTexture &texture, GLenum unit=0) const
void setTexture (GLint id, const GLTextureCube &texture, GLenum unit=0) const
void setTexture (GLint id, const GLTexture2D &texture, GLenum unit=0) const
void setTexture (GLint id, const GLTexture3D &texture, GLenum unit=0) const

Static Public Member Functions

Factory helpers

Create a program from multiple shader sources (files or strings).

static GLProgram createFromFiles (const std::vector< std::string > &vs, const std::vector< std::string > &fs, const std::vector< std::string > &gs=std::vector< std::string >())
 Build from lists of filenames per stage.
static GLProgram createFromStrings (const std::vector< std::string > &vs, const std::vector< std::string > &fs, const std::vector< std::string > &gs=std::vector< std::string >())
 Build directly from in‑memory source strings per stage.
static GLProgram createFromFile (const std::string &vs, const std::string &fs, const std::string &gs="")
 Convenience overload for a single file per stage.
static GLProgram createFromString (const std::string &vs, const std::string &fs, const std::string &gs="")
 Convenience overload for a single source string per stage.

Detailed Description

OpenGL shader program with helpers for creation and data binding.

Constructor & Destructor Documentation

◆ ~GLProgram()

GLProgram::~GLProgram ( )

Destroy and delete owned GL shader objects and program.

◆ GLProgram()

GLProgram::GLProgram ( const GLProgram & other)

Copy‑construct a new program with duplicated shaders and linkage.

Here is the call graph for this function:
Here is the caller graph for this function:

Member Function Documentation

◆ createFromFile()

GLProgram GLProgram::createFromFile ( const std::string & vs,
const std::string & fs,
const std::string & gs = "" )
static

Convenience overload for a single file per stage.

Here is the call graph for this function:

◆ createFromFiles()

GLProgram GLProgram::createFromFiles ( const std::vector< std::string > & vs,
const std::vector< std::string > & fs,
const std::vector< std::string > & gs = std::vector<std::string>() )
static

Build from lists of filenames per stage.

Parameters
vsVertex shader files (each is a full shader or snippet).
fsFragment shader files.
gsGeometry shader files (optional; may contain empty strings).
Exceptions
ProgramExceptionon file read errors.
Here is the call graph for this function:
Here is the caller graph for this function:

◆ createFromString()

GLProgram GLProgram::createFromString ( const std::string & vs,
const std::string & fs,
const std::string & gs = "" )
static

Convenience overload for a single source string per stage.

Here is the call graph for this function:

◆ createFromStrings()

GLProgram GLProgram::createFromStrings ( const std::vector< std::string > & vs,
const std::vector< std::string > & fs,
const std::vector< std::string > & gs = std::vector<std::string>() )
static

Build directly from in‑memory source strings per stage.

Parameters
vsVertex shader source strings.
fsFragment shader source strings.
gsGeometry shader source strings (optional; empty strings ignored).
Here is the call graph for this function:
Here is the caller graph for this function:

◆ disable()

void GLProgram::disable ( ) const

Unbind any program (glUseProgram(0)).

◆ enable()

void GLProgram::enable ( ) const

Bind this program for subsequent draw calls (glUseProgram).

Here is the caller graph for this function:

◆ getAttributeLocation()

GLint GLProgram::getAttributeLocation ( const std::string & id) const

Query an attribute location by name.

Parameters
idAttribute identifier in the shader.
Returns
Location index (>=0) or throws if not found.
Exceptions
ProgramExceptionwhen the attribute cannot be located.
Here is the call graph for this function:
Here is the caller graph for this function:

◆ getUniformLocation()

GLint GLProgram::getUniformLocation ( const std::string & id) const

Query a uniform location by name.

Parameters
idUniform identifier in the shader.
Returns
Location index (>=0) or throws if not found.
Exceptions
ProgramExceptionwhen the uniform cannot be located.
Here is the call graph for this function:
Here is the caller graph for this function:

◆ operator=()

GLProgram & GLProgram::operator= ( const GLProgram & other)

Copy‑assign, releasing current GL objects and recreating from other.

Here is the call graph for this function:

◆ setTexture() [1/10]

void GLProgram::setTexture ( const std::string & id,
const GLDepthTexture & texture,
GLenum unit = 0 ) const
Here is the call graph for this function:
Here is the caller graph for this function:

◆ setTexture() [2/10]

void GLProgram::setTexture ( const std::string & id,
const GLTexture1D & texture,
GLenum unit = 0 ) const
Here is the call graph for this function:

◆ setTexture() [3/10]

void GLProgram::setTexture ( const std::string & id,
const GLTexture2D & texture,
GLenum unit = 0 ) const
Here is the call graph for this function:

◆ setTexture() [4/10]

void GLProgram::setTexture ( const std::string & id,
const GLTexture3D & texture,
GLenum unit = 0 ) const
Here is the call graph for this function:

◆ setTexture() [5/10]

void GLProgram::setTexture ( const std::string & id,
const GLTextureCube & texture,
GLenum unit = 0 ) const
Here is the call graph for this function:

◆ setTexture() [6/10]

void GLProgram::setTexture ( GLint id,
const GLDepthTexture & texture,
GLenum unit = 0 ) const
Here is the call graph for this function:

◆ setTexture() [7/10]

void GLProgram::setTexture ( GLint id,
const GLTexture1D & texture,
GLenum unit = 0 ) const
Here is the call graph for this function:

◆ setTexture() [8/10]

void GLProgram::setTexture ( GLint id,
const GLTexture2D & texture,
GLenum unit = 0 ) const
Here is the call graph for this function:

◆ setTexture() [9/10]

void GLProgram::setTexture ( GLint id,
const GLTexture3D & texture,
GLenum unit = 0 ) const
Here is the call graph for this function:

◆ setTexture() [10/10]

void GLProgram::setTexture ( GLint id,
const GLTextureCube & texture,
GLenum unit = 0 ) const
Here is the call graph for this function:

◆ setUniform() [1/25]

void GLProgram::setUniform ( const std::string & id,
const Mat4 & value,
bool transpose = false ) const
Here is the call graph for this function:

◆ setUniform() [2/25]

void GLProgram::setUniform ( const std::string & id,
const Vec2 & value ) const
Here is the call graph for this function:

◆ setUniform() [3/25]

void GLProgram::setUniform ( const std::string & id,
const Vec2i & value ) const
Here is the call graph for this function:

◆ setUniform() [4/25]

void GLProgram::setUniform ( const std::string & id,
const Vec3 & value ) const
Here is the call graph for this function:

◆ setUniform() [5/25]

void GLProgram::setUniform ( const std::string & id,
const Vec4 & value ) const
Here is the call graph for this function:

◆ setUniform() [6/25]

void GLProgram::setUniform ( const std::string & id,
float value ) const
Here is the call graph for this function:
Here is the caller graph for this function:

◆ setUniform() [7/25]

void GLProgram::setUniform ( const std::string & id,
int value ) const
Here is the call graph for this function:

◆ setUniform() [8/25]

void GLProgram::setUniform ( GLint id,
const Mat4 & value,
bool transpose = false ) const

◆ setUniform() [9/25]

void GLProgram::setUniform ( GLint id,
const std::vector< float > & value ) const

◆ setUniform() [10/25]

void GLProgram::setUniform ( GLint id,
const std::vector< int > & value ) const

◆ setUniform() [11/25]

void GLProgram::setUniform ( GLint id,
const std::vector< Mat4 > & value,
bool transpose = false ) const

◆ setUniform() [12/25]

void GLProgram::setUniform ( GLint id,
const std::vector< Vec2 > & value ) const

◆ setUniform() [13/25]

void GLProgram::setUniform ( GLint id,
const std::vector< Vec2i > & value ) const

◆ setUniform() [14/25]

void GLProgram::setUniform ( GLint id,
const std::vector< Vec3 > & value ) const

◆ setUniform() [15/25]

void GLProgram::setUniform ( GLint id,
const std::vector< Vec3i > & value ) const

◆ setUniform() [16/25]

void GLProgram::setUniform ( GLint id,
const std::vector< Vec4 > & value ) const

◆ setUniform() [17/25]

void GLProgram::setUniform ( GLint id,
const std::vector< Vec4i > & value ) const

◆ setUniform() [18/25]

void GLProgram::setUniform ( GLint id,
const Vec2 & value ) const

◆ setUniform() [19/25]

void GLProgram::setUniform ( GLint id,
const Vec2i & value ) const

◆ setUniform() [20/25]

void GLProgram::setUniform ( GLint id,
const Vec3 & value ) const

◆ setUniform() [21/25]

void GLProgram::setUniform ( GLint id,
const Vec3i & value ) const

◆ setUniform() [22/25]

void GLProgram::setUniform ( GLint id,
const Vec4 & value ) const

◆ setUniform() [23/25]

void GLProgram::setUniform ( GLint id,
const Vec4i & value ) const

◆ setUniform() [24/25]

void GLProgram::setUniform ( GLint id,
float value ) const

◆ setUniform() [25/25]

void GLProgram::setUniform ( GLint id,
int value ) const

◆ unsetTexture1D()

void GLProgram::unsetTexture1D ( GLenum unit) const

Unbind any 1D texture from texture unit unit.

◆ unsetTexture2D()

void GLProgram::unsetTexture2D ( GLenum unit) const

Unbind any 2D texture from texture unit unit.

◆ unsetTexture3D()

void GLProgram::unsetTexture3D ( GLenum unit) const

Unbind any 3D texture from texture unit unit.


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