49 virtual const char*
what()
const throw() {
50 return whatStr.c_str();
77 const std::vector<std::string>& gs = std::vector<std::string>());
85 const std::vector<std::string>& gs = std::vector<std::string>());
127 void setUniform(
const std::string&
id,
float value)
const;
131 void setUniform(
const std::string&
id,
int value)
const;
133 void setUniform(
const std::string&
id,
const Mat4& value,
bool transpose=
false)
const;
136#ifndef __EMSCRIPTEN__
163 void setUniform(GLint
id,
const Mat4& value,
bool transpose=
false)
const;
165 void setUniform(GLint
id,
const std::vector<float>& value)
const;
166 void setUniform(GLint
id,
const std::vector<Vec2>& value)
const;
167 void setUniform(GLint
id,
const std::vector<Vec3>& value)
const;
168 void setUniform(GLint
id,
const std::vector<Vec4>& value)
const;
169 void setUniform(GLint
id,
const std::vector<int>& value)
const;
170 void setUniform(GLint
id,
const std::vector<Vec2i>& value)
const;
171 void setUniform(GLint
id,
const std::vector<Vec3i>& value)
const;
172 void setUniform(GLint
id,
const std::vector<Vec4i>& value)
const;
173 void setUniform(GLint
id,
const std::vector<Mat4>& value,
bool transpose=
false)
const;
176#ifndef __EMSCRIPTEN__
190#ifndef __EMSCRIPTEN__
205 GLuint glVertexShader;
206 GLuint glFragmentShader;
207 GLuint glGeometryShader;
210 std::vector<std::string> vertexShaderStrings;
211 std::vector<std::string> fragmentShaderStrings;
212 std::vector<std::string> geometryShaderStrings;
215 static std::string loadFile(
const std::string& filename);
218 static GLuint createShader(GLenum type,
const GLchar** src, GLsizei count);
221 GLProgram(std::vector<std::string> vertexShaderStrings, std::vector<std::string> fragmentShaderStrings, std::vector<std::string> geometryShaderStrings);
224 void programFromVectors(std::vector<std::string> vs, std::vector<std::string> fs, std::vector<std::string> gs);
RAII wrapper for a 2D OpenGL depth texture with compare mode enabled.
Thin RAII wrapper for an OpenGL 1D texture.
RAII wrapper for an OpenGL 2D texture with byte/half/float upload helpers.
RAII wrapper for an OpenGL 3D texture with byte/float upload helpers.
RAII wrapper for an OpenGL cube map texture with byte/half/float uploads.
4×4 matrix template for 3D transformations, projections, and stereo sets.
Mat4t< float > Mat4
Single-precision 4×4 matrix.
Definition Mat4.h:567
2D vector template with arithmetic, length utilities, and helpers.
Vec2t< float > Vec2
Float vector (x,y).
Definition Vec2.h:258
Vec2t< int32_t > Vec2i
32-bit signed integer vector (x,y).
Definition Vec2.h:260
3D vector template with arithmetic, geometry helpers, and RNG utilities.
Vec3t< int32_t > Vec3i
3D 32-bit signed integer vector (x,y,z).
Definition Vec3.h:426
Vec3t< float > Vec3
3D float vector (x,y,z).
Definition Vec3.h:424
4D vector template with arithmetic, length helpers, and utilities.
Vec4t< int32_t > Vec4i
4D 32-bit signed integer vector (x,y,z,w).
Definition Vec4.h:339
Vec4t< float > Vec4
4D float vector (x,y,z,w).
Definition Vec4.h:337
Definition GLDepthTexture.h:19
void setTexture(const std::string &id, const GLDepthTexture &texture, GLenum unit=0) const
Definition GLProgram.cpp:302
void disable() const
Unbind any program (glUseProgram(0)).
Definition GLProgram.cpp:111
static GLProgram createFromFile(const std::string &vs, const std::string &fs, const std::string &gs="")
Convenience overload for a single file per stage.
Definition GLProgram.cpp:70
void setUniform(const std::string &id, float value) const
Definition GLProgram.cpp:269
void enable() const
Bind this program for subsequent draw calls (glUseProgram).
Definition GLProgram.cpp:107
GLProgram(const GLProgram &other)
Copy‑construct a new program with duplicated shaders and linkage.
Definition GLProgram.cpp:8
void unsetTexture2D(GLenum unit) const
Unbind any 2D texture from texture unit unit.
Definition GLProgram.cpp:229
GLint getUniformLocation(const std::string &id) const
Query a uniform location by name.
Definition GLProgram.cpp:99
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.
Definition GLProgram.cpp:66
static GLProgram createFromString(const std::string &vs, const std::string &fs, const std::string &gs="")
Convenience overload for a single source string per stage.
Definition GLProgram.cpp:74
GLProgram & operator=(const GLProgram &other)
Copy‑assign, releasing current GL objects and recreating from other.
Definition GLProgram.cpp:13
void unsetTexture1D(GLenum unit) const
Unbind any 1D texture from texture unit unit.
Definition GLProgram.cpp:223
void unsetTexture3D(GLenum unit) const
Unbind any 3D texture from texture unit unit.
Definition GLProgram.cpp:234
GLint getAttributeLocation(const std::string &id) const
Query an attribute location by name.
Definition GLProgram.cpp:91
~GLProgram()
Destroy and delete owned GL shader objects and program.
Definition GLProgram.cpp:42
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.
Definition GLProgram.cpp:49
Definition GLTexture1D.h:16
Definition GLTexture2D.h:19
Definition GLTexture3D.h:18
OpenGL cube map texture (6 faces) with convenience upload helpers.
Definition GLTextureCube.h:31
ProgramException(const std::string &whatStr)
Construct with an explanatory message.
Definition GLProgram.h:45
virtual const char * what() const
Retrieve the explanatory C‑string.
Definition GLProgram.h:49