Pioneer
Loading...
Searching...
No Matches
Types.h
Go to the documentation of this file.
1// Copyright © 2008-2023 Pioneer Developers. See AUTHORS.txt for details
2// Licensed under the terms of the GPL v3. See licenses/GPL-3.txt
3
4#ifndef GRAPHICS_TYPES_H
5#define GRAPHICS_TYPES_H
6
7#include "SDL_stdinc.h"
8
9namespace Graphics {
10
11 //Vertex attribute semantic
12 enum VertexAttrib : uint8_t {
14 ATTRIB_POSITION = (1u << 0),
15 ATTRIB_NORMAL = (1u << 1),
16 ATTRIB_DIFFUSE = (1u << 2),
17 ATTRIB_UV0 = (1u << 3),
18 //ATTRIB_UV1 = (1u << 4),
19 ATTRIB_TANGENT = (1u << 5),
20 //ATTRIB_BITANGENT = (1u << 6)
21 ATTRIB_POSITION2D = (1u << 7),
22 //etc.
23 };
24
25 // typedef Uint32 AttributeSet;
26
27 struct AttributeSet {
29 m_attr(0) {}
31 m_attr(attr) {}
32 AttributeSet(uint32_t attr) :
33 m_attr(attr) {}
34 AttributeSet &operator=(uint32_t rhs)
35 {
36 m_attr = rhs;
37 return *this;
38 }
39 operator uint32_t() const { return m_attr; }
40
41 inline bool HasAttrib(uint32_t attr) const { return (m_attr & attr) == attr; }
42
43 private:
44 uint32_t m_attr;
45 };
46
47 enum VertexAttribFormat : uint8_t {
53 };
54
55 enum ConstantDataFormat : uint8_t {
63 };
64
68 };
69
74 };
75
79 };
80
81 // clang-format off
83 POINTS = 0, //GL_POINTS,
84 LINE_SINGLE, //GL_LINES, //draw one line per two vertices
85 LINE_LOOP, //GL_LINE_LOOP, //connect vertices, connect start & end
86 LINE_STRIP, //GL_LINE_STRIP, //connect vertices
87 TRIANGLES, //GL_TRIANGLES,
88 TRIANGLE_STRIP, //GL_TRIANGLE_STRIP,
89 TRIANGLE_FAN, //GL_TRIANGLE_FAN
90 };
91 // clang-format on
92
93 enum BlendMode : uint32_t {
97 BLEND_ALPHA_ONE, //"additive alpha"
99 BLEND_SET_ALPHA, // copy alpha channel
100 BLEND_DEST_ALPHA // XXX maybe crappy name
101 };
102
103 enum FaceCullMode : uint32_t {
107 };
108
109} // namespace Graphics
110
111#endif // GRAPHICS_TYPES_H
Definition Background.h:14
BlendMode
Definition Types.h:93
@ BLEND_ALPHA_ONE
Definition Types.h:97
@ BLEND_ALPHA
Definition Types.h:96
@ BLEND_ADDITIVE
Definition Types.h:95
@ BLEND_DEST_ALPHA
Definition Types.h:100
@ BLEND_SOLID
Definition Types.h:94
@ BLEND_SET_ALPHA
Definition Types.h:99
@ BLEND_ALPHA_PREMULT
Definition Types.h:98
VertexAttrib
Definition Types.h:12
@ ATTRIB_TANGENT
Definition Types.h:19
@ ATTRIB_DIFFUSE
Definition Types.h:16
@ ATTRIB_NONE
Definition Types.h:13
@ ATTRIB_UV0
Definition Types.h:17
@ ATTRIB_POSITION2D
Definition Types.h:21
@ ATTRIB_POSITION
Definition Types.h:14
@ ATTRIB_NORMAL
Definition Types.h:15
FaceCullMode
Definition Types.h:103
@ CULL_NONE
Definition Types.h:106
@ CULL_BACK
Definition Types.h:104
@ CULL_FRONT
Definition Types.h:105
IndexBufferSize
Definition Types.h:76
@ INDEX_BUFFER_32BIT
Definition Types.h:78
@ INDEX_BUFFER_16BIT
Definition Types.h:77
PrimitiveType
Definition Types.h:82
@ TRIANGLE_FAN
Definition Types.h:89
@ LINE_LOOP
Definition Types.h:85
@ LINE_STRIP
Definition Types.h:86
@ TRIANGLES
Definition Types.h:87
@ TRIANGLE_STRIP
Definition Types.h:88
@ POINTS
Definition Types.h:83
@ LINE_SINGLE
Definition Types.h:84
BufferUsage
Definition Types.h:65
@ BUFFER_USAGE_STATIC
Definition Types.h:66
@ BUFFER_USAGE_DYNAMIC
Definition Types.h:67
ConstantDataFormat
Definition Types.h:55
@ DATA_FORMAT_INT
Definition Types.h:57
@ DATA_FORMAT_NONE
Definition Types.h:56
@ DATA_FORMAT_MAT3
Definition Types.h:61
@ DATA_FORMAT_FLOAT3
Definition Types.h:59
@ DATA_FORMAT_FLOAT4
Definition Types.h:60
@ DATA_FORMAT_MAT4
Definition Types.h:62
@ DATA_FORMAT_FLOAT
Definition Types.h:58
BufferMapMode
Definition Types.h:70
@ BUFFER_MAP_READ
Definition Types.h:73
@ BUFFER_MAP_WRITE
Definition Types.h:72
@ BUFFER_MAP_NONE
Definition Types.h:71
VertexAttribFormat
Definition Types.h:47
@ ATTRIB_FORMAT_FLOAT2
Definition Types.h:49
@ ATTRIB_FORMAT_UBYTE4
Definition Types.h:52
@ ATTRIB_FORMAT_FLOAT3
Definition Types.h:50
@ ATTRIB_FORMAT_NONE
Definition Types.h:48
@ ATTRIB_FORMAT_FLOAT4
Definition Types.h:51
Definition Types.h:27
AttributeSet(VertexAttrib attr)
Definition Types.h:30
AttributeSet & operator=(uint32_t rhs)
Definition Types.h:34
bool HasAttrib(uint32_t attr) const
Definition Types.h:41
AttributeSet()
Definition Types.h:28
AttributeSet(uint32_t attr)
Definition Types.h:32