LiteFX 0.4.1.2025
Computer Graphics Engine
Loading...
Searching...
No Matches
LiteFX::Rendering::InputAssembler< TVertexBufferLayout, TIndexBufferLayout > Class Template Referenceabstract

Represents a the input assembler state of a RenderPipeline. More...

#include <rendering.hpp>

Inherits LiteFX::Rendering::IInputAssembler.

Public Types

using vertex_buffer_layout_type = TVertexBufferLayout
 
using index_buffer_layout_type = TIndexBufferLayout
 

Public Member Functions

 ~InputAssembler () noexcept override=default
 
virtual Enumerable< const vertex_buffer_layout_type & > vertexBufferLayouts () const =0
 
const vertex_buffer_layout_typevertexBufferLayout (UInt32 binding) const override=0
 Returns a pointer the vertex buffer layout for binding provided with binding .
Parameters
bindingThe binding point of the vertex buffer layout.
Returns
The vertex buffer layout for binding provided with binding .
Exceptions
ArgumentOutOfRangeExceptionThrown, if no vertex buffer layout is bound to binding .

 
const index_buffer_layout_typeindexBufferLayout () const noexcept override=0
 Returns a pointer to the index buffer layout, or nullptr if the input assembler does not handle indices.
Returns
The index buffer layout, or nullptr if the input assembler does not handle indices.

 
- Public Member Functions inherited from LiteFX::Rendering::IInputAssembler
 ~IInputAssembler () noexcept override=default
 
Enumerable< const IVertexBufferLayout & > vertexBufferLayouts () const
 Returns all vertex buffer layouts of the input assembly.
 
virtual PrimitiveTopology topology () const noexcept=0
 Returns the primitive topology.
 
- Public Member Functions inherited from LiteFX::SharedObject
virtual ~SharedObject () noexcept=default
 Destroys the shared object.
 
template<typename TSelf >
auto shared_from_this (this TSelf &&self) noexcept
 Returns a shared pointer to the current object instance.
 
template<typename TSelf >
auto weak_from_this (this TSelf &&self) noexcept -> WeakPtr< std::remove_reference_t< TSelf > >
 Returns a weak pointer to the current object instance.
 

Protected Member Functions

 InputAssembler () noexcept=default
 
 InputAssembler (const InputAssembler &)=default
 
 InputAssembler (InputAssembler &&) noexcept=default
 
InputAssembleroperator= (const InputAssembler &)=default
 
InputAssembleroperator= (InputAssembler &&) noexcept=default
 
- Protected Member Functions inherited from LiteFX::Rendering::IInputAssembler
 IInputAssembler () noexcept=default
 
 IInputAssembler (const IInputAssembler &)=default
 
 IInputAssembler (IInputAssembler &&) noexcept=default
 
IInputAssembleroperator= (const IInputAssembler &)=default
 
IInputAssembleroperator= (IInputAssembler &&) noexcept=default
 
- Protected Member Functions inherited from LiteFX::SharedObject
 SharedObject () noexcept=default
 Initializes a new shared object.
 
 SharedObject (SharedObject &&) noexcept=default
 
 SharedObject (const SharedObject &)=default
 
SharedObjectoperator= (SharedObject &&) noexcept=default
 
SharedObjectoperator= (const SharedObject &)=default
 

Additional Inherited Members

- Static Protected Member Functions inherited from LiteFX::SharedObject
template<typename T , typename... TArgs>
static auto create (TArgs &&... args) -> SharedPtr< T >
 Generic factory method used to create instances of the shared object.
 

Detailed Description

template<typename TVertexBufferLayout, typename TIndexBufferLayout>
requires meta::implements<TVertexBufferLayout, IVertexBufferLayout> && meta::implements<TIndexBufferLayout, IIndexBufferLayout>
class LiteFX::Rendering::InputAssembler< TVertexBufferLayout, TIndexBufferLayout >

Represents a the input assembler state of a RenderPipeline.

Template Parameters
TVertexBufferLayoutThe type of the vertex buffer layout. Must implement IVertexBufferLayout.
TIndexBufferLayoutThe type of the index buffer layout. Must implement IIndexBufferLayout.

Member Typedef Documentation

◆ index_buffer_layout_type

template<typename TVertexBufferLayout , typename TIndexBufferLayout >
using LiteFX::Rendering::InputAssembler< TVertexBufferLayout, TIndexBufferLayout >::index_buffer_layout_type = TIndexBufferLayout

◆ vertex_buffer_layout_type

template<typename TVertexBufferLayout , typename TIndexBufferLayout >
using LiteFX::Rendering::InputAssembler< TVertexBufferLayout, TIndexBufferLayout >::vertex_buffer_layout_type = TVertexBufferLayout

Constructor & Destructor Documentation

◆ InputAssembler() [1/3]

template<typename TVertexBufferLayout , typename TIndexBufferLayout >
LiteFX::Rendering::InputAssembler< TVertexBufferLayout, TIndexBufferLayout >::InputAssembler ( )
protecteddefaultnoexcept

◆ InputAssembler() [2/3]

template<typename TVertexBufferLayout , typename TIndexBufferLayout >
LiteFX::Rendering::InputAssembler< TVertexBufferLayout, TIndexBufferLayout >::InputAssembler ( const InputAssembler< TVertexBufferLayout, TIndexBufferLayout > & )
protecteddefault

◆ InputAssembler() [3/3]

template<typename TVertexBufferLayout , typename TIndexBufferLayout >
LiteFX::Rendering::InputAssembler< TVertexBufferLayout, TIndexBufferLayout >::InputAssembler ( InputAssembler< TVertexBufferLayout, TIndexBufferLayout > && )
protecteddefaultnoexcept

◆ ~InputAssembler()

template<typename TVertexBufferLayout , typename TIndexBufferLayout >
LiteFX::Rendering::InputAssembler< TVertexBufferLayout, TIndexBufferLayout >::~InputAssembler ( )
overridedefaultnoexcept

Member Function Documentation

◆ indexBufferLayout()

template<typename TVertexBufferLayout , typename TIndexBufferLayout >
const index_buffer_layout_type * LiteFX::Rendering::InputAssembler< TVertexBufferLayout, TIndexBufferLayout >::indexBufferLayout ( ) const
overridepure virtualnoexcept

Returns a pointer to the index buffer layout, or nullptr if the input assembler does not handle indices.

Returns
The index buffer layout, or nullptr if the input assembler does not handle indices.

Implements LiteFX::Rendering::IInputAssembler.

Implemented in LiteFX::Rendering::Backends::DirectX12InputAssembler, and LiteFX::Rendering::Backends::VulkanInputAssembler.

◆ operator=() [1/2]

template<typename TVertexBufferLayout , typename TIndexBufferLayout >
InputAssembler & LiteFX::Rendering::InputAssembler< TVertexBufferLayout, TIndexBufferLayout >::operator= ( const InputAssembler< TVertexBufferLayout, TIndexBufferLayout > & )
protecteddefault

◆ operator=() [2/2]

template<typename TVertexBufferLayout , typename TIndexBufferLayout >
InputAssembler & LiteFX::Rendering::InputAssembler< TVertexBufferLayout, TIndexBufferLayout >::operator= ( InputAssembler< TVertexBufferLayout, TIndexBufferLayout > && )
protecteddefaultnoexcept

◆ vertexBufferLayout()

template<typename TVertexBufferLayout , typename TIndexBufferLayout >
const vertex_buffer_layout_type & LiteFX::Rendering::InputAssembler< TVertexBufferLayout, TIndexBufferLayout >::vertexBufferLayout ( UInt32 binding) const
overridepure virtual

Returns a pointer the vertex buffer layout for binding provided with binding .

Parameters
bindingThe binding point of the vertex buffer layout.
Returns
The vertex buffer layout for binding provided with binding .
Exceptions
ArgumentOutOfRangeExceptionThrown, if no vertex buffer layout is bound to binding .

Implements LiteFX::Rendering::IInputAssembler.

Implemented in LiteFX::Rendering::Backends::DirectX12InputAssembler, and LiteFX::Rendering::Backends::VulkanInputAssembler.

◆ vertexBufferLayouts()

template<typename TVertexBufferLayout , typename TIndexBufferLayout >
virtual Enumerable< const vertex_buffer_layout_type & > LiteFX::Rendering::InputAssembler< TVertexBufferLayout, TIndexBufferLayout >::vertexBufferLayouts ( ) const
pure virtual