Base class for the vertex and instance attributes of mesh and shader program. More...
#include <kanzi/core.ui/graphics3d/graphics_enums.hpp>
Public Types | |
enum | Semantic { SemanticPosition, SemanticNormal, SemanticTangent, SemanticTextureCoordinate, SemanticColor, SemanticWeight, SemanticMatrixPalette, SemanticBitangent, SemanticCount, SemanticCustom, SemanticInvalid } |
Specifies the available vertex attributes. More... | |
Public Member Functions | |
VertexAttribute ()=default | |
Constructor. More... | |
VertexAttribute (string_view name, Semantic semantic, unsigned int semanticIndex) | |
Constructor. More... | |
Public Attributes | |
string | name |
Name of the attribute. Not currently used. More... | |
Semantic | semantic |
Attribute semantic. More... | |
unsigned int | semanticIndex |
Semantic index. More... | |
Friends | |
bool | operator!= (const VertexAttribute &attribute1, const VertexAttribute &attribute2) |
Comparison operator. More... | |
bool | operator== (const VertexAttribute &attribute1, const VertexAttribute &attribute2) |
Comparison operator. More... | |
void | swap (VertexAttribute &attribute1, VertexAttribute &attribute2) |
Base class for the vertex and instance attributes of mesh and shader program.
Kanzi uses vertex attributes in model data (meshes) and material types (shader programs). The draw calls that Kanzi sends to a graphics device for execution must have both mesh and shader program attributes set up properly. VertexAttribute is a base class for MeshVertexAttribute and ShaderVertexAttribute. VertexAttribute contains a name, a semantic, and a semantic index. The derived classes MeshVertexAttribute and ShaderVertexAttribute contain additional information that is specific to the mesh or shader.
Each mesh has a number of attributes that Kanzi repeats for every vertex. For example, a mesh can have attributes such as position, normal, and texture coordinate. Meshes provide values for each attribute for each vertex. Shaders consume some or all of the attributes provided by a mesh.
Specifies the available vertex attributes.
Enumerator | |
---|---|
SemanticPosition |
Position. |
SemanticNormal |
Normal. |
SemanticTangent |
Tangent. |
SemanticTextureCoordinate |
Texture coordinate. |
SemanticColor |
Color. |
SemanticWeight |
Weight for matrix palette. |
SemanticMatrixPalette |
Matrix palette. |
SemanticBitangent |
Bitangent. This semantic is also often called "Binormal". The nomenclature is interchangeable. |
SemanticCount |
Number of fixed vertex attribute semantics. |
SemanticCustom |
Custom attribute semantic. |
SemanticInvalid |
Invalid semantic. |
|
explicitdefault |
Constructor.
|
inlineexplicit |
Constructor.
name | Name for vertex attribute. |
semantic | Semantic for vertex attribute. |
semanticIndex | Semantic index for vertex attribute. |
|
friend |
|
friend |
Comparison operator.
|
friend |
Comparison operator.
string kanzi::VertexAttribute::name |
Name of the attribute. Not currently used.
Semantic kanzi::VertexAttribute::semantic |
Attribute semantic.
unsigned int kanzi::VertexAttribute::semanticIndex |
Semantic index.