MAGE  v0.171.0
Matthias Advanced Game Engine
mage::rendering::Shader< ShaderT, PipelineStageT > Class Template Reference

#include <shader.hpp>

Inheritance diagram for mage::rendering::Shader< ShaderT, PipelineStageT >:
mage::Resource< Shader< ShaderT, PipelineStageT > >

Public Member Functions

 Shader (ID3D11Device &device, std::wstring guid, const CompiledShader &compiled_shader)
 
 Shader (const Shader &shader)=delete
 
 Shader (Shader &&shader) noexcept
 
virtual ~Shader ()
 
Shaderoperator= (const Shader &shader)=delete
 
Shaderoperator= (Shader &&shader) noexcept
 
void BindShader (ID3D11DeviceContext &device_context) const noexcept
 
- Public Member Functions inherited from mage::Resource< Shader< ShaderT, PipelineStageT > >
 Resource (std::wstring guid) noexcept
 
 Resource (const Resource &resource)=delete
 
 Resource (Resource &&resource) noexcept
 
virtual ~Resource ()
 
Resourceoperator= (const Resource &resource)=delete
 
Resourceoperator= (Resource &&resource) noexcept
 
const std::wstring_view GetGuid () const noexcept
 
bool IsFileResource () const
 
const std::filesystem::path GetPath () const
 

Private Member Functions

void SetupShader (ID3D11Device &device, const CompiledShader &compiled_shader)
 

Private Attributes

ComPtr< ShaderT > m_shader
 

Detailed Description

template<typename ShaderT, typename PipelineStageT>
class mage::rendering::Shader< ShaderT, PipelineStageT >

A class of shaders.

Template Parameters
ShaderTThe shader type.
PipelineStageTThe pipeline stage type.

Constructor & Destructor Documentation

◆ Shader() [1/3]

template<typename ShaderT , typename PipelineStageT >
mage::rendering::Shader< ShaderT, PipelineStageT >::Shader ( ID3D11Device &  device,
std::wstring  guid,
const CompiledShader< ShaderT, PipelineStageT > &  compiled_shader 
)
explicit

Constructs a shader.

Parameters
[in,out]deviceA reference to the device.
[in]guidThe globally unique identifier.
[in]compiled_shaderA reference to the compiled shader.
Exceptions
ExceptionFailed to initialize this shader.

◆ Shader() [2/3]

template<typename ShaderT , typename PipelineStageT >
mage::rendering::Shader< ShaderT, PipelineStageT >::Shader ( const Shader< ShaderT, PipelineStageT > &  shader)
delete

Constructs a shader from the given shader.

Parameters
[in]shaderA reference to the shader to copy.

◆ Shader() [3/3]

template<typename ShaderT , typename PipelineStageT >
mage::rendering::Shader< ShaderT, PipelineStageT >::Shader ( Shader< ShaderT, PipelineStageT > &&  shader)
noexcept

Constructs a shader by moving the given shader.

Parameters
[in]shaderA reference to the shader to move.

◆ ~Shader()

template<typename ShaderT , typename PipelineStageT >
virtual mage::rendering::Shader< ShaderT, PipelineStageT >::~Shader ( )
virtual

Destructs this shader.

Member Function Documentation

◆ BindShader()

template<typename ShaderT , typename PipelineStageT >
void mage::rendering::Shader< ShaderT, PipelineStageT >::BindShader ( ID3D11DeviceContext &  device_context) const
noexcept

Binds this shader.

Parameters
[in,out]device_contextA reference to the device context.

◆ operator=() [1/2]

template<typename ShaderT , typename PipelineStageT >
Shader& mage::rendering::Shader< ShaderT, PipelineStageT >::operator= ( const Shader< ShaderT, PipelineStageT > &  shader)
delete

Copies the given shader to this shader.

Parameters
[in]shaderA reference to the shader to copy.
Returns
A reference to the copy of the given shader (i.e. this shader).

◆ operator=() [2/2]

template<typename ShaderT , typename PipelineStageT >
Shader& mage::rendering::Shader< ShaderT, PipelineStageT >::operator= ( Shader< ShaderT, PipelineStageT > &&  shader)
noexcept

Moves the given shader to this shader.

Parameters
[in]shaderA reference to the shader to move.
Returns
A reference to the moved shader (i.e. this shader).

◆ SetupShader()

template<typename ShaderT , typename PipelineStageT >
void mage::rendering::Shader< ShaderT, PipelineStageT >::SetupShader ( ID3D11Device &  device,
const CompiledShader< ShaderT, PipelineStageT > &  compiled_shader 
)
private

Sets up this shader.

Parameters
[in,out]deviceA reference to the device.
[in]compiled_shaderA reference to the compiled shader.
Exceptions
ExceptionFailed to setup this shader.

Member Data Documentation

◆ m_shader

template<typename ShaderT , typename PipelineStageT >
ComPtr< ShaderT > mage::rendering::Shader< ShaderT, PipelineStageT >::m_shader
private

A pointer to the shader of this shader.