VisuTwin Canvas
C++ 3D Engine — Metal Backend
Loading...
Searching...
No Matches
vertexFormat.h
Go to the documentation of this file.
1
// SPDX-License-Identifier: Apache-2.0
2
// Copyright 2025-2026 Arnis Lektauers
3
//
4
// Created by Arnis Lektauers on 13.09.2025.
5
//
6
#pragma once
7
8
#include <cstdint>
9
#include <string>
10
11
namespace
visutwin::canvas
12
{
13
// Vertex attribute semantic constants
14
enum class
VertexSemantic
{
15
SEMANTIC_POSITION
,
16
SEMANTIC_NORMAL
,
17
SEMANTIC_TANGENT
,
18
SEMANTIC_BLENDWEIGHT
,
19
SEMANTIC_BLENDINDICES
,
20
SEMANTIC_COLOR
,
21
SEMANTIC_TEXCOORD
,
22
SEMANTIC_TEXCOORD0
,
23
SEMANTIC_TEXCOORD1
,
24
SEMANTIC_TEXCOORD2
,
25
SEMANTIC_TEXCOORD3
,
26
SEMANTIC_TEXCOORD4
,
27
SEMANTIC_TEXCOORD5
,
28
SEMANTIC_TEXCOORD6
,
29
SEMANTIC_TEXCOORD7
,
30
SEMANTIC_ATTR0
,
31
SEMANTIC_ATTR1
,
32
SEMANTIC_ATTR2
,
33
SEMANTIC_ATTR3
,
34
SEMANTIC_ATTR4
,
35
SEMANTIC_ATTR5
,
36
SEMANTIC_ATTR6
,
37
SEMANTIC_ATTR7
,
38
SEMANTIC_ATTR8
,
39
SEMANTIC_ATTR9
,
40
SEMANTIC_ATTR10
,
41
SEMANTIC_ATTR11
,
42
SEMANTIC_ATTR12
,
43
SEMANTIC_ATTR13
,
44
SEMANTIC_ATTR14
,
45
SEMANTIC_ATTR15
46
};
47
48
// Vertex data type constants
49
enum class
VertexDataType
{
50
TYPE_INT8
= 0,
51
TYPE_UINT8
= 1,
52
TYPE_INT16
= 2,
53
TYPE_UINT16
= 3,
54
TYPE_INT32
= 4,
55
TYPE_UINT32
= 5,
56
TYPE_FLOAT32
= 6,
57
TYPE_FLOAT16
= 7
58
};
59
63
class
VertexFormat
64
{
65
public
:
66
VertexFormat
(
int
size
,
bool
interleaved =
true
,
bool
instancing =
false
);
67
68
int
size
()
const
{
return
_size; }
69
70
int
verticesByteSize
()
const
{
return
_verticesByteSize; }
71
72
// Get the rendering hash for fast comparison
73
uint32_t
renderingHash
()
const
{
return
_renderingHash; }
74
75
const
std::string&
renderingHashString
()
const
{
return
_renderingHashString; }
76
77
bool
isInterleaved
()
const
{
return
_interleaved; }
78
79
bool
isInstancing
()
const
{
return
_instancing; }
80
81
private
:
82
int
_verticesByteSize = 0;
83
84
int
_size;
85
86
uint32_t _renderingHash;
87
88
std::string _renderingHashString;
89
90
bool
_interleaved;
91
bool
_instancing;
92
};
93
}
visutwin::canvas::VertexFormat::verticesByteSize
int verticesByteSize() const
Definition
vertexFormat.h:70
visutwin::canvas::VertexFormat::renderingHash
uint32_t renderingHash() const
Definition
vertexFormat.h:73
visutwin::canvas::VertexFormat::renderingHashString
const std::string & renderingHashString() const
Definition
vertexFormat.h:75
visutwin::canvas::VertexFormat::isInstancing
bool isInstancing() const
Definition
vertexFormat.h:79
visutwin::canvas::VertexFormat::isInterleaved
bool isInterleaved() const
Definition
vertexFormat.h:77
visutwin::canvas::VertexFormat::VertexFormat
VertexFormat(int size, bool interleaved=true, bool instancing=false)
Definition
vertexFormat.cpp:12
visutwin::canvas::VertexFormat::size
int size() const
Definition
vertexFormat.h:68
visutwin::canvas
Definition
eventHandler.cpp:9
visutwin::canvas::VertexDataType
VertexDataType
Definition
vertexFormat.h:49
visutwin::canvas::VertexDataType::TYPE_INT16
@ TYPE_INT16
Definition
vertexFormat.h:52
visutwin::canvas::VertexDataType::TYPE_FLOAT32
@ TYPE_FLOAT32
Definition
vertexFormat.h:56
visutwin::canvas::VertexDataType::TYPE_FLOAT16
@ TYPE_FLOAT16
Definition
vertexFormat.h:57
visutwin::canvas::VertexDataType::TYPE_UINT16
@ TYPE_UINT16
Definition
vertexFormat.h:53
visutwin::canvas::VertexDataType::TYPE_UINT8
@ TYPE_UINT8
Definition
vertexFormat.h:51
visutwin::canvas::VertexDataType::TYPE_INT8
@ TYPE_INT8
Definition
vertexFormat.h:50
visutwin::canvas::VertexDataType::TYPE_INT32
@ TYPE_INT32
Definition
vertexFormat.h:54
visutwin::canvas::VertexDataType::TYPE_UINT32
@ TYPE_UINT32
Definition
vertexFormat.h:55
visutwin::canvas::VertexSemantic
VertexSemantic
Definition
vertexFormat.h:14
visutwin::canvas::VertexSemantic::SEMANTIC_ATTR0
@ SEMANTIC_ATTR0
Definition
vertexFormat.h:30
visutwin::canvas::VertexSemantic::SEMANTIC_TANGENT
@ SEMANTIC_TANGENT
Definition
vertexFormat.h:17
visutwin::canvas::VertexSemantic::SEMANTIC_TEXCOORD6
@ SEMANTIC_TEXCOORD6
Definition
vertexFormat.h:28
visutwin::canvas::VertexSemantic::SEMANTIC_ATTR4
@ SEMANTIC_ATTR4
Definition
vertexFormat.h:34
visutwin::canvas::VertexSemantic::SEMANTIC_TEXCOORD5
@ SEMANTIC_TEXCOORD5
Definition
vertexFormat.h:27
visutwin::canvas::VertexSemantic::SEMANTIC_TEXCOORD7
@ SEMANTIC_TEXCOORD7
Definition
vertexFormat.h:29
visutwin::canvas::VertexSemantic::SEMANTIC_ATTR7
@ SEMANTIC_ATTR7
Definition
vertexFormat.h:37
visutwin::canvas::VertexSemantic::SEMANTIC_COLOR
@ SEMANTIC_COLOR
Definition
vertexFormat.h:20
visutwin::canvas::VertexSemantic::SEMANTIC_ATTR3
@ SEMANTIC_ATTR3
Definition
vertexFormat.h:33
visutwin::canvas::VertexSemantic::SEMANTIC_ATTR5
@ SEMANTIC_ATTR5
Definition
vertexFormat.h:35
visutwin::canvas::VertexSemantic::SEMANTIC_ATTR6
@ SEMANTIC_ATTR6
Definition
vertexFormat.h:36
visutwin::canvas::VertexSemantic::SEMANTIC_TEXCOORD2
@ SEMANTIC_TEXCOORD2
Definition
vertexFormat.h:24
visutwin::canvas::VertexSemantic::SEMANTIC_TEXCOORD
@ SEMANTIC_TEXCOORD
Definition
vertexFormat.h:21
visutwin::canvas::VertexSemantic::SEMANTIC_ATTR9
@ SEMANTIC_ATTR9
Definition
vertexFormat.h:39
visutwin::canvas::VertexSemantic::SEMANTIC_TEXCOORD4
@ SEMANTIC_TEXCOORD4
Definition
vertexFormat.h:26
visutwin::canvas::VertexSemantic::SEMANTIC_BLENDWEIGHT
@ SEMANTIC_BLENDWEIGHT
Definition
vertexFormat.h:18
visutwin::canvas::VertexSemantic::SEMANTIC_TEXCOORD1
@ SEMANTIC_TEXCOORD1
Definition
vertexFormat.h:23
visutwin::canvas::VertexSemantic::SEMANTIC_TEXCOORD3
@ SEMANTIC_TEXCOORD3
Definition
vertexFormat.h:25
visutwin::canvas::VertexSemantic::SEMANTIC_ATTR10
@ SEMANTIC_ATTR10
Definition
vertexFormat.h:40
visutwin::canvas::VertexSemantic::SEMANTIC_ATTR12
@ SEMANTIC_ATTR12
Definition
vertexFormat.h:42
visutwin::canvas::VertexSemantic::SEMANTIC_ATTR8
@ SEMANTIC_ATTR8
Definition
vertexFormat.h:38
visutwin::canvas::VertexSemantic::SEMANTIC_BLENDINDICES
@ SEMANTIC_BLENDINDICES
Definition
vertexFormat.h:19
visutwin::canvas::VertexSemantic::SEMANTIC_NORMAL
@ SEMANTIC_NORMAL
Definition
vertexFormat.h:16
visutwin::canvas::VertexSemantic::SEMANTIC_ATTR15
@ SEMANTIC_ATTR15
Definition
vertexFormat.h:45
visutwin::canvas::VertexSemantic::SEMANTIC_ATTR1
@ SEMANTIC_ATTR1
Definition
vertexFormat.h:31
visutwin::canvas::VertexSemantic::SEMANTIC_ATTR2
@ SEMANTIC_ATTR2
Definition
vertexFormat.h:32
visutwin::canvas::VertexSemantic::SEMANTIC_ATTR14
@ SEMANTIC_ATTR14
Definition
vertexFormat.h:44
visutwin::canvas::VertexSemantic::SEMANTIC_ATTR13
@ SEMANTIC_ATTR13
Definition
vertexFormat.h:43
visutwin::canvas::VertexSemantic::SEMANTIC_POSITION
@ SEMANTIC_POSITION
Definition
vertexFormat.h:15
visutwin::canvas::VertexSemantic::SEMANTIC_ATTR11
@ SEMANTIC_ATTR11
Definition
vertexFormat.h:41
visutwin::canvas::VertexSemantic::SEMANTIC_TEXCOORD0
@ SEMANTIC_TEXCOORD0
Definition
vertexFormat.h:22
platform
graphics
vertexFormat.h
Generated by
1.16.1