redhand::shader class

This class provides a simple abstraction for opengl shaders.

To render anything on a screen a shader is needed to transform the supplied data into actual pixels that you will see on the screen.

Constructors, destructors, conversion operators

shader()
This constructor creates a shader with the default vector and fragment shaders named "default".
~shader()
Destroy the shader object and delete the shader program.
shader(std::string_view name)
This constructor creates a shader with a given name.

Public functions

auto createShaderFromFile(std::string_view vertexPath, std::string_view fragmentPath) -> int
Create a Shader From a file.
auto createShaderFromCode(std::string_view vertexSource, std::string_view fragmentSource) -> int
Create a Shader From source Code.
auto createDefaultShader() -> int
Initilizes the shader object with the default shader.
auto hasErrored() -> bool
This function returns true if an error happend during the setup of the shader or the shader is not initilized.
void use()
This function activates the shader and sets the camera position.
auto getName() -> std::string_view
This function return the name the shader has.
auto getID() -> unsigned int
This function returns the ID of the shader for the use in some OpenGL functions.
void setBool(const std::string& name, bool value) const
The setBool functions set a uniform vector of the shader to given values.
void setBool(const std::string& name, bool value, bool value2) const
The setBool functions set a uniform vector of the shader to given values.
void setBool(const std::string& name, bool value, bool value2, bool value3) const
The setBool functions set a uniform vector of the shader to given values.
void setBool(const std::string& name, bool value, bool value2, bool value3, bool value4) const
The setBool functions set a uniform vector of the shader to given values.
void setInt(const std::string& name, int value) const
The setInt functions set a uniform vector of the shader to given values.
void setInt(const std::string& name, int value, int value2) const
The setInt functions set a uniform vector of the shader to given values.
void setInt(const std::string& name, int value, int value2, int value3) const
The setInt functions set a uniform vector of the shader to given values.
void setInt(const std::string& name, int value, int value2, int value3, int value4) const
The setInt functions set a uniform vector of the shader to given values.
void setFloat(const std::string& name, float value) const
The setFloat functions set a uniform vector of the shader to given values.
void setFloat(const std::string& name, float value, float value2) const
The setFloat functions set a uniform vector of the shader to given values.
void setFloat(const std::string& name, float value, float value2, float value3) const
The setFloat functions set a uniform vector of the shader to given values.
void setFloat(const std::string& name, float value, float value2, float value3, float value4) const
The setFloat functions set a uniform vector of the shader to given values.
void getFloat(const std::string& name, float dest[]) const
This function gets a uniform float from an uniform vector and saves it to the destination.
void setCamera(float pos_x, float pos_y)
This function is used to set the position of the camera.
void moveCamera(float delta_pos_x, float delta_pos_y)
This function is used to set the position of the camera.
void setProjectionmatrix(glm::mat4 projection)
This function sets the projection matrix of the shader to the given matrix.
void setTextureScale(glm::vec2 scale)
This function sets the texture scale of the shader to the given vector.

Function documentation

redhand::shader::shader(std::string_view name)

This constructor creates a shader with a given name.

Parameters
name The name of the Shader

The default vertex and fragment shaders from the shaderSource.hpp will be used.

int redhand::shader::createShaderFromFile(std::string_view vertexPath, std::string_view fragmentPath)

Create a Shader From a file.

Parameters
vertexPath The location of the vertex Shader
fragmentPath The location of the Fragment Shader
Returns int negative if something went wrong

int redhand::shader::createShaderFromCode(std::string_view vertexSource, std::string_view fragmentSource)

Create a Shader From source Code.

Parameters
vertexSource The source code of the vertex shader
fragmentSource The source code of the fragment shader
Returns int

int redhand::shader::createDefaultShader()

Initilizes the shader object with the default shader.

Returns int negative value if anything went wrong

std::string_view redhand::shader::getName()

This function return the name the shader has.

It will be "shader" if nothing else was specified.

void redhand::shader::setBool(const std::string& name, bool value) const

The setBool functions set a uniform vector of the shader to given values.

Parameters
name The name of the uniform variable
value The x component of the Vector

void redhand::shader::setBool(const std::string& name, bool value, bool value2) const

The setBool functions set a uniform vector of the shader to given values.

Parameters
name The name of the uniform variable
value The x component of the Vector
value2 The y component of the Vector

void redhand::shader::setBool(const std::string& name, bool value, bool value2, bool value3) const

The setBool functions set a uniform vector of the shader to given values.

Parameters
name The name of the uniform variable
value The x component of the Vector
value2 The y component of the Vector
value3 The z component of the Vector

void redhand::shader::setBool(const std::string& name, bool value, bool value2, bool value3, bool value4) const

The setBool functions set a uniform vector of the shader to given values.

Parameters
name The name of the uniform variable
value The x component of the Vector
value2 The y component of the Vector
value3 The z component of the Vector
value4 The w component of the Vector

void redhand::shader::setInt(const std::string& name, int value) const

The setInt functions set a uniform vector of the shader to given values.

Parameters
name The name of the uniform variable
value The x component of the Vector

void redhand::shader::setInt(const std::string& name, int value, int value2) const

The setInt functions set a uniform vector of the shader to given values.

Parameters
name The name of the uniform variable
value The x component of the Vector
value2 The y component of the Vector

void redhand::shader::setInt(const std::string& name, int value, int value2, int value3) const

The setInt functions set a uniform vector of the shader to given values.

Parameters
name The name of the uniform variable
value The x component of the Vector
value2 The y component of the Vector
value3 The z component of the Vector

void redhand::shader::setInt(const std::string& name, int value, int value2, int value3, int value4) const

The setInt functions set a uniform vector of the shader to given values.

Parameters
name The name of the uniform variable
value The x component of the Vector
value2 The y component of the Vector
value3 The z component of the Vector
value4 The w component of the Vector

void redhand::shader::setFloat(const std::string& name, float value) const

The setFloat functions set a uniform vector of the shader to given values.

Parameters
name The name of the uniform variable
value The x component of the Vector

void redhand::shader::setFloat(const std::string& name, float value, float value2) const

The setFloat functions set a uniform vector of the shader to given values.

Parameters
name The name of the uniform variable
value The x component of the Vector
value2 The y component of the Vector

void redhand::shader::setFloat(const std::string& name, float value, float value2, float value3) const

The setFloat functions set a uniform vector of the shader to given values.

Parameters
name The name of the uniform variable
value The x component of the Vector
value2 The y component of the Vector
value3 The z component of the Vector

void redhand::shader::setFloat(const std::string& name, float value, float value2, float value3, float value4) const

The setFloat functions set a uniform vector of the shader to given values.

Parameters
name The name of the uniform variable
value The x component of the Vector
value2 The y component of the Vector
value3 The z component of the Vector
value4 The w component of the Vector

void redhand::shader::getFloat(const std::string& name, float dest[]) const

This function gets a uniform float from an uniform vector and saves it to the destination.

Parameters
name The name of the uniform variable
dest The array where the contents of the variables will be saved to

void redhand::shader::setCamera(float pos_x, float pos_y)

This function is used to set the position of the camera.

Parameters
pos_x The x coordinate of the camera
pos_y The y coordinate of the camera

All units are in world space cooridinates.

void redhand::shader::moveCamera(float delta_pos_x, float delta_pos_y)

This function is used to set the position of the camera.

Parameters
delta_pos_x The amount the camera should move along the x-Axis
delta_pos_y The amount the camera should move along the y-Axis

All units are in world space cooridinates

void redhand::shader::setProjectionmatrix(glm::mat4 projection)

This function sets the projection matrix of the shader to the given matrix.

Parameters
projection the projection matrix which should be used

void redhand::shader::setTextureScale(glm::vec2 scale)

This function sets the texture scale of the shader to the given vector.

Parameters
scale the texture scale which should be used