SPARK  0.1.0
A general purpose game engine written in C++.
Loading...
Searching...
No Matches
spark::render::vk::VulkanInputAssembler Class Referencefinal

Vulkan implementation of IInputAssembler. More...

#include <VulkanInputAssembler.h>

Inheritance diagram for spark::render::vk::VulkanInputAssembler:
spark::render::InputAssembler< VulkanVertexBufferLayout, VulkanIndexBufferLayout > spark::render::IInputAssembler

Classes

struct  Impl
 

Public Member Functions

 VulkanInputAssembler (std::vector< std::unique_ptr< VulkanVertexBufferLayout > > &&vertex_buffer_layouts, std::unique_ptr< VulkanIndexBufferLayout > &&index_buffer_layout, PrimitiveTopology primitive_topology=PrimitiveTopology::TriangleList)
 Initializes a new Vulkan input assembler state.
 
 VulkanInputAssembler (const VulkanInputAssembler &other)=delete
 
 VulkanInputAssembler (VulkanInputAssembler &&other) noexcept=delete
 
VulkanInputAssembleroperator= (const VulkanInputAssembler &other)=delete
 
VulkanInputAssembleroperator= (VulkanInputAssembler &&other) noexcept=delete
 
PrimitiveTopology topology () const noexcept override
 Gets the topology of the input assembly.
 
std::vector< const VulkanVertexBufferLayout * > vertexBufferLayouts () const noexcept override
 Gets all vertex buffers layouts in the input assembly.
 
const VulkanVertexBufferLayoutvertexBufferLayout (unsigned binding) const override
 
const VulkanIndexBufferLayoutindexBufferLayout () const noexcept override
 Gets the index buffer layout.
 
- Public Member Functions inherited from spark::render::IInputAssembler
std::vector< const IVertexBufferLayout * > vertexBufferLayouts () const noexcept
 Gets all vertex buffers layouts in the input assembly.
 
virtual const IVertexBufferLayoutvertexBufferLayout (unsigned int binding) const =0
 Gets the vertex buffer layout for the given binding.
 

Additional Inherited Members

- Public Types inherited from spark::render::InputAssembler< VulkanVertexBufferLayout, VulkanIndexBufferLayout >
using VertexBufferLayout
 
using IndexBufferLayout
 

Detailed Description

Vulkan implementation of IInputAssembler.

Constructor & Destructor Documentation

◆ VulkanInputAssembler()

spark::render::vk::VulkanInputAssembler::VulkanInputAssembler ( std::vector< std::unique_ptr< VulkanVertexBufferLayout > > && vertex_buffer_layouts,
std::unique_ptr< VulkanIndexBufferLayout > && index_buffer_layout,
PrimitiveTopology primitive_topology = PrimitiveTopology::TriangleList )
explicit

Initializes a new Vulkan input assembler state.

Parameters
vertex_buffer_layoutsThe vertex buffer layouts supported by this input assembler state. Each layout must have a unique binding.
index_buffer_layoutThe index buffer layout of the input assembler state.
primitive_topologyThe primitive topology of the input assembler state.
Exceptions
base::NullPointerExceptionif one of the vertex_buffer_layouts or index_buffer_layout is null.
base::BadArgumentExceptionif the vertex_buffer_layouts contain multiple layouts with the same binding.

Member Function Documentation

◆ indexBufferLayout()

const VulkanIndexBufferLayout & spark::render::vk::VulkanInputAssembler::indexBufferLayout ( ) const
nodiscardoverridevirtualnoexcept

Gets the index buffer layout.

Returns
The IIndexBufferLayout for the input assembly.

Implements spark::render::InputAssembler< VulkanVertexBufferLayout, VulkanIndexBufferLayout >.

◆ topology()

PrimitiveTopology spark::render::vk::VulkanInputAssembler::topology ( ) const
nodiscardoverridevirtualnoexcept

Gets the topology of the input assembly.

Returns
A PrimitiveTopology value representing the topology of the input assembly.

Implements spark::render::IInputAssembler.

◆ vertexBufferLayout()

const VulkanVertexBufferLayout & spark::render::vk::VulkanInputAssembler::vertexBufferLayout ( unsigned binding) const
nodiscardoverridevirtual

◆ vertexBufferLayouts()

std::vector< const VulkanVertexBufferLayout * > spark::render::vk::VulkanInputAssembler::vertexBufferLayouts ( ) const
nodiscardoverridevirtualnoexcept

Gets all vertex buffers layouts in the input assembly.

Returns
A std::vector of vertex buffers layouts in the input assembly.

Implements spark::render::InputAssembler< VulkanVertexBufferLayout, VulkanIndexBufferLayout >.