1 // Copyright © 2008-2021 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 typedef Uint32 AttributeSet; 12 13 //Vertex attribute semantic 14 enum VertexAttrib { 15 ATTRIB_NONE = 0, 16 ATTRIB_POSITION = (1u << 0), 17 ATTRIB_NORMAL = (1u << 1), 18 ATTRIB_DIFFUSE = (1u << 2), 19 ATTRIB_UV0 = (1u << 3), 20 //ATTRIB_UV1 = (1u << 4), 21 ATTRIB_TANGENT = (1u << 5), 22 //ATTRIB_BITANGENT = (1u << 6) 23 //etc. 24 }; 25 26 enum VertexAttribFormat { 27 ATTRIB_FORMAT_NONE = 0, 28 ATTRIB_FORMAT_FLOAT2, 29 ATTRIB_FORMAT_FLOAT3, 30 ATTRIB_FORMAT_FLOAT4, 31 ATTRIB_FORMAT_UBYTE4 32 }; 33 34 enum BufferUsage { 35 BUFFER_USAGE_STATIC, 36 BUFFER_USAGE_DYNAMIC 37 }; 38 39 enum BufferMapMode { 40 BUFFER_MAP_NONE, 41 BUFFER_MAP_WRITE, 42 BUFFER_MAP_READ 43 }; 44 45 // clang-format off 46 enum PrimitiveType { 47 POINTS = 0, //GL_POINTS, 48 LINE_SINGLE, //GL_LINES, //draw one line per two vertices 49 LINE_LOOP, //GL_LINE_LOOP, //connect vertices, connect start & end 50 LINE_STRIP, //GL_LINE_STRIP, //connect vertices 51 TRIANGLES, //GL_TRIANGLES, 52 TRIANGLE_STRIP, //GL_TRIANGLE_STRIP, 53 TRIANGLE_FAN, //GL_TRIANGLE_FAN 54 }; 55 // clang-format on 56 57 enum BlendMode : uint32_t { 58 BLEND_SOLID, 59 BLEND_ADDITIVE, 60 BLEND_ALPHA, 61 BLEND_ALPHA_ONE, //"additive alpha" 62 BLEND_ALPHA_PREMULT, 63 BLEND_SET_ALPHA, // copy alpha channel 64 BLEND_DEST_ALPHA // XXX maybe crappy name 65 }; 66 67 enum FaceCullMode : uint32_t { 68 CULL_BACK, 69 CULL_FRONT, 70 CULL_NONE 71 }; 72 73 } // namespace Graphics 74 75 #endif // GRAPHICS_TYPES_H 76