Tatooine
tostring.h
Go to the documentation of this file.
1#ifndef TATOOINE_GL_TO_STRING_H
2#define TATOOINE_GL_TO_STRING_H
3//==============================================================================
4#include <string>
5#include "glincludes.h"
6//==============================================================================
7namespace tatooine::gl {
8//==============================================================================
9inline auto texparami_to_string(GLint i) -> std::string {
10 switch (i) {
11 // texture wrapping
12 case GL_CLAMP_TO_BORDER: return "GL_CLAMP_TO_BORDER";
13 case GL_CLAMP_TO_EDGE: return "GL_CLAMP_TO_EDGE";
14 case GL_REPEAT: return "GL_REPEAT";
15 case GL_MIRRORED_REPEAT: return "GL_MIRRORED_REPEAT";
16
17 // texture interpolation
18 case GL_NEAREST: return "GL_NEAREST";
19 case GL_LINEAR: return "GL_LINEAR";
20 case GL_NEAREST_MIPMAP_NEAREST: return "GL_NEAREST_MIPMAP_NEAREST";
21 case GL_LINEAR_MIPMAP_NEAREST: return "GL_LINEAR_MIPMAP_NEAREST";
22 case GL_NEAREST_MIPMAP_LINEAR: return "GL_NEAREST_MIPMAP_LINEAR";
23 case GL_LINEAR_MIPMAP_LINEAR: return "GL_LINEAR_MIPMAP_LINEAR";
24 default: return std::to_string(i);
25 }
26}
27//------------------------------------------------------------------------------
28inline auto to_string(GLenum e) -> std::string {
29 switch (e) {
30 // buffers
31 case GL_ARRAY_BUFFER: return "GL_ARRAY_BUFFER";
32 case GL_ATOMIC_COUNTER_BUFFER: return "GL_ATOMIC_COUNTER_BUFFER";
33 case GL_COPY_READ_BUFFER: return "GL_COPY_READ_BUFFER";
34 case GL_COPY_WRITE_BUFFER: return "GL_COPY_WRITE_BUFFER";
35 case GL_DISPATCH_INDIRECT_BUFFER: return "GL_DISPATCH_INDIRECT_BUFFER";
36 case GL_DRAW_INDIRECT_BUFFER: return "GL_DRAW_INDIRECT_BUFFER";
37 case GL_ELEMENT_ARRAY_BUFFER: return "GL_ELEMENT_ARRAY_BUFFER";
38 case GL_PIXEL_PACK_BUFFER: return "GL_PIXEL_PACK_BUFFER";
39 case GL_PIXEL_UNPACK_BUFFER: return "GL_PIXEL_UNPACK_BUFFER";
40 case GL_QUERY_BUFFER: return "GL_QUERY_BUFFER";
41 case GL_SHADER_STORAGE_BUFFER: return "GL_SHADER_STORAGE_BUFFER";
42 case GL_TEXTURE_BUFFER: return "GL_TEXTURE_BUFFER";
43 case GL_TRANSFORM_FEEDBACK_BUFFER: return "GL_TRANSFORM_FEEDBACK_BUFFER";
44 case GL_UNIFORM_BUFFER: return "GL_UNIFORM_BUFFER";
45
46 // accesses
47 case GL_READ_ONLY: return "GL_READ_ONLY";
48 case GL_WRITE_ONLY: return "GL_WRITE_ONLY";
49 case GL_READ_WRITE: return "GL_READ_WRITE";
50
51 // usages
52 case GL_STREAM_DRAW: return "GL_STREAM_DRAW";
53 case GL_STREAM_READ: return "GL_STREAM_READ";
54 case GL_STREAM_COPY: return "GL_STREAM_COPY";
55 case GL_STATIC_DRAW: return "GL_STATIC_DRAW";
56 case GL_STATIC_READ: return "GL_STATIC_READ";
57 case GL_STATIC_COPY: return "GL_STATIC_COPY";
58 case GL_DYNAMIC_DRAW: return "GL_DYNAMIC_DRAW";
59 case GL_DYNAMIC_READ: return "GL_DYNAMIC_READ";
60 case GL_DYNAMIC_COPY:
61 return "GL_DYNAMIC_COPY";
62
63 // enableable
64 case GL_ALPHA_TEST: return "GL_ALPHA_TEST";
65 case GL_AUTO_NORMAL: return "GL_AUTO_NORMAL";
66 case GL_BLEND: return "GL_BLEND";
67 case GL_CLIP_PLANE0: return "GL_CLIP_PLANE0";
68 case GL_CLIP_PLANE1: return "GL_CLIP_PLANE1";
69 case GL_CLIP_PLANE2: return "GL_CLIP_PLANE2";
70 case GL_CLIP_PLANE3: return "GL_CLIP_PLANE3";
71 case GL_CLIP_PLANE4: return "GL_CLIP_PLANE4";
72 case GL_CLIP_PLANE5: return "GL_CLIP_PLANE5";
73 case GL_COLOR_LOGIC_OP: return "GL_COLOR_LOGIC_OP";
74 case GL_COLOR_MATERIAL: return "GL_COLOR_MATERIAL";
75 case GL_COLOR_SUM: return "GL_COLOR_SUM";
76 case GL_COLOR_TABLE: return "GL_COLOR_TABLE";
77 case GL_CONVOLUTION_1D: return "GL_CONVOLUTION_1D";
78 case GL_CONVOLUTION_2D: return "GL_CONVOLUTION_2D";
79 case GL_CULL_FACE: return "GL_CULL_FACE";
80 case GL_DEPTH_TEST: return "GL_DEPTH_TEST";
81 case GL_DITHER: return "GL_DITHER";
82 case GL_FOG: return "GL_FOG";
83 case GL_HISTOGRAM: return "GL_HISTOGRAM";
84 case GL_INDEX_LOGIC_OP: return "GL_INDEX_LOGIC_OP";
85 case GL_LIGHT0: return "GL_LIGHT0";
86 case GL_LIGHT1: return "GL_LIGHT1";
87 case GL_LIGHT2: return "GL_LIGHT2";
88 case GL_LIGHT3: return "GL_LIGHT3";
89 case GL_LIGHT4: return "GL_LIGHT4";
90 case GL_LIGHT5: return "GL_LIGHT5";
91 case GL_LIGHT6: return "GL_LIGHT6";
92 case GL_LIGHT7: return "GL_LIGHT7";
93 case GL_LIGHTING: return "GL_LIGHTING";
94 case GL_LINE_SMOOTH: return "GL_LINE_SMOOTH";
95 case GL_LINE_STIPPLE: return "GL_LINE_STIPPLE";
96 case GL_MAP1_COLOR_4: return "GL_MAP1_COLOR_4";
97 case GL_MAP1_INDEX: return "GL_MAP1_INDEX";
98 case GL_MAP1_NORMAL: return "GL_MAP1_NORMAL";
99 case GL_MAP1_TEXTURE_COORD_1: return "GL_MAP1_TEXTURE_COORD_1";
100 case GL_MAP1_TEXTURE_COORD_2: return "GL_MAP1_TEXTURE_COORD_2";
101 case GL_MAP1_TEXTURE_COORD_3: return "GL_MAP1_TEXTURE_COORD_3";
102 case GL_MAP1_TEXTURE_COORD_4: return "GL_MAP1_TEXTURE_COORD_4";
103 case GL_MAP1_VERTEX_3: return "GL_MAP1_VERTEX_3";
104 case GL_MAP1_VERTEX_4: return "GL_MAP1_VERTEX_4";
105 case GL_MAP2_COLOR_4: return "GL_MAP2_COLOR_4";
106 case GL_MAP2_INDEX: return "GL_MAP2_INDEX";
107 case GL_MAP2_NORMAL: return "GL_MAP2_NORMAL";
108 case GL_MAP2_TEXTURE_COORD_1: return "GL_MAP2_TEXTURE_COORD_1";
109 case GL_MAP2_TEXTURE_COORD_2: return "GL_MAP2_TEXTURE_COORD_2";
110 case GL_MAP2_TEXTURE_COORD_3: return "GL_MAP2_TEXTURE_COORD_3";
111 case GL_MAP2_TEXTURE_COORD_4: return "GL_MAP2_TEXTURE_COORD_4";
112 case GL_MAP2_VERTEX_3: return "GL_MAP2_VERTEX_3";
113 case GL_MAP2_VERTEX_4: return "GL_MAP2_VERTEX_4";
114 case GL_MINMAX: return "GL_MINMAX";
115 case GL_MULTISAMPLE: return "GL_MULTISAMPLE";
116 case GL_NORMALIZE: return "GL_NORMALIZE";
117 case GL_POINT_SMOOTH: return "GL_POINT_SMOOTH";
118 case GL_POINT_SPRITE: return "GL_POINT_SPRITE";
119 case GL_POLYGON_OFFSET_FILL: return "GL_POLYGON_OFFSET_FILL";
120 case GL_POLYGON_OFFSET_LINE: return "GL_POLYGON_OFFSET_LINE";
121 case GL_POLYGON_OFFSET_POINT: return "GL_POLYGON_OFFSET_POINT";
122 case GL_POLYGON_SMOOTH: return "GL_POLYGON_SMOOTH";
123 case GL_POLYGON_STIPPLE: return "GL_POLYGON_STIPPLE";
124 case GL_POST_COLOR_MATRIX_COLOR_TABLE:
125 return "GL_POST_COLOR_MATRIX_COLOR_TABLE";
126 case GL_POST_CONVOLUTION_COLOR_TABLE:
127 return "GL_POST_CONVOLUTION_COLOR_TABLE";
128 case GL_RESCALE_NORMAL: return "GL_RESCALE_NORMAL";
129 case GL_SAMPLE_ALPHA_TO_COVERAGE: return "GL_SAMPLE_ALPHA_TO_COVERAGE";
130 case GL_SAMPLE_ALPHA_TO_ONE: return "GL_SAMPLE_ALPHA_TO_ONE";
131 case GL_SAMPLE_COVERAGE: return "GL_SAMPLE_COVERAGE";
132 case GL_SEPARABLE_2D: return "GL_SEPARABLE_2D";
133 case GL_SCISSOR_TEST: return "GL_SCISSOR_TEST";
134 case GL_STENCIL_TEST: return "GL_STENCIL_TEST";
135 case GL_TEXTURE_1D: return "GL_TEXTURE_1D";
136 case GL_TEXTURE_2D: return "GL_TEXTURE_2D";
137 case GL_TEXTURE_3D: return "GL_TEXTURE_3D";
138 case GL_TEXTURE_CUBE_MAP: return "GL_TEXTURE_CUBE_MAP";
139 case GL_TEXTURE_GEN_Q: return "GL_TEXTURE_GEN_Q";
140 case GL_TEXTURE_GEN_R: return "GL_TEXTURE_GEN_R";
141 case GL_TEXTURE_GEN_S: return "GL_TEXTURE_GEN_S";
142 case GL_TEXTURE_GEN_T: return "GL_TEXTURE_GEN_T";
143 case GL_VERTEX_PROGRAM_POINT_SIZE: return "GL_VERTEX_PROGRAM_POINT_SIZE";
144 case GL_VERTEX_PROGRAM_TWO_SIDE: return "GL_VERTEX_PROGRAM_TWO_SIDE";
145
146 // formats
147 case GL_RED: return "GL_RED";
148 case GL_RG: return "GL_RG";
149 case GL_RGB: return "GL_RGB";
150 case GL_BGR: return "GL_BGR";
151 case GL_RGBA: return "GL_RGBA";
152 case GL_BGRA: return "GL_BGRA";
153 case GL_RED_INTEGER: return "GL_RED_INTEGER";
154 case GL_RG_INTEGER: return "GL_RG_INTEGER";
155 case GL_RGB_INTEGER: return "GL_RGB_INTEGER";
156 case GL_BGR_INTEGER: return "GL_BGR_INTEGER";
157 case GL_RGBA_INTEGER: return "GL_RGBA_INTEGER";
158 case GL_BGRA_INTEGER: return "GL_BGRA_INTEGER";
159 case GL_STENCIL_INDEX: return "GL_STENCIL_INDEX";
160 case GL_DEPTH_COMPONENT: return "GL_DEPTH_COMPONENT";
161 case GL_DEPTH_STENCIL: return "GL_DEPTH_STENCIL";
162 case GL_R8: return "GL_R8";
163 case GL_RG8: return "GL_RG8";
164 case GL_RGB8: return "GL_RGB8";
165 case GL_RGBA8: return "GL_RGBA8";
166 case GL_R8I: return "GL_R8I";
167 case GL_RG8I: return "GL_RG8I";
168 case GL_RGB8I: return "GL_RGB8I";
169 case GL_RGBA8I: return "GL_RGBA8I";
170 case GL_R8UI: return "GL_R8UI";
171 case GL_RG8UI: return "GL_RG8UI";
172 case GL_RGB8UI: return "GL_RGB8UI";
173 case GL_RGBA8UI: return "GL_RGBA8UI";
174 case GL_R16I: return "GL_R16I";
175 case GL_RG16I: return "GL_RG16I";
176 case GL_RGB16I: return "GL_RGB16I";
177 case GL_RGBA16I: return "GL_RGBA16I";
178 case GL_R16UI: return "GL_R16UI";
179 case GL_RG16UI: return "GL_RG16UI";
180 case GL_RGB16UI: return "GL_RGB16UI";
181 case GL_RGBA16UI: return "GL_RGBA16UI";
182 case GL_R32I: return "GL_R32I";
183 case GL_RG32I: return "GL_RG32I";
184 case GL_RGB32I: return "GL_RGB32I";
185 case GL_RGBA32I: return "GL_RGBA32I";
186 case GL_R32UI: return "GL_R32UI";
187 case GL_RG32UI: return "GL_RG32UI";
188 case GL_RGB32UI: return "GL_RGB32UI";
189 case GL_RGBA32UI: return "GL_RGBA32UI";
190 case GL_R16: return "GL_R16";
191 case GL_RG16: return "GL_RG16";
192 case GL_RGB16: return "GL_RGB16";
193 case GL_RGBA16: return "GL_RGBA16";
194 case GL_R32F: return "GL_R32F";
195 case GL_RG32F: return "GL_RG32F";
196 case GL_RGB32F: return "GL_RGB32F";
197 case GL_RGBA32F: return "GL_RGBA32F";
198 case GL_R16F: return "GL_R16F";
199 case GL_RG16F: return "GL_RG16F";
200 case GL_RGB16F: return "GL_RGB16F";
201 case GL_RGBA16F: return "GL_RGBA16F";
202
203 case GL_UNSIGNED_BYTE: return "GL_UNSIGNED_BYTE";
204 case GL_BYTE: return "GL_BYTE";
205 case GL_UNSIGNED_SHORT: return "GL_UNSIGNED_SHORT";
206 case GL_SHORT: return "GL_SHORT";
207 case GL_UNSIGNED_INT: return "GL_UNSIGNED_INT";
208 case GL_INT: return "GL_INT";
209 case GL_FLOAT: return "GL_FLOAT";
210 case GL_UNSIGNED_BYTE_3_3_2: return "GL_UNSIGNED_BYTE_3_3_2";
211 case GL_UNSIGNED_BYTE_2_3_3_REV: return "GL_UNSIGNED_BYTE_2_3_3_REV";
212 case GL_UNSIGNED_SHORT_5_6_5: return "GL_UNSIGNED_SHORT_5_6_5";
213 case GL_UNSIGNED_SHORT_5_6_5_REV: return "GL_UNSIGNED_SHORT_5_6_5_REV";
214 case GL_UNSIGNED_SHORT_4_4_4_4: return "GL_UNSIGNED_SHORT_4_4_4_4";
215 case GL_UNSIGNED_SHORT_4_4_4_4_REV: return "GL_UNSIGNED_SHORT_4_4_4_4_REV";
216 case GL_UNSIGNED_SHORT_5_5_5_1: return "GL_UNSIGNED_SHORT_5_5_5_1";
217 case GL_UNSIGNED_SHORT_1_5_5_5_REV: return "GL_UNSIGNED_SHORT_1_5_5_5_REV";
218 case GL_UNSIGNED_INT_8_8_8_8: return "GL_UNSIGNED_INT_8_8_8_8";
219 case GL_UNSIGNED_INT_8_8_8_8_REV: return "GL_UNSIGNED_INT_8_8_8_8_REV";
220 case GL_UNSIGNED_INT_10_10_10_2: return "GL_UNSIGNED_INT_10_10_10_2";
221 case GL_UNSIGNED_INT_2_10_10_10_REV:
222 return "GL_UNSIGNED_INT_2_10_10_10_REV";
223
224 // framebuffer attachements
225 case GL_COLOR_ATTACHMENT0: return "GL_COLOR_ATTACHEMENT0";
226 case GL_COLOR_ATTACHMENT1: return "GL_COLOR_ATTACHEMENT1";
227 case GL_COLOR_ATTACHMENT2: return "GL_COLOR_ATTACHEMENT2";
228 case GL_COLOR_ATTACHMENT3: return "GL_COLOR_ATTACHEMENT3";
229 case GL_COLOR_ATTACHMENT4: return "GL_COLOR_ATTACHEMENT4";
230 case GL_COLOR_ATTACHMENT5: return "GL_COLOR_ATTACHEMENT5";
231 case GL_COLOR_ATTACHMENT6: return "GL_COLOR_ATTACHEMENT6";
232 case GL_COLOR_ATTACHMENT7: return "GL_COLOR_ATTACHEMENT7";
233 case GL_COLOR_ATTACHMENT8: return "GL_COLOR_ATTACHEMENT8";
234 case GL_COLOR_ATTACHMENT9: return "GL_COLOR_ATTACHEMENT9";
235 case GL_COLOR_ATTACHMENT10: return "GL_COLOR_ATTACHEMENT10";
236 case GL_COLOR_ATTACHMENT11: return "GL_COLOR_ATTACHEMENT11";
237 case GL_COLOR_ATTACHMENT12: return "GL_COLOR_ATTACHEMENT12";
238 case GL_COLOR_ATTACHMENT13: return "GL_COLOR_ATTACHEMENT13";
239 case GL_COLOR_ATTACHMENT14: return "GL_COLOR_ATTACHEMENT14";
240 case GL_COLOR_ATTACHMENT15: return "GL_COLOR_ATTACHEMENT15";
241 case GL_DEPTH_ATTACHMENT: return "GL_DEPTH_ATTACHMENT";
242 case GL_STENCIL_ATTACHMENT: return "GL_STENCIL_ATTACHMENT";
243 case GL_DEPTH_STENCIL_ATTACHMENT:
244 return "GL_DEPTH_STENCIL_ATTACHMENT";
245
246 // primitives
247 case GL_POINTS: return "GL_POINTS";
248 case GL_LINE_STRIP: return "GL_LINE_STRIP";
249 case GL_LINE_LOOP: return "GL_LINE_LOOP";
250 case GL_LINES: return "GL_LINES";
251 case GL_LINE_STRIP_ADJACENCY: return "GL_LINE_STRIP_ADJACENCY";
252 case GL_LINES_ADJACENCY: return "GL_LINES_ADJACENCY";
253 case GL_TRIANGLE_STRIP: return "GL_TRIANGLE_STRIP";
254 case GL_TRIANGLE_FAN: return "GL_TRIANGLE_FAN";
255 case GL_TRIANGLES: return "GL_TRIANGLES";
256 case GL_TRIANGLE_STRIP_ADJACENCY: return "GL_TRIANGLE_STRIP_ADJACENCY";
257 case GL_TRIANGLES_ADJACENCY: return "GL_TRIANGLES_ADJACENCY";
258 case GL_PATCHES: return "GL_PATCHES";
259
260
261 case GL_TEXTURE_WRAP_S: return "GL_TEXTURE_WRAP_S";
262 case GL_TEXTURE_WRAP_T: return "GL_TEXTURE_WRAP_T";
263 case GL_TEXTURE_WRAP_R: return "GL_TEXTURE_WRAP_R";
264
265 case GL_TEXTURE_MIN_FILTER: return "GL_TEXTURE_MIN_FILTER";
266 case GL_TEXTURE_MAG_FILTER: return "GL_TEXTURE_MAG_FILTER";
267
268 default: return "GLenum(" + std::to_string(e) + ")";
269 }
270}
271//------------------------------------------------------------------------------
272inline auto map_access_to_string(GLbitfield b) -> std::string {
273 std::string flags;
274 auto pipe = [&flags]() {
275 if (!flags.empty()) { flags += std::string(" | "); }
276 };
277 if (GL_MAP_READ_BIT & b) {
278 pipe();
279 flags += "GL_MAP_READ_BIT";
280 }
281 if (GL_MAP_WRITE_BIT & b) {
282 pipe();
283 flags += "GL_MAP_WRITE_BIT";
284 }
285 if (GL_MAP_PERSISTENT_BIT & b) {
286 pipe();
287 flags += "GL_MAP_PERSISTENT_BIT";
288 }
289 if (GL_MAP_COHERENT_BIT & b) {
290 pipe();
291 flags += "GL_MAP_COHERENT_BIT";
292 }
293 if (GL_MAP_INVALIDATE_RANGE_BIT & b) {
294 pipe();
295 flags += "GL_MAP_INVALIDATE_RANGE_BIT";
296 }
297 if (GL_MAP_INVALIDATE_BUFFER_BIT & b) {
298 pipe();
299 flags += "GL_MAP_INVALIDATE_BUFFER_BIT";
300 }
301 if (GL_MAP_FLUSH_EXPLICIT_BIT & b) {
302 pipe();
303 flags += "GL_MAP_FLUSH_EXPLICIT_BIT";
304 }
305 if (GL_MAP_UNSYNCHRONIZED_BIT & b) {
306 pipe();
307 flags += "GL_MAP_UNSYNCHRONIZED_BIT";
308 }
309 if (GL_VERTEX_ATTRIB_ARRAY_BARRIER_BIT & b) {
310 pipe();
311 flags += "GL_VERTEX_ATTRIB_ARRAY_BARRIER_BIT";
312 }
313 if (GL_ELEMENT_ARRAY_BARRIER_BIT & b) {
314 pipe();
315 flags += "GL_ELEMENT_ARRAY_BARRIER_BIT";
316 }
317 if (GL_UNIFORM_BARRIER_BIT & b) {
318 pipe();
319 flags += "GL_UNIFORM_BARRIER_BIT";
320 }
321 if (GL_TEXTURE_FETCH_BARRIER_BIT & b) {
322 pipe();
323 flags += "GL_TEXTURE_FETCH_BARRIER_BIT";
324 }
325 if (GL_SHADER_IMAGE_ACCESS_BARRIER_BIT & b) {
326 pipe();
327 flags += "GL_SHADER_IMAGE_ACCESS_BARRIER_BIT";
328 }
329 if (GL_COMMAND_BARRIER_BIT & b) {
330 pipe();
331 flags += "GL_COMMAND_BARRIER_BIT";
332 }
333 if (GL_PIXEL_BUFFER_BARRIER_BIT & b) {
334 pipe();
335 flags += "GL_PIXEL_BUFFER_BARRIER_BIT";
336 }
337 if (GL_TEXTURE_UPDATE_BARRIER_BIT & b) {
338 pipe();
339 flags += "GL_TEXTURE_UPDATE_BARRIER_BIT";
340 }
341 if (GL_BUFFER_UPDATE_BARRIER_BIT & b) {
342 pipe();
343 flags += "GL_BUFFER_UPDATE_BARRIER_BIT";
344 }
345 if (GL_FRAMEBUFFER_BARRIER_BIT & b) {
346 pipe();
347 flags += "GL_FRAMEBUFFER_BARRIER_BIT";
348 }
349 if (GL_TRANSFORM_FEEDBACK_BARRIER_BIT & b) {
350 pipe();
351 flags += "GL_TRANSFORM_FEEDBACK_BARRIER_BIT";
352 }
353 if (GL_ATOMIC_COUNTER_BARRIER_BIT & b) {
354 pipe();
355 flags += "GL_ATOMIC_COUNTER_BARRIER_BIT";
356 }
357 if (GL_SHADER_STORAGE_BARRIER_BIT & b) {
358 pipe();
359 flags += "GL_SHADER_STORAGE_BARRIER_BIT";
360 }
361 return flags;
362}
363//==============================================================================
364} // namespace tatooine::gl
365//==============================================================================
366#endif
Definition: ansiformat.h:6
auto map_access_to_string(GLbitfield b) -> std::string
Definition: tostring.h:272
auto texparami_to_string(GLint i) -> std::string
Definition: tostring.h:9
auto to_string(key const k) -> std::string