Castor3D 0.12.0
Multiplatform 3D engine
Public Member Functions | Protected Attributes | List of all members
castor3d::IndexMapping Class Referenceabstract

#include <IndexMapping.hpp>

Inheritance diagram for castor3d::IndexMapping:
Inheritance graph
[legend]
Collaboration diagram for castor3d::IndexMapping:
Collaboration graph
[legend]

Public Member Functions

C3D_API IndexMapping (Submesh &submesh, castor::String const &type, VkBufferUsageFlags bufferUsageFlags)
 Constructor. More...
 
virtual C3D_API uint32_t getCount () const =0
 
virtual C3D_API uint32_t getComponentsCount () const =0
 
virtual C3D_API void sortByDistance (castor::Point3f const &cameraPosition)=0
 Sorts the face from farthest to nearest from the camera. More...
 
virtual C3D_API void computeNormals (bool reverted=false)=0
 Generates normals and tangents. More...
 
void gather (ShaderFlags const &shaderFlags, ProgramFlags const &programFlags, MaterialRPtr material, ashes::BufferCRefArray &buffers, std::vector< uint64_t > &offsets, ashes::PipelineVertexInputStateCreateInfoCRefArray &layouts, TextureFlagsArray const &mask, uint32_t &currentLocation) override
 Gathers buffers that need to go in a vertex layout. More...
 
ProgramFlags getProgramFlags (MaterialRPtr material) const override
 
VkBufferUsageFlags getUsageFlags () const override
 
- Public Member Functions inherited from castor3d::SubmeshComponent
C3D_API SubmeshComponent (Submesh &submesh, castor::String const &type, uint32_t id)
 Constructor. More...
 
virtual C3D_API ~SubmeshComponent () noexcept=default
 Destructor. More...
 
C3D_API bool initialise (RenderDevice const &device)
 Initialises the submesh. More...
 
C3D_API void cleanup (RenderDevice const &device)
 Cleans the submesh. More...
 
C3D_API void upload ()
 Uploads data on VRAM. More...
 
virtual C3D_API void gather (ShaderFlags const &shaderFlags, ProgramFlags const &programFlags, MaterialRPtr material, ashes::BufferCRefArray &buffers, std::vector< uint64_t > &offsets, ashes::PipelineVertexInputStateCreateInfoCRefArray &layouts, TextureFlagsArray const &mask, uint32_t &currentLocation)=0
 Gathers buffers that need to go in a vertex layout. More...
 
virtual C3D_API ProgramFlags getProgramFlags (MaterialRPtr material) const =0
 
virtual C3D_API VkBufferUsageFlags getUsageFlags () const
 
virtual C3D_API SubmeshComponentSPtr clone (Submesh &submesh) const =0
 
castor::String const & getType () const
 
void needsUpdate ()
 Sets the component to be updated. More...
 
uint32_t getID ()
 

Protected Attributes

StagingDataUPtr m_staging
 

Constructor & Destructor Documentation

◆ IndexMapping()

C3D_API castor3d::IndexMapping::IndexMapping ( Submesh submesh,
castor::String const &  type,
VkBufferUsageFlags  bufferUsageFlags 
)

Constructor.

Parameters
[in]submeshThe parent submesh.
[in]typeThe component type.
[in]bufferUsageFlagsThe buffer usage flags.

Member Function Documentation

◆ computeNormals()

virtual C3D_API void castor3d::IndexMapping::computeNormals ( bool  reverted = false)
pure virtual

Generates normals and tangents.

Parameters
[in]revertedTells if normals are inverted.

Implemented in castor3d::LinesMapping, and castor3d::TriFaceMapping.

◆ gather()

void castor3d::IndexMapping::gather ( ShaderFlags const &  shaderFlags,
ProgramFlags const &  programFlags,
MaterialRPtr  material,
ashes::BufferCRefArray &  buffers,
std::vector< uint64_t > &  offsets,
ashes::PipelineVertexInputStateCreateInfoCRefArray &  layouts,
TextureFlagsArray const &  mask,
uint32_t &  currentLocation 
)
inlineoverridevirtual

Gathers buffers that need to go in a vertex layout.

Parameters
[in]shaderFlagsThe shader flags.
[in]programFlagsThe program flags.
[in]materialThe material.
[in,out]buffersReceives the buffers.
[in,out]offsetsReceives the buffers offsets.
[in,out]layoutsReceives the vertex layouts.
[in]maskThe textures mask.
[in,out]currentLocationThe current attribute location.

Implements castor3d::SubmeshComponent.

◆ getComponentsCount()

virtual C3D_API uint32_t castor3d::IndexMapping::getComponentsCount ( ) const
pure virtual
Returns
The components count in an element.

Implemented in castor3d::LinesMapping, and castor3d::TriFaceMapping.

◆ getCount()

virtual C3D_API uint32_t castor3d::IndexMapping::getCount ( ) const
pure virtual
Returns
The elements count.

Implemented in castor3d::LinesMapping, and castor3d::TriFaceMapping.

◆ getProgramFlags()

ProgramFlags castor3d::IndexMapping::getProgramFlags ( MaterialRPtr  material) const
inlineoverridevirtual

Returns
The shader program flags.
Parameters
[in]materialThe material.

Implements castor3d::SubmeshComponent.

◆ getUsageFlags()

VkBufferUsageFlags castor3d::IndexMapping::getUsageFlags ( ) const
inlineoverridevirtual

Returns
The buffer usage flags.

Reimplemented from castor3d::SubmeshComponent.

◆ sortByDistance()

virtual C3D_API void castor3d::IndexMapping::sortByDistance ( castor::Point3f const &  cameraPosition)
pure virtual

Sorts the face from farthest to nearest from the camera.

Parameters
[in]cameraPositionThe camera position, relative to submesh

Implemented in castor3d::LinesMapping, and castor3d::TriFaceMapping.

Member Data Documentation

◆ m_staging

StagingDataUPtr castor3d::IndexMapping::m_staging
protected

The documentation for this class was generated from the following file: