MAGE  v0.171.0
Matthias Advanced Game Engine
mage::rendering::VertexShader Class Reference

#include <shader.hpp>

Inheritance diagram for mage::rendering::VertexShader:
mage::Resource< VertexShader >

Public Member Functions

 VertexShader (ID3D11Device &device, std::wstring guid, const CompiledShader &compiled_shader, gsl::span< const D3D11_INPUT_ELEMENT_DESC > input_element_descs)
 
 VertexShader (const VertexShader &vertex_shader)=delete
 
 VertexShader (VertexShader &&vertex_shader) noexcept
 
virtual ~VertexShader ()
 
VertexShaderoperator= (const VertexShader &vertex_shader)=delete
 
VertexShaderoperator= (VertexShader &&vertex_shader) noexcept
 
void BindShader (ID3D11DeviceContext &device_context) const noexcept
 
- Public Member Functions inherited from mage::Resource< VertexShader >
 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, gsl::span< const D3D11_INPUT_ELEMENT_DESC > input_element_descs)
 

Private Attributes

ComPtr< ID3D11VertexShader > m_vertex_shader
 
ComPtr< ID3D11InputLayout > m_vertex_layout
 

Detailed Description

A class of vertex shaders.

Constructor & Destructor Documentation

◆ VertexShader() [1/3]

mage::rendering::VertexShader::VertexShader ( ID3D11Device &  device,
std::wstring  guid,
const CompiledShader compiled_shader,
gsl::span< const D3D11_INPUT_ELEMENT_DESC >  input_element_descs 
)
explicit

Constructs a vertex shader.

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

◆ VertexShader() [2/3]

mage::rendering::VertexShader::VertexShader ( const VertexShader vertex_shader)
delete

Constructs a vertex shader from the given vertex shader.

Parameters
[in]vertex_shaderA reference to the vertex shader to copy.

◆ VertexShader() [3/3]

mage::rendering::VertexShader::VertexShader ( VertexShader &&  vertex_shader)
defaultnoexcept

Constructs a vertex shader by moving the given vertex shader.

Parameters
[in]vertex_shaderA reference to the vertex shader to move.

◆ ~VertexShader()

mage::rendering::VertexShader::~VertexShader ( )
virtualdefault

Destructs this vertex shader.

Member Function Documentation

◆ BindShader()

void mage::rendering::VertexShader::BindShader ( ID3D11DeviceContext &  device_context) const
noexcept

Binds this vertex shader.

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

◆ operator=() [1/2]

VertexShader& mage::rendering::VertexShader::operator= ( const VertexShader vertex_shader)
delete

Copies the given vertex shader to this vertex shader.

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

◆ operator=() [2/2]

VertexShader & mage::rendering::VertexShader::operator= ( VertexShader &&  vertex_shader)
defaultnoexcept

Moves the given vertex shader to this vertex shader.

Parameters
[in]vertex_shaderA reference to the vertex shader to copy.
Returns
A reference to the moved vertex shader (i.e. this vertex shader).

◆ SetupShader()

void mage::rendering::VertexShader::SetupShader ( ID3D11Device &  device,
const CompiledShader compiled_shader,
gsl::span< const D3D11_INPUT_ELEMENT_DESC >  input_element_descs 
)
private

Sets up this vertex shader.

Parameters
[in]deviceA reference to the device.
[in]compiled_shaderA reference to the compiled vertex shader.
[in]input_element_descsThe input element descriptors.
Exceptions
ExceptionFailed to setup this vertex shader.

Member Data Documentation

◆ m_vertex_layout

ComPtr< ID3D11InputLayout > mage::rendering::VertexShader::m_vertex_layout
private

A pointer to the input layout of this vertex shader.

◆ m_vertex_shader

ComPtr< ID3D11VertexShader > mage::rendering::VertexShader::m_vertex_shader
private

A pointer to the vertex shader of this vertex shader.