KarmaEngine
Game Engine for practical learning and research purposes
Loading...
Searching...
No Matches
Karma::OpenGLShader Class Reference

OpenGL variant of Karma's Shader. More...

#include <OpenGLShader.h>

Inheritance diagram for Karma::OpenGLShader:
Collaboration diagram for Karma::OpenGLShader:

Public Member Functions

 OpenGLShader (const std::string &vertexSrc, const std::string &fragmentSrc)
 A constructor.
 
 OpenGLShader (const std::string &vertexSrcFile, const std::string &fragmentSrcFile, std::shared_ptr< UniformBufferObject > ubo, const std::string &shaderName)
 Overloaded constructor.
 
virtual ~OpenGLShader () override
 Deletes the appropriate resources, no longer in use, and clean up.
 
virtual void Bind () const override
 Binds the shader and uniform. Seems legacy.
 
virtual void Bind (const std::string &texShaderName) const override
 Bind the shader and specified uniform.
 
virtual void UnBind () const override
 Unbind the shader.
 
void UploadUniformMat4 (const std::string &name, const glm::mat4 &matrix)
 A legacy uniform upload routine.
 
- Public Member Functions inherited from Karma::Shader
 Shader (std::shared_ptr< UniformBufferObject > ubo)
 A constructor.
 
virtual ~Shader ()=default
 Destructor.
 
std::shared_ptr< UniformBufferObjectGetUniformBufferObject () const
 Getter for uniform buffer object.
 
const std::string & GetShaderName () const
 Getter for shader name.
 

Additional Inherited Members

- Static Public Member Functions inherited from Karma::Shader
static ShaderCreate (const std::string &vertexSrc, const std::string &fragmentSrc)
 Instantiating shader object according to the programmer chosen API.
 
static ShaderCreate (const std::string &vertexSrcFile, const std::string &fragmentSrcFile, std::shared_ptr< UniformBufferObject > ubo, const std::string &shaderName="NoNamedShader")
 For instantiating shader object accodring to programer's chosen API.
 
- Protected Attributes inherited from Karma::Shader
std::string m_ShaderName
 

Detailed Description

OpenGL variant of Karma's Shader.

Since
Karma 1.0.0

Constructor & Destructor Documentation

◆ OpenGLShader() [1/2]

Karma::OpenGLShader::OpenGLShader ( const std::string & vertexSrc,
const std::string & fragmentSrc )

A constructor.

Creates Karma Shader using OpenGL API with given vertex shader and fragment shader source.

Parameters
vertexSrcThe source of vertex shader
fragmentSrcThe source of fragment shader
Note
The compilation and linking is done by OpenGL
Since
Karma 1.0.0

◆ OpenGLShader() [2/2]

Karma::OpenGLShader::OpenGLShader ( const std::string & vertexSrcFile,
const std::string & fragmentSrcFile,
std::shared_ptr< UniformBufferObject > ubo,
const std::string & shaderName )

Overloaded constructor.

Creates Karma Shader using OpenGL API with given vertex shader, fragment shader, uniform buffer, and shader name

Parameters
vertexScrFileThe source of vertex shader
fragmentScrFileThe source of fragment shader
uboThe list of uniform buffer objects
shaderNameThe name of the shader
Since
Karma 1.0.0

◆ ~OpenGLShader()

Karma::OpenGLShader::~OpenGLShader ( )
overridevirtual

Deletes the appropriate resources, no longer in use, and clean up.

Since
Karma 1.0.0

Member Function Documentation

◆ Bind() [1/2]

void Karma::OpenGLShader::Bind ( ) const
overridevirtual

Binds the shader and uniform. Seems legacy.

Todo
See to remove the "texSampler" and make generic
See also
Bind(const std::string& texShaderNames)
Since
Karma 1.0.0.

Reimplemented from Karma::Shader.

◆ Bind() [2/2]

void Karma::OpenGLShader::Bind ( const std::string & texShaderName) const
overridevirtual

Bind the shader and specified uniform.

Parameters
texShaderNameThe name of the uniform
Todo
Maybe make arrangements for list of uniforms and rename texShaderName
Since
Karma 1.0.0

Reimplemented from Karma::Shader.

◆ UnBind()

void Karma::OpenGLShader::UnBind ( ) const
overridevirtual

Unbind the shader.

Todo
Ponder about uniform unbinding
Since
Karma 1.0.0

Reimplemented from Karma::Shader.

◆ UploadUniformMat4()

void Karma::OpenGLShader::UploadUniformMat4 ( const std::string & name,
const glm::mat4 & matrix )

A legacy uniform upload routine.

Parameters
nameThe name of the uniform
matrixThe matrix with latest value entries
Since
Karma 1.0.0

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