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

Base class of vertex + fragment shaders (for Vulkan and OpenGL) More...

#include <Shader.h>

Inheritance diagram for Karma::Shader:

Public Member Functions

 Shader (std::shared_ptr< UniformBufferObject > ubo)
 A constructor.
 
virtual ~Shader ()=default
 Destructor.
 
virtual void Bind () const
 Installs a shader (vertex + fragment) and uniform program object as part of current rendering state.
 
virtual void Bind (const std::string &texShaderNames) const
 Binding using name of texture.
 
virtual void UnBind () const
 Undo the binding of shader program.
 
std::shared_ptr< UniformBufferObjectGetUniformBufferObject () const
 Getter for uniform buffer object.
 
const std::string & GetShaderName () const
 Getter for shader name.
 

Static Public Member Functions

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

std::string m_ShaderName
 

Detailed Description

Base class of vertex + fragment shaders (for Vulkan and OpenGL)

Constructor & Destructor Documentation

◆ Shader()

Karma::Shader::Shader ( std::shared_ptr< UniformBufferObject > ubo)
inline

A constructor.

Parameters
uboUniform buffer object to a assigned
Since
Karma 1.0.0

◆ ~Shader()

virtual Karma::Shader::~Shader ( )
virtualdefault

Destructor.

Since
Karma 1.0.0

Member Function Documentation

◆ Bind() [1/2]

virtual void Karma::Shader::Bind ( ) const
inlinevirtual

Installs a shader (vertex + fragment) and uniform program object as part of current rendering state.

Todo
For OpenGL only. Vulkan Bind() is empty and may need abstract thinking
Since
Karma 1.0.0

Reimplemented in Karma::OpenGLShader, and Karma::VulkanShader.

◆ Bind() [2/2]

virtual void Karma::Shader::Bind ( const std::string & texShaderNames) const
inlinevirtual

Binding using name of texture.

Todo
Think with the previous binding routiine
Since
Karma 1.0.0

Reimplemented in Karma::OpenGLShader.

◆ Create() [1/2]

Shader * Karma::Shader::Create ( const std::string & vertexSrc,
const std::string & fragmentSrc )
static

Instantiating shader object according to the programmer chosen API.

Deprecated
Use the overloaded function with uniformbuffer object argument
Since
Karma 1.0.0

◆ Create() [2/2]

Shader * Karma::Shader::Create ( const std::string & vertexSrcFile,
const std::string & fragmentSrcFile,
std::shared_ptr< UniformBufferObject > ubo,
const std::string & shaderName = "NoNamedShader" )
static

For instantiating shader object accodring to programer's chosen API.

Parameters
vertexSrcFilePath to vertex shader (filename included). For instance "../Resources/Shaders/shader.vert", relative to Engine's running directory
fragmentSrcFilePath to fragment shader (filename included).
uboUniformBufferObject to be used
shaderNameName of the shader to be supplied
Since
Karma 1.0.0

◆ GetShaderName()

const std::string & Karma::Shader::GetShaderName ( ) const
inline

Getter for shader name.

Note
Could be a pointer?
Since
Karma 1.0.0

◆ GetUniformBufferObject()

std::shared_ptr< UniformBufferObject > Karma::Shader::GetUniformBufferObject ( ) const
inline

Getter for uniform buffer object.

Returns
pointer to UniformBufferObject present in the shader
Since
Karma 1.0.0

◆ UnBind()

virtual void Karma::Shader::UnBind ( ) const
inlinevirtual

Undo the binding of shader program.

Todo
Only OpenGL uses this, that too, for shader and not uniform. May need pondering over.
Since
Karma 1.0.0

Reimplemented in Karma::OpenGLShader, and Karma::VulkanShader.


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