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

Describes a vertex buffer. More...

#include <rendering.hpp>

Inherits LiteFX::Rendering::IVertexBuffer.

Public Types

using vertex_buffer_layout_type = TVertexBufferLayout
 

Public Member Functions

 ~VertexBuffer () noexcept override=default
 
const vertex_buffer_layout_typelayout () const noexcept override=0
 Gets the layout of the vertex buffer.
Returns
The layout of the vertex buffer.

 
- Public Member Functions inherited from LiteFX::Rendering::IVertexBuffer
 ~IVertexBuffer () noexcept override=default
 
- Public Member Functions inherited from LiteFX::Rendering::IBuffer
 ~IBuffer () noexcept override=default
 
virtual BufferType type () const noexcept=0
 Returns the type of the buffer.
 
- Public Member Functions inherited from LiteFX::Rendering::IDeviceMemory
virtual ~IDeviceMemory () noexcept=default
 
virtual UInt32 elements () const noexcept=0
 Gets the number of sub-resources inside the memory chunk.
 
virtual size_t size () const noexcept=0
 Gets the size (in bytes) of the aligned memory chunk.
 
virtual size_t elementSize () const noexcept=0
 Returns the size of a single element within the buffer. If there is only one element, this is equal to size.
 
virtual size_t elementAlignment () const noexcept=0
 Returns the alignment of a single element.
 
virtual size_t alignedElementSize () const noexcept=0
 Returns the actual size of the element in device memory.
 
virtual ResourceUsage usage () const noexcept=0
 Returns the usage flags for the resource.
 
bool writable () const noexcept
 Returns true, if the resource can be bound to a read/write descriptor.
 
virtual UInt64 virtualAddress () const noexcept=0
 Gets the address of the resource in GPU memory.
 
- Public Member Functions inherited from LiteFX::Rendering::IMappable
virtual ~IMappable () noexcept=default
 
virtual void map (const void *const data, size_t size, UInt32 element=0)=0
 Maps the memory at data to the internal memory of this object.
 
virtual void map (Span< const void *const > data, size_t elementSize, UInt32 firstElement=0)=0
 Maps the memory blocks within data to the internal memory of an array.
 
virtual void map (void *data, size_t size, UInt32 element=0, bool write=true)=0
 Maps the memory at data to the internal memory of this object.
 
virtual void map (Span< void * > data, size_t elementSize, UInt32 firstElement=0, bool write=true)=0
 Maps the memory blocks within data to the internal memory of an array.
 
- Public Member Functions inherited from LiteFX::Rendering::IStateResource
virtual ~IStateResource () noexcept=default
 Releases the state resource instance.
 
virtual const Stringname () const noexcept=0
 Returns the name of the resource.
 
- 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

 VertexBuffer () noexcept=default
 
 VertexBuffer (const VertexBuffer &)=default
 
 VertexBuffer (VertexBuffer &&) noexcept=default
 
VertexBufferoperator= (const VertexBuffer &)=default
 
VertexBufferoperator= (VertexBuffer &&) noexcept=default
 
- Protected Member Functions inherited from LiteFX::Rendering::IVertexBuffer
 IVertexBuffer () noexcept=default
 
 IVertexBuffer (const IVertexBuffer &)=delete
 
 IVertexBuffer (IVertexBuffer &&) noexcept=default
 
IVertexBufferoperator= (const IVertexBuffer &)=delete
 
IVertexBufferoperator= (IVertexBuffer &&) noexcept=default
 
- Protected Member Functions inherited from LiteFX::Rendering::IBuffer
 IBuffer () noexcept=default
 
 IBuffer (IBuffer &&) noexcept=default
 
 IBuffer (const IBuffer &)=delete
 
IBufferoperator= (IBuffer &&) noexcept=default
 
IBufferoperator= (const IBuffer &)=delete
 
- Protected Member Functions inherited from LiteFX::Rendering::IDeviceMemory
 IDeviceMemory () noexcept=default
 
 IDeviceMemory (IDeviceMemory &&) noexcept=default
 
 IDeviceMemory (const IDeviceMemory &)=default
 
IDeviceMemoryoperator= (IDeviceMemory &&) noexcept=default
 
IDeviceMemoryoperator= (const IDeviceMemory &)=default
 
- Protected Member Functions inherited from LiteFX::Rendering::IMappable
 IMappable () noexcept=default
 
 IMappable (IMappable &&) noexcept=default
 
 IMappable (const IMappable &)=default
 
IMappableoperator= (IMappable &&) noexcept=default
 
IMappableoperator= (const IMappable &)=default
 
- Protected Member Functions inherited from LiteFX::Rendering::IStateResource
 IStateResource () noexcept=default
 
 IStateResource (const IStateResource &)=delete
 
 IStateResource (IStateResource &&) noexcept=default
 
IStateResourceoperator= (const IStateResource &)=delete
 
IStateResourceoperator= (IStateResource &&) 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>
requires meta::implements<TVertexBufferLayout, IVertexBufferLayout>
class LiteFX::Rendering::VertexBuffer< TVertexBufferLayout >

Describes a vertex buffer.

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

Member Typedef Documentation

◆ vertex_buffer_layout_type

template<typename TVertexBufferLayout >
using LiteFX::Rendering::VertexBuffer< TVertexBufferLayout >::vertex_buffer_layout_type = TVertexBufferLayout

Constructor & Destructor Documentation

◆ VertexBuffer() [1/3]

template<typename TVertexBufferLayout >
LiteFX::Rendering::VertexBuffer< TVertexBufferLayout >::VertexBuffer ( )
protecteddefaultnoexcept

◆ VertexBuffer() [2/3]

template<typename TVertexBufferLayout >
LiteFX::Rendering::VertexBuffer< TVertexBufferLayout >::VertexBuffer ( const VertexBuffer< TVertexBufferLayout > & )
protecteddefault

◆ VertexBuffer() [3/3]

template<typename TVertexBufferLayout >
LiteFX::Rendering::VertexBuffer< TVertexBufferLayout >::VertexBuffer ( VertexBuffer< TVertexBufferLayout > && )
protecteddefaultnoexcept

◆ ~VertexBuffer()

template<typename TVertexBufferLayout >
LiteFX::Rendering::VertexBuffer< TVertexBufferLayout >::~VertexBuffer ( )
overridedefaultnoexcept

Member Function Documentation

◆ layout()

template<typename TVertexBufferLayout >
const vertex_buffer_layout_type & LiteFX::Rendering::VertexBuffer< TVertexBufferLayout >::layout ( ) const
overridepure virtualnoexcept

Gets the layout of the vertex buffer.

Returns
The layout of the vertex buffer.

Implements LiteFX::Rendering::IVertexBuffer.

Implemented in LiteFX::Rendering::Backends::DirectX12VertexBuffer, and LiteFX::Rendering::Backends::VulkanVertexBuffer.

◆ operator=() [1/2]

template<typename TVertexBufferLayout >
VertexBuffer & LiteFX::Rendering::VertexBuffer< TVertexBufferLayout >::operator= ( const VertexBuffer< TVertexBufferLayout > & )
protecteddefault

◆ operator=() [2/2]

template<typename TVertexBufferLayout >
VertexBuffer & LiteFX::Rendering::VertexBuffer< TVertexBufferLayout >::operator= ( VertexBuffer< TVertexBufferLayout > && )
protecteddefaultnoexcept