Pioneer
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 
9 namespace 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 
65  enum BufferUsage {
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 {
106  CULL_NONE
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