fennec
Loading...
Searching...
No Matches
enum.h
1// =====================================================================================================================
2// fennec, a free and open source game engine
3// Copyright © 2025 Medusa Slockbower
4//
5// This program is free software: you can redistribute it and/or modify
6// it under the terms of the GNU General Public License as published by
7// the Free Software Foundation, either version 3 of the License, or
8// (at your option) any later version.
9//
10// This program is distributed in the hope that it will be useful,
11// but WITHOUT ANY WARRANTY; without even the implied warranty of
12// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13// GNU General Public License for more details.
14//
15// You should have received a copy of the GNU General Public License
16// along with this program. If not, see <https://www.gnu.org/licenses/>.
17// =====================================================================================================================
18
19#ifndef FENNEC_RENDERERS_OPENGL_LIB_ENUM_H
20#define FENNEC_RENDERERS_OPENGL_LIB_ENUM_H
21
22#include <fennec/renderers/opengl/lib/fwd.h>
23
24namespace fennec
25{
26
27namespace gl
28{
29
30enum buffer_ : GLenum {
31 VERTEX = GL_ARRAY_BUFFER,
32 ELEMENT = GL_ELEMENT_ARRAY_BUFFER,
33 UNIFORM = GL_UNIFORM_BUFFER,
34 SHADER_STORAGE = GL_SHADER_STORAGE_BUFFER,
35 QUERY = GL_QUERY_BUFFER,
36 TEXTURE = GL_TEXTURE_BUFFER,
37 TRANSFORM_FEEDBACK = GL_TRANSFORM_FEEDBACK_BUFFER,
38 ATOMIC_COUNTER = GL_ATOMIC_COUNTER_BUFFER,
39 PARAMETER = GL_PARAMETER_BUFFER,
40 INDIRECT_DRAW = GL_DRAW_INDIRECT_BUFFER, INDIRECT_DISPATCH = GL_DISPATCH_INDIRECT_BUFFER,
41 COPY_READ = GL_COPY_READ_BUFFER, COPY_WRITE = GL_COPY_WRITE_BUFFER,
42 PIXEL_PACK = GL_PIXEL_PACK_BUFFER, PIXEL_UNPACK = GL_PIXEL_UNPACK_BUFFER,
43};
44
45enum buffer_flag_ : GLbitfield {
46 READ = GL_MAP_READ_BIT,
47 WRITE = GL_MAP_WRITE_BIT,
48 DYNAMIC = GL_DYNAMIC_STORAGE_BIT,
49 PERSISTENT = GL_MAP_PERSISTENT_BIT,
50 COHERENT = GL_MAP_COHERENT_BIT,
51 CLIENT = GL_CLIENT_STORAGE_BIT,
52 EXPLICIT_FLUSH = GL_MAP_FLUSH_EXPLICIT_BIT,
53 INVALIDATE = GL_MAP_INVALIDATE_BUFFER_BIT,
54};
55
56enum access_ : GLbitfield {
57 READ_ONLY = GL_READ_ONLY,
58 WRITE_ONLY = GL_WRITE_ONLY,
59 READ_WRITE = GL_READ_WRITE,
60};
61
62enum texture_ : GLenum {
63 TEX_1D = GL_TEXTURE_1D,
64 TEX_1D_ARRAY = GL_TEXTURE_1D_ARRAY,
65
66 TEX_2D = GL_TEXTURE_2D,
67 TEX_2D_ARRAY = GL_TEXTURE_2D_ARRAY,
68 TEX_2D_MS = GL_TEXTURE_2D_MULTISAMPLE,
69 TEX_2D_MS_ARRAY = GL_TEXTURE_2D_MULTISAMPLE_ARRAY,
70 TEX_RECT = GL_TEXTURE_RECTANGLE,
71
72 TEX_CUBEMAP = GL_TEXTURE_CUBE_MAP,
73 TEX_CUBEMAP_ARRAY = GL_TEXTURE_CUBE_MAP_ARRAY,
74
75 TEX_3D = GL_TEXTURE_3D,
76
77 TEX_BUFFER = GL_TEXTURE_BUFFER,
78};
79
80enum type_ : GLenum {
81 BOOL = GL_BOOL,
82 BVEC2 = GL_BOOL_VEC2,
83 BVEC3 = GL_BOOL_VEC3,
84 BVEC4 = GL_BOOL_VEC4,
85
86 BYTE = GL_BYTE,
87 SHORT = GL_SHORT,
88 INT = GL_INT,
89 IVEC2 = GL_INT_VEC2,
90 IVEC3 = GL_INT_VEC3,
91 IVEC4 = GL_INT_VEC4,
92
93 UBYTE = GL_UNSIGNED_BYTE,
94 USHORT = GL_UNSIGNED_SHORT,
95 UINT = GL_UNSIGNED_INT,
96 UVEC2 = GL_UNSIGNED_INT_VEC2,
97 UVEC3 = GL_UNSIGNED_INT_VEC3,
98 UVEC4 = GL_UNSIGNED_INT_VEC4,
99
100 HALF = GL_HALF_FLOAT,
101 FLOAT = GL_FLOAT,
102 VEC2 = GL_FLOAT_VEC2,
103 VEC3 = GL_FLOAT_VEC3,
104 VEC4 = GL_FLOAT_VEC4,
105 DOUBLE = GL_DOUBLE,
106 DVEC2 = GL_DOUBLE_VEC2,
107 DVEC3 = GL_DOUBLE_VEC3,
108 DVEC4 = GL_DOUBLE_VEC4,
109
110 UBYTE332 = GL_UNSIGNED_BYTE_3_3_2,
111 UBYTE233R = GL_UNSIGNED_BYTE_2_3_3_REV,
112 USHORT565 = GL_UNSIGNED_SHORT_5_6_5,
113 USHORT565R = GL_UNSIGNED_SHORT_5_6_5_REV,
114 USHORT4444 = GL_UNSIGNED_SHORT_4_4_4_4,
115 USHORT4444R = GL_UNSIGNED_SHORT_4_4_4_4_REV,
116 USHORT5551 = GL_UNSIGNED_SHORT_5_5_5_1,
117 USHORT1555R = GL_UNSIGNED_SHORT_1_5_5_5_REV,
118 UINT8888 = GL_UNSIGNED_INT_8_8_8_8,
119 UINT8888R = GL_UNSIGNED_INT_8_8_8_8_REV,
120 UINTAAA2 = GL_UNSIGNED_INT_10_10_10_2,
121 UINT2AAAR = GL_UNSIGNED_INT_2_10_10_10_REV,
122 UINT24_8 = GL_UNSIGNED_INT_24_8,
123
124 UINTABBFR = GL_UNSIGNED_INT_10F_11F_11F_REV,
125 UINT5999R = GL_UNSIGNED_INT_5_9_9_9_REV,
126 FLOAT32UINT24 = GL_FLOAT_32_UNSIGNED_INT_24_8_REV,
127
128 SAMPLER_1D = GL_SAMPLER_1D,
129 SAMPLER_1D_V = GL_SAMPLER_1D_ARRAY,
130 SHADOW_SAMPLER_1D = GL_SAMPLER_1D_SHADOW,
131 SHADOW_SAMPLER_1D_V = GL_SAMPLER_1D_ARRAY_SHADOW,
132
133 SAMPLER_2D = GL_SAMPLER_2D,
134 SAMPLER_2D_V = GL_SAMPLER_2D_ARRAY,
135 SAMPLER_RECT_2D = GL_SAMPLER_2D_RECT,
136 SAMPLER_2D_MS = GL_SAMPLER_2D_MULTISAMPLE,
137 SAMPLER_2D_MS_V = GL_SAMPLER_2D_MULTISAMPLE_ARRAY,
138 SHADOW_SAMPLER_2D = GL_SAMPLER_2D_SHADOW,
139 SHADOW_SAMPLER_2D_V = GL_SAMPLER_2D_ARRAY_SHADOW,
140 SHADOW_SAMPLER_RECT_2D = GL_SAMPLER_2D_RECT_SHADOW,
141 SAMPLER_CUBEMAP = GL_SAMPLER_CUBE,
142 SHADOW_SAMPLER_CUBEMAP = GL_SAMPLER_CUBE_SHADOW,
143 SAMPLER_3D = GL_SAMPLER_3D,
144 SAMPLER_BUFFER = GL_SAMPLER_BUFFER,
145
146 ISAMPLER_1D = GL_INT_SAMPLER_1D,
147 ISAMPLER_1D_V = GL_INT_SAMPLER_1D_ARRAY,
148 ISAMPLER_2D = GL_INT_SAMPLER_2D,
149 ISAMPLER_2D_V = GL_INT_SAMPLER_2D_ARRAY,
150 ISAMPLER_RECT_2D = GL_INT_SAMPLER_2D_RECT,
151 ISAMPLER_2D_MS = GL_INT_SAMPLER_2D_MULTISAMPLE,
152 ISAMPLER_2D_MS_V = GL_INT_SAMPLER_2D_MULTISAMPLE_ARRAY,
153 ISAMPLER_CUBEMAP = GL_INT_SAMPLER_CUBE,
154 ISAMPLER_3D = GL_INT_SAMPLER_3D,
155 ISAMPLER_BUFFER = GL_INT_SAMPLER_BUFFER,
156
157 USAMPLER_1D = GL_INT_SAMPLER_1D,
158 USAMPLER_1D_V = GL_INT_SAMPLER_1D_ARRAY,
159 USAMPLER_2D = GL_INT_SAMPLER_2D,
160 USAMPLER_2D_V = GL_INT_SAMPLER_2D_ARRAY,
161 USAMPLER_RECT_2D = GL_INT_SAMPLER_2D_RECT,
162 USAMPLER_2D_MS = GL_INT_SAMPLER_2D_MULTISAMPLE,
163 USAMPLER_2D_MS_V = GL_INT_SAMPLER_2D_MULTISAMPLE_ARRAY,
164 USAMPLER_CUBEMAP = GL_INT_SAMPLER_CUBE,
165 USAMPLER_3D = GL_INT_SAMPLER_3D,
166 USAMPLER_BUFFER = GL_INT_SAMPLER_BUFFER,
167
168 IMAGE_1D = GL_IMAGE_1D,
169 IMAGE_1D_V = GL_IMAGE_1D_ARRAY,
170 IMAGE_2D = GL_IMAGE_2D,
171 IMAGE_2D_V = GL_IMAGE_2D_ARRAY,
172 IMAGE_RECT_2D = GL_IMAGE_2D_RECT,
173 IMAGE_2D_MS = GL_IMAGE_2D_MULTISAMPLE,
174 IMAGE_2D_MS_V = GL_IMAGE_2D_MULTISAMPLE_ARRAY,
175 IMAGE_CUBEMAP = GL_IMAGE_CUBE,
176 IMAGE_3D = GL_IMAGE_3D,
177 IMAGE_BUFFER = GL_IMAGE_BUFFER,
178
179 IIMAGE_1D = GL_INT_IMAGE_1D,
180 IIMAGE_1D_V = GL_INT_IMAGE_1D_ARRAY,
181 IIMAGE_2D = GL_INT_IMAGE_2D,
182 IIMAGE_2D_V = GL_INT_IMAGE_2D_ARRAY,
183 IIMAGE_RECT_2D = GL_INT_IMAGE_2D_RECT,
184 IIMAGE_2D_MS = GL_INT_IMAGE_2D_MULTISAMPLE,
185 IIMAGE_2D_MS_V = GL_INT_IMAGE_2D_MULTISAMPLE_ARRAY,
186 IIMAGE_CUBEMAP = GL_INT_IMAGE_CUBE,
187 IIMAGE_3D = GL_INT_IMAGE_3D,
188 IIMAGE_BUFFER = GL_INT_IMAGE_BUFFER,
189
190 UIMAGE_1D = GL_UNSIGNED_INT_IMAGE_1D,
191 UIMAGE_1D_V = GL_UNSIGNED_INT_IMAGE_1D_ARRAY,
192 UIMAGE_2D = GL_UNSIGNED_INT_IMAGE_2D,
193 UIMAGE_2D_V = GL_UNSIGNED_INT_IMAGE_2D_ARRAY,
194 UIMAGE_RECT_2D = GL_UNSIGNED_INT_IMAGE_2D_RECT,
195 UIMAGE_2D_MS = GL_UNSIGNED_INT_IMAGE_2D_MULTISAMPLE,
196 UIMAGE_2D_MS_V = GL_UNSIGNED_INT_IMAGE_2D_MULTISAMPLE_ARRAY,
197 UIMAGE_CUBEMAP = GL_UNSIGNED_INT_IMAGE_CUBE,
198 UIMAGE_3D = GL_UNSIGNED_INT_IMAGE_3D,
199 UIMAGE_BUFFER = GL_UNSIGNED_INT_IMAGE_BUFFER,
200
201 AtomicCounter = GL_UNSIGNED_INT_ATOMIC_COUNTER,
202};
203
204enum component_ : GLenum {
205 ZERO = GL_ZERO,
206 ONE = GL_ONE,
207 R = GL_RED,
208 G = GL_GREEN,
209 B = GL_BLUE,
210 A = GL_ALPHA,
211 RGB = GL_RGB,
212 BGR = GL_BGR,
213 RGBA = GL_RGBA,
214 BGRA = GL_BGRA,
215 RI = GL_RED_INTEGER,
216 GI = GL_GREEN_INTEGER,
217 BI = GL_BLUE_INTEGER,
218 AI = GL_ALPHA_INTEGER,
219 RGBI = GL_RGB_INTEGER,
220 BGRI = GL_BGR_INTEGER,
221 RGBAI = GL_RGBA_INTEGER,
222 BGRAI = GL_BGRA_INTEGER,
223 STENCIL = GL_STENCIL_INDEX,
224 DEPTH = GL_DEPTH_COMPONENT,
225 DEPTH_STENCIL = GL_DEPTH_STENCIL,
226};
227
228enum format_ : GLint {
229 R8 = GL_R8,
230 R8_SNORM = GL_R8_SNORM,
231 R16 = GL_R16,
232 R16_SNORM = GL_R16_SNORM,
233
234 RG8 = GL_RG8,
235 RG8_SNORM = GL_RG8_SNORM,
236 RG16 = GL_RG16,
237 RG16_SNORM = GL_RG16_SNORM,
238
239 RGB332 = GL_R3_G3_B2,
240 RGB4 = GL_RGB4,
241 RGB5 = GL_RGB5,
242 RGB8 = GL_RGB8,
243 RGB8_SNORM = GL_RGB8_SNORM,
244 RGB10 = GL_RGB10,
245 RGB12 = GL_RGB12,
246 RGB16 = GL_RGB16,
247 RGB16_SNORM = GL_RGB16_SNORM,
248
249 RGBA2 = GL_RGBA2,
250 RGBA4 = GL_RGBA4,
251 RGB5_A1 = GL_RGB5_A1,
252 RGBA8 = GL_RGBA8,
253 RGBA8_SNORM = GL_RGBA8_SNORM,
254 RGB10_A2 = GL_RGB10_A2,
255 RGB10_A2UI = GL_RGB10_A2UI,
256 RGBA12 = GL_RGBA12,
257 RGBA16 = GL_RGBA16,
258
259 SRGB8 = GL_SRGB8,
260 SRGBA8 = GL_SRGB8_ALPHA8,
261
262 R16F = GL_R16F,
263 RG16F = GL_RG16F,
264 RGB16F = GL_RGB16F,
265 RGBA16F = GL_RGBA16F,
266
267 R32F = GL_R32F,
268 RG32F = GL_RG32F,
269 RGB32F = GL_RGB32F,
270 RGBA32F = GL_RGBA32F,
271
272 R8I = GL_R8I,
273 RG8I = GL_RG8I,
274 RGB8I = GL_RGB8I,
275 RGBA8I = GL_RGBA8I,
276
277 R16I = GL_R16I,
278 RG16I = GL_RG16I,
279 RGB16I = GL_RGB16I,
280 RGBA16I = GL_RGBA16I,
281
282 R32I = GL_R32I,
283 RG32I = GL_RG32I,
284 RGB32I = GL_RGB32I,
285 RGBA32I = GL_RGBA32I,
286
287 R8UI = GL_R8UI,
288 RG8UI = GL_RG8UI,
289 RGB8UI = GL_RGB8UI,
290 RGBA8UI = GL_RGBA8UI,
291
292 R16UI = GL_R16UI,
293 RG16UI = GL_RG16UI,
294 RGB16UI = GL_RGB16UI,
295 RGBA16UI = GL_RGBA16UI,
296
297 R32UI = GL_R32UI,
298 RG32UI = GL_RG32UI,
299 RGB32UI = GL_RGB32UI,
300 RGBA32UI = GL_RGBA32UI,
301
302 RGB_DXT1 = GL_COMPRESSED_RGB_S3TC_DXT1_EXT,
303 RGBA_DXT1 = GL_COMPRESSED_RGBA_S3TC_DXT1_EXT,
304 RGBA_DXT3 = GL_COMPRESSED_RGBA_S3TC_DXT3_EXT,
305 RGBA_DXT5 = GL_COMPRESSED_RGBA_S3TC_DXT5_EXT,
306
307 SRGB_DXT1 = GL_COMPRESSED_SRGB_S3TC_DXT1_EXT,
308 SRGBA_DXT1 = GL_COMPRESSED_SRGB_ALPHA_S3TC_DXT1_EXT,
309 SRGBA_DXT3 = GL_COMPRESSED_SRGB_ALPHA_S3TC_DXT3_EXT,
310 SRGBA_DXT5 = GL_COMPRESSED_SRGB_ALPHA_S3TC_DXT5_EXT,
311};
312
313}
314
315}
316
317#endif // FENNEC_RENDERERS_OPENGL_LIB_ENUM_H