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

#include <sprite_batch_mesh.hpp>

Inheritance diagram for mage::rendering::SpriteBatchMesh:
mage::rendering::PrimitiveBatchMesh< VertexPositionColorTexture, U16 > mage::rendering::Mesh

Public Member Functions

 SpriteBatchMesh (ID3D11Device &device)
 
 SpriteBatchMesh (const SpriteBatchMesh &mesh)=delete
 
 SpriteBatchMesh (SpriteBatchMesh &&mesh) noexcept
 
virtual ~SpriteBatchMesh ()
 
SpriteBatchMeshoperator= (const SpriteBatchMesh &mesh)=delete
 
SpriteBatchMeshoperator= (SpriteBatchMesh &&mesh) noexcept
 
- Public Member Functions inherited from mage::rendering::PrimitiveBatchMesh< VertexPositionColorTexture, U16 >
 PrimitiveBatchMesh (ID3D11Device &device, std::size_t nb_vertices, const std::vector< U16 > &indices, D3D11_PRIMITIVE_TOPOLOGY primitive_topology=D3D11_PRIMITIVE_TOPOLOGY_TRIANGLELIST)
 
 PrimitiveBatchMesh (const PrimitiveBatchMesh &mesh)=delete
 
 PrimitiveBatchMesh (PrimitiveBatchMesh &&mesh) noexcept
 
virtual ~PrimitiveBatchMesh ()
 
PrimitiveBatchMeshoperator= (const PrimitiveBatchMesh &mesh)=delete
 
PrimitiveBatchMeshoperator= (PrimitiveBatchMesh &&mesh) noexcept
 
const BufferLock Lock (ID3D11DeviceContext &device_context, D3D11_MAP map_type, D3D11_MAPPED_SUBRESOURCE &mapped_buffer)
 
- Public Member Functions inherited from mage::rendering::Mesh
virtual ~Mesh ()
 
Meshoperator= (const Mesh &mesh)=delete
 
Meshoperator= (Mesh &&mesh) noexcept
 
std::size_t GetNumberOfVertices () const noexcept
 
std::size_t GetNumberOfIndices () const noexcept
 
std::size_t GetVertexSize () const noexcept
 
DXGI_FORMAT GetIndexFormat () const noexcept
 
D3D11_PRIMITIVE_TOPOLOGY GetPrimitiveTopology () const noexcept
 
void BindMesh (ID3D11DeviceContext &device_context) const noexcept
 
void BindMesh (ID3D11DeviceContext &device_context, D3D11_PRIMITIVE_TOPOLOGY topology) const noexcept
 
void Draw (ID3D11DeviceContext &device_context) const noexcept
 
void Draw (ID3D11DeviceContext &device_context, std::size_t start_index, std::size_t nb_indices) const noexcept
 

Static Public Member Functions

static constexpr std::size_t MinVerticesPerBatch () noexcept
 
static constexpr std::size_t MaxVerticesPerBatch () noexcept
 
static constexpr std::size_t MinIndicesPerBatch () noexcept
 
static constexpr std::size_t MaxIndicesPerBatch () noexcept
 

Static Public Attributes

static constexpr std::size_t s_min_sprites_per_batch = 128
 
static constexpr std::size_t s_max_sprites_per_batch = 2048
 
static constexpr std::size_t s_vertices_per_sprite = 4
 
static constexpr std::size_t s_indices_per_sprite = 6
 

Static Private Member Functions

static const std::vector< U16GenerateIndices ()
 

Additional Inherited Members

- Protected Member Functions inherited from mage::rendering::Mesh
 Mesh (std::size_t vertex_size, DXGI_FORMAT index_format, D3D11_PRIMITIVE_TOPOLOGY primitive_topology)
 
 Mesh (const Mesh &mesh)=delete
 
 Mesh (Mesh &&mesh) noexcept
 
void SetNumberOfVertices (std::size_t nb_vertices) noexcept
 
void SetNumberOfIndices (std::size_t nb_indices) noexcept
 
- Protected Attributes inherited from mage::rendering::Mesh
ComPtr< ID3D11Buffer > m_vertex_buffer
 
ComPtr< ID3D11Buffer > m_index_buffer
 

Detailed Description

A class of indexed sprite batch meshes.

Constructor & Destructor Documentation

◆ SpriteBatchMesh() [1/3]

mage::rendering::SpriteBatchMesh::SpriteBatchMesh ( ID3D11Device &  device)
explicit

Constructs a sprite batch mesh.

Parameters
[in,out]deviceA reference to the device.
Exceptions
ExceptionFailed to setup the vertex buffer of the sprite batch mesh.
ExceptionFailed to setup the index buffer of the sprite batch mesh.

◆ SpriteBatchMesh() [2/3]

mage::rendering::SpriteBatchMesh::SpriteBatchMesh ( const SpriteBatchMesh mesh)
delete

Constructs a sprite batch mesh from the given sprite batch mesh.

Parameters
[in]meshA reference to the sprite batch mesh to copy.

◆ SpriteBatchMesh() [3/3]

mage::rendering::SpriteBatchMesh::SpriteBatchMesh ( SpriteBatchMesh &&  mesh)
defaultnoexcept

Constructs a sprite batch mesh by moving the given sprite batch mesh.

Parameters
[in]meshA reference to the sprite batch mesh to move.

◆ ~SpriteBatchMesh()

mage::rendering::SpriteBatchMesh::~SpriteBatchMesh ( )
virtualdefault

Destructs this sprite batch mesh.

Member Function Documentation

◆ GenerateIndices()

const std::vector< U16 > mage::rendering::SpriteBatchMesh::GenerateIndices ( )
staticprivate

Generates the indices of a sprite batch mesh.

Returns
A vector containing the indices of a sprite batch mesh.

◆ MaxIndicesPerBatch()

static constexpr std::size_t mage::rendering::SpriteBatchMesh::MaxIndicesPerBatch ( )
staticnoexcept

Returns the maximum number of indices to draw per batch for sprite batch meshes.

Returns
The maximum number of indices to draw per batch for sprite batch meshes.

◆ MaxVerticesPerBatch()

static constexpr std::size_t mage::rendering::SpriteBatchMesh::MaxVerticesPerBatch ( )
staticnoexcept

Returns the maximum number of vertices to draw per batch for sprite batch meshes.

Returns
The maximum number of vertices to draw per batch for sprite batch meshes.

◆ MinIndicesPerBatch()

static constexpr std::size_t mage::rendering::SpriteBatchMesh::MinIndicesPerBatch ( )
staticnoexcept

Returns the minimum number of indices to draw per batch for sprite batch meshes.

Returns
The minimum number of indices to draw per batch for sprite batch meshes.

◆ MinVerticesPerBatch()

static constexpr std::size_t mage::rendering::SpriteBatchMesh::MinVerticesPerBatch ( )
staticnoexcept

Returns the minimum number of vertices to draw per batch for sprite batch meshes.

Returns
The minimum number of vertices to draw per batch for sprite batch meshes.

◆ operator=() [1/2]

SpriteBatchMesh& mage::rendering::SpriteBatchMesh::operator= ( const SpriteBatchMesh mesh)
delete

Copies the given sprite batch mesh to this sprite batch mesh.

Parameters
[in]meshA reference to the sprite batch mesh to copy.
Returns
A reference to the copy of the given sprite batch mesh (i.e. this sprite batch mesh).

◆ operator=() [2/2]

SpriteBatchMesh & mage::rendering::SpriteBatchMesh::operator= ( SpriteBatchMesh &&  mesh)
defaultnoexcept

Moves the given sprite batch mesh to this sprite batch mesh.

Parameters
[in]meshA reference to the sprite batch mesh to move.
Returns
A reference to the moved sprite batch mesh (i.e. this sprite batch mesh).

Member Data Documentation

◆ s_indices_per_sprite

constexpr std::size_t mage::rendering::SpriteBatchMesh::s_indices_per_sprite = 6
static

The number of indices per sprite.

◆ s_max_sprites_per_batch

constexpr std::size_t mage::rendering::SpriteBatchMesh::s_max_sprites_per_batch = 2048
static

The maximum number of sprites to draw per batch (i.e. the maximum number of sprites that can be represented by a single sprite batch mesh) for sprite batch meshes.

◆ s_min_sprites_per_batch

constexpr std::size_t mage::rendering::SpriteBatchMesh::s_min_sprites_per_batch = 128
static

The minimum number of sprites to draw per batch for sprite batch meshes.

◆ s_vertices_per_sprite

constexpr std::size_t mage::rendering::SpriteBatchMesh::s_vertices_per_sprite = 4
static

The number of vertices per sprite.