• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1/* WARNING: This is auto-generated file. Do not modify, since changes will
2 * be lost! Modify the generating script instead.
3 *
4 * Generated from Khronos GL API description (gl.xml) revision d8371b44919d61c02e60f446a4b5461fda910f71.
5 */
6
7const char* getErrorName (int value)
8{
9	switch (value)
10	{
11		case GL_NO_ERROR:						return "GL_NO_ERROR";
12		case GL_INVALID_ENUM:					return "GL_INVALID_ENUM";
13		case GL_INVALID_VALUE:					return "GL_INVALID_VALUE";
14		case GL_INVALID_OPERATION:				return "GL_INVALID_OPERATION";
15		case GL_OUT_OF_MEMORY:					return "GL_OUT_OF_MEMORY";
16		case GL_INVALID_FRAMEBUFFER_OPERATION:	return "GL_INVALID_FRAMEBUFFER_OPERATION";
17		case GL_CONTEXT_LOST:					return "GL_CONTEXT_LOST";
18		default:								return nullptr;
19	}
20}
21
22const char* getTypeName (int value)
23{
24	switch (value)
25	{
26		case GL_BYTE:							return "GL_BYTE";
27		case GL_UNSIGNED_BYTE:					return "GL_UNSIGNED_BYTE";
28		case GL_SHORT:							return "GL_SHORT";
29		case GL_UNSIGNED_SHORT:					return "GL_UNSIGNED_SHORT";
30		case GL_INT:							return "GL_INT";
31		case GL_UNSIGNED_INT:					return "GL_UNSIGNED_INT";
32		case GL_FLOAT:							return "GL_FLOAT";
33		case GL_DOUBLE:							return "GL_DOUBLE";
34		case GL_FIXED:							return "GL_FIXED";
35		case GL_UNSIGNED_SHORT_5_6_5:			return "GL_UNSIGNED_SHORT_5_6_5";
36		case GL_UNSIGNED_SHORT_4_4_4_4:			return "GL_UNSIGNED_SHORT_4_4_4_4";
37		case GL_UNSIGNED_SHORT_5_5_5_1:			return "GL_UNSIGNED_SHORT_5_5_5_1";
38		case GL_UNSIGNED_BYTE_3_3_2:			return "GL_UNSIGNED_BYTE_3_3_2";
39		case GL_UNSIGNED_INT_8_8_8_8:			return "GL_UNSIGNED_INT_8_8_8_8";
40		case GL_UNSIGNED_INT_10_10_10_2:		return "GL_UNSIGNED_INT_10_10_10_2";
41		case GL_UNSIGNED_BYTE_2_3_3_REV:		return "GL_UNSIGNED_BYTE_2_3_3_REV";
42		case GL_UNSIGNED_SHORT_5_6_5_REV:		return "GL_UNSIGNED_SHORT_5_6_5_REV";
43		case GL_UNSIGNED_SHORT_4_4_4_4_REV:		return "GL_UNSIGNED_SHORT_4_4_4_4_REV";
44		case GL_UNSIGNED_SHORT_1_5_5_5_REV:		return "GL_UNSIGNED_SHORT_1_5_5_5_REV";
45		case GL_UNSIGNED_INT_8_8_8_8_REV:		return "GL_UNSIGNED_INT_8_8_8_8_REV";
46		case GL_HALF_FLOAT:						return "GL_HALF_FLOAT";
47		case GL_INT_2_10_10_10_REV:				return "GL_INT_2_10_10_10_REV";
48		case GL_UNSIGNED_INT_2_10_10_10_REV:	return "GL_UNSIGNED_INT_2_10_10_10_REV";
49		case GL_UNSIGNED_INT_10F_11F_11F_REV:	return "GL_UNSIGNED_INT_10F_11F_11F_REV";
50		case GL_UNSIGNED_INT_5_9_9_9_REV:		return "GL_UNSIGNED_INT_5_9_9_9_REV";
51		case GL_UNSIGNED_INT_24_8:				return "GL_UNSIGNED_INT_24_8";
52		case GL_FLOAT_32_UNSIGNED_INT_24_8_REV:	return "GL_FLOAT_32_UNSIGNED_INT_24_8_REV";
53		case GL_SIGNED_NORMALIZED:				return "GL_SIGNED_NORMALIZED";
54		case GL_UNSIGNED_NORMALIZED:			return "GL_UNSIGNED_NORMALIZED";
55		case GL_HALF_FLOAT_OES:					return "GL_HALF_FLOAT_OES";
56		case GL_DOUBLE_VEC2:					return "GL_DOUBLE_VEC2";
57		case GL_DOUBLE_VEC3:					return "GL_DOUBLE_VEC3";
58		case GL_DOUBLE_VEC4:					return "GL_DOUBLE_VEC4";
59		case GL_DOUBLE_MAT2:					return "GL_DOUBLE_MAT2";
60		case GL_DOUBLE_MAT3:					return "GL_DOUBLE_MAT3";
61		case GL_DOUBLE_MAT4:					return "GL_DOUBLE_MAT4";
62		case GL_DOUBLE_MAT2x3:					return "GL_DOUBLE_MAT2x3";
63		case GL_DOUBLE_MAT2x4:					return "GL_DOUBLE_MAT2x4";
64		case GL_DOUBLE_MAT3x2:					return "GL_DOUBLE_MAT3x2";
65		case GL_DOUBLE_MAT3x4:					return "GL_DOUBLE_MAT3x4";
66		case GL_DOUBLE_MAT4x2:					return "GL_DOUBLE_MAT4x2";
67		case GL_DOUBLE_MAT4x3:					return "GL_DOUBLE_MAT4x3";
68		default:								return nullptr;
69	}
70}
71
72const char* getParamQueryName (int value)
73{
74	switch (value)
75	{
76		case GL_LINE_WIDTH:							return "GL_LINE_WIDTH";
77		case GL_LINE_SMOOTH:						return "GL_LINE_SMOOTH";
78		case GL_LINE_SMOOTH_HINT:					return "GL_LINE_SMOOTH_HINT";
79		case GL_LINE_WIDTH_RANGE:					return "GL_LINE_WIDTH_RANGE";
80		case GL_LINE_WIDTH_GRANULARITY:				return "GL_LINE_WIDTH_GRANULARITY";
81		case GL_POLYGON_SMOOTH:						return "GL_POLYGON_SMOOTH";
82		case GL_POLYGON_SMOOTH_HINT:				return "GL_POLYGON_SMOOTH_HINT";
83		case GL_ALIASED_POINT_SIZE_RANGE:			return "GL_ALIASED_POINT_SIZE_RANGE";
84		case GL_ALIASED_LINE_WIDTH_RANGE:			return "GL_ALIASED_LINE_WIDTH_RANGE";
85		case GL_CULL_FACE_MODE:						return "GL_CULL_FACE_MODE";
86		case GL_FRONT_FACE:							return "GL_FRONT_FACE";
87		case GL_DEPTH_RANGE:						return "GL_DEPTH_RANGE";
88		case GL_DEPTH_WRITEMASK:					return "GL_DEPTH_WRITEMASK";
89		case GL_DEPTH_CLEAR_VALUE:					return "GL_DEPTH_CLEAR_VALUE";
90		case GL_DEPTH_FUNC:							return "GL_DEPTH_FUNC";
91		case GL_STENCIL_CLEAR_VALUE:				return "GL_STENCIL_CLEAR_VALUE";
92		case GL_STENCIL_FUNC:						return "GL_STENCIL_FUNC";
93		case GL_STENCIL_FAIL:						return "GL_STENCIL_FAIL";
94		case GL_STENCIL_PASS_DEPTH_FAIL:			return "GL_STENCIL_PASS_DEPTH_FAIL";
95		case GL_STENCIL_PASS_DEPTH_PASS:			return "GL_STENCIL_PASS_DEPTH_PASS";
96		case GL_STENCIL_REF:						return "GL_STENCIL_REF";
97		case GL_STENCIL_VALUE_MASK:					return "GL_STENCIL_VALUE_MASK";
98		case GL_STENCIL_WRITEMASK:					return "GL_STENCIL_WRITEMASK";
99		case GL_STENCIL_BACK_FUNC:					return "GL_STENCIL_BACK_FUNC";
100		case GL_STENCIL_BACK_FAIL:					return "GL_STENCIL_BACK_FAIL";
101		case GL_STENCIL_BACK_PASS_DEPTH_FAIL:		return "GL_STENCIL_BACK_PASS_DEPTH_FAIL";
102		case GL_STENCIL_BACK_PASS_DEPTH_PASS:		return "GL_STENCIL_BACK_PASS_DEPTH_PASS";
103		case GL_STENCIL_BACK_REF:					return "GL_STENCIL_BACK_REF";
104		case GL_STENCIL_BACK_VALUE_MASK:			return "GL_STENCIL_BACK_VALUE_MASK";
105		case GL_STENCIL_BACK_WRITEMASK:				return "GL_STENCIL_BACK_WRITEMASK";
106		case GL_VIEWPORT:							return "GL_VIEWPORT";
107		case GL_SCISSOR_BOX:						return "GL_SCISSOR_BOX";
108		case GL_SCISSOR_TEST:						return "GL_SCISSOR_TEST";
109		case GL_COLOR_CLEAR_VALUE:					return "GL_COLOR_CLEAR_VALUE";
110		case GL_COLOR_WRITEMASK:					return "GL_COLOR_WRITEMASK";
111		case GL_UNPACK_ALIGNMENT:					return "GL_UNPACK_ALIGNMENT";
112		case GL_PACK_ALIGNMENT:						return "GL_PACK_ALIGNMENT";
113		case GL_MAX_TEXTURE_SIZE:					return "GL_MAX_TEXTURE_SIZE";
114		case GL_MAX_VIEWPORT_DIMS:					return "GL_MAX_VIEWPORT_DIMS";
115		case GL_SUBPIXEL_BITS:						return "GL_SUBPIXEL_BITS";
116		case GL_RED_BITS:							return "GL_RED_BITS";
117		case GL_GREEN_BITS:							return "GL_GREEN_BITS";
118		case GL_BLUE_BITS:							return "GL_BLUE_BITS";
119		case GL_ALPHA_BITS:							return "GL_ALPHA_BITS";
120		case GL_DEPTH_BITS:							return "GL_DEPTH_BITS";
121		case GL_STENCIL_BITS:						return "GL_STENCIL_BITS";
122		case GL_POLYGON_OFFSET_UNITS:				return "GL_POLYGON_OFFSET_UNITS";
123		case GL_POLYGON_OFFSET_FILL:				return "GL_POLYGON_OFFSET_FILL";
124		case GL_POLYGON_OFFSET_FACTOR:				return "GL_POLYGON_OFFSET_FACTOR";
125		case GL_POLYGON_OFFSET_POINT:				return "GL_POLYGON_OFFSET_POINT";
126		case GL_POLYGON_OFFSET_LINE:				return "GL_POLYGON_OFFSET_LINE";
127		case GL_TEXTURE_BINDING_2D:					return "GL_TEXTURE_BINDING_2D";
128		case GL_SAMPLE_BUFFERS:						return "GL_SAMPLE_BUFFERS";
129		case GL_SAMPLES:							return "GL_SAMPLES";
130		case GL_SAMPLE_COVERAGE_VALUE:				return "GL_SAMPLE_COVERAGE_VALUE";
131		case GL_SAMPLE_COVERAGE_INVERT:				return "GL_SAMPLE_COVERAGE_INVERT";
132		case GL_MAX_CUBE_MAP_TEXTURE_SIZE:			return "GL_MAX_CUBE_MAP_TEXTURE_SIZE";
133		case GL_MAX_RENDERBUFFER_SIZE:				return "GL_MAX_RENDERBUFFER_SIZE";
134		case GL_MAX_VERTEX_ATTRIBS:					return "GL_MAX_VERTEX_ATTRIBS";
135		case GL_MAX_VERTEX_UNIFORM_VECTORS:			return "GL_MAX_VERTEX_UNIFORM_VECTORS";
136		case GL_MAX_VARYING_VECTORS:				return "GL_MAX_VARYING_VECTORS";
137		case GL_MAX_COMBINED_TEXTURE_IMAGE_UNITS:	return "GL_MAX_COMBINED_TEXTURE_IMAGE_UNITS";
138		case GL_MAX_VERTEX_TEXTURE_IMAGE_UNITS:		return "GL_MAX_VERTEX_TEXTURE_IMAGE_UNITS";
139		case GL_MAX_TEXTURE_IMAGE_UNITS:			return "GL_MAX_TEXTURE_IMAGE_UNITS";
140		case GL_MAX_FRAGMENT_UNIFORM_VECTORS:		return "GL_MAX_FRAGMENT_UNIFORM_VECTORS";
141		default:									return nullptr;
142	}
143}
144
145const char* getProgramParamName (int value)
146{
147	switch (value)
148	{
149		case GL_ACTIVE_ATTRIBUTES:						return "GL_ACTIVE_ATTRIBUTES";
150		case GL_ACTIVE_ATTRIBUTE_MAX_LENGTH:			return "GL_ACTIVE_ATTRIBUTE_MAX_LENGTH";
151		case GL_ACTIVE_UNIFORMS:						return "GL_ACTIVE_UNIFORMS";
152		case GL_ACTIVE_UNIFORM_BLOCKS:					return "GL_ACTIVE_UNIFORM_BLOCKS";
153		case GL_ACTIVE_UNIFORM_BLOCK_MAX_NAME_LENGTH:	return "GL_ACTIVE_UNIFORM_BLOCK_MAX_NAME_LENGTH";
154		case GL_ACTIVE_UNIFORM_MAX_LENGTH:				return "GL_ACTIVE_UNIFORM_MAX_LENGTH";
155		case GL_ATTACHED_SHADERS:						return "GL_ATTACHED_SHADERS";
156		case GL_DELETE_STATUS:							return "GL_DELETE_STATUS";
157		case GL_INFO_LOG_LENGTH:						return "GL_INFO_LOG_LENGTH";
158		case GL_LINK_STATUS:							return "GL_LINK_STATUS";
159		case GL_PROGRAM_BINARY_RETRIEVABLE_HINT:		return "GL_PROGRAM_BINARY_RETRIEVABLE_HINT";
160		case GL_TRANSFORM_FEEDBACK_BUFFER_MODE:			return "GL_TRANSFORM_FEEDBACK_BUFFER_MODE";
161		case GL_TRANSFORM_FEEDBACK_BUFFER_PAUSED:		return "GL_TRANSFORM_FEEDBACK_BUFFER_PAUSED";
162		case GL_TRANSFORM_FEEDBACK_BUFFER_ACTIVE:		return "GL_TRANSFORM_FEEDBACK_BUFFER_ACTIVE";
163		case GL_TRANSFORM_FEEDBACK_VARYINGS:			return "GL_TRANSFORM_FEEDBACK_VARYINGS";
164		case GL_TRANSFORM_FEEDBACK_VARYING_MAX_LENGTH:	return "GL_TRANSFORM_FEEDBACK_VARYING_MAX_LENGTH";
165		case GL_VALIDATE_STATUS:						return "GL_VALIDATE_STATUS";
166		case GL_GEOMETRY_INPUT_TYPE:					return "GL_GEOMETRY_INPUT_TYPE";
167		case GL_GEOMETRY_OUTPUT_TYPE:					return "GL_GEOMETRY_OUTPUT_TYPE";
168		case GL_GEOMETRY_VERTICES_OUT:					return "GL_GEOMETRY_VERTICES_OUT";
169		case GL_GEOMETRY_SHADER_INVOCATIONS:			return "GL_GEOMETRY_SHADER_INVOCATIONS";
170		case GL_PROGRAM_SEPARABLE:						return "GL_PROGRAM_SEPARABLE";
171		case GL_COMPUTE_WORK_GROUP_SIZE:				return "GL_COMPUTE_WORK_GROUP_SIZE";
172		case GL_ACTIVE_ATOMIC_COUNTER_BUFFERS:			return "GL_ACTIVE_ATOMIC_COUNTER_BUFFERS";
173		case GL_TESS_CONTROL_OUTPUT_VERTICES:			return "GL_TESS_CONTROL_OUTPUT_VERTICES";
174		case GL_TESS_GEN_MODE:							return "GL_TESS_GEN_MODE";
175		case GL_TESS_GEN_SPACING:						return "GL_TESS_GEN_SPACING";
176		case GL_TESS_GEN_VERTEX_ORDER:					return "GL_TESS_GEN_VERTEX_ORDER";
177		case GL_TESS_GEN_POINT_MODE:					return "GL_TESS_GEN_POINT_MODE";
178		default:										return nullptr;
179	}
180}
181
182const char* getUniformParamName (int value)
183{
184	switch (value)
185	{
186		case GL_UNIFORM_TYPE:			return "GL_UNIFORM_TYPE";
187		case GL_UNIFORM_SIZE:			return "GL_UNIFORM_SIZE";
188		case GL_UNIFORM_NAME_LENGTH:	return "GL_UNIFORM_NAME_LENGTH";
189		case GL_UNIFORM_BLOCK_INDEX:	return "GL_UNIFORM_BLOCK_INDEX";
190		case GL_UNIFORM_OFFSET:			return "GL_UNIFORM_OFFSET";
191		case GL_UNIFORM_ARRAY_STRIDE:	return "GL_UNIFORM_ARRAY_STRIDE";
192		case GL_UNIFORM_MATRIX_STRIDE:	return "GL_UNIFORM_MATRIX_STRIDE";
193		case GL_UNIFORM_IS_ROW_MAJOR:	return "GL_UNIFORM_IS_ROW_MAJOR";
194		default:						return nullptr;
195	}
196}
197
198const char* getFramebufferAttachmentName (int value)
199{
200	switch (value)
201	{
202		case GL_COLOR_ATTACHMENT0:			return "GL_COLOR_ATTACHMENT0";
203		case GL_COLOR_ATTACHMENT1:			return "GL_COLOR_ATTACHMENT1";
204		case GL_COLOR_ATTACHMENT2:			return "GL_COLOR_ATTACHMENT2";
205		case GL_COLOR_ATTACHMENT3:			return "GL_COLOR_ATTACHMENT3";
206		case GL_COLOR_ATTACHMENT4:			return "GL_COLOR_ATTACHMENT4";
207		case GL_COLOR_ATTACHMENT5:			return "GL_COLOR_ATTACHMENT5";
208		case GL_COLOR_ATTACHMENT6:			return "GL_COLOR_ATTACHMENT6";
209		case GL_COLOR_ATTACHMENT7:			return "GL_COLOR_ATTACHMENT7";
210		case GL_COLOR_ATTACHMENT8:			return "GL_COLOR_ATTACHMENT8";
211		case GL_COLOR_ATTACHMENT9:			return "GL_COLOR_ATTACHMENT9";
212		case GL_COLOR_ATTACHMENT10:			return "GL_COLOR_ATTACHMENT10";
213		case GL_COLOR_ATTACHMENT11:			return "GL_COLOR_ATTACHMENT11";
214		case GL_COLOR_ATTACHMENT12:			return "GL_COLOR_ATTACHMENT12";
215		case GL_COLOR_ATTACHMENT13:			return "GL_COLOR_ATTACHMENT13";
216		case GL_COLOR_ATTACHMENT14:			return "GL_COLOR_ATTACHMENT14";
217		case GL_COLOR_ATTACHMENT15:			return "GL_COLOR_ATTACHMENT15";
218		case GL_DEPTH_ATTACHMENT:			return "GL_DEPTH_ATTACHMENT";
219		case GL_STENCIL_ATTACHMENT:			return "GL_STENCIL_ATTACHMENT";
220		case GL_DEPTH_STENCIL_ATTACHMENT:	return "GL_DEPTH_STENCIL_ATTACHMENT";
221		case GL_BACK:						return "GL_BACK";
222		case GL_FRONT_LEFT:					return "GL_FRONT_LEFT";
223		case GL_FRONT_RIGHT:				return "GL_FRONT_RIGHT";
224		case GL_BACK_LEFT:					return "GL_BACK_LEFT";
225		case GL_BACK_RIGHT:					return "GL_BACK_RIGHT";
226		case GL_LEFT:						return "GL_LEFT";
227		case GL_RIGHT:						return "GL_RIGHT";
228		case GL_DEPTH:						return "GL_DEPTH";
229		case GL_STENCIL:					return "GL_STENCIL";
230		default:							return nullptr;
231	}
232}
233
234const char* getFramebufferAttachmentParameterName (int value)
235{
236	switch (value)
237	{
238		case GL_FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE:				return "GL_FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE";
239		case GL_FRAMEBUFFER_ATTACHMENT_OBJECT_NAME:				return "GL_FRAMEBUFFER_ATTACHMENT_OBJECT_NAME";
240		case GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LEVEL:			return "GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LEVEL";
241		case GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_CUBE_MAP_FACE:	return "GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_CUBE_MAP_FACE";
242		case GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LAYER:			return "GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LAYER";
243		case GL_FRAMEBUFFER_ATTACHMENT_COMPONENT_TYPE:			return "GL_FRAMEBUFFER_ATTACHMENT_COMPONENT_TYPE";
244		case GL_FRAMEBUFFER_ATTACHMENT_COLOR_ENCODING:			return "GL_FRAMEBUFFER_ATTACHMENT_COLOR_ENCODING";
245		case GL_FRAMEBUFFER_ATTACHMENT_RED_SIZE:				return "GL_FRAMEBUFFER_ATTACHMENT_RED_SIZE";
246		case GL_FRAMEBUFFER_ATTACHMENT_GREEN_SIZE:				return "GL_FRAMEBUFFER_ATTACHMENT_GREEN_SIZE";
247		case GL_FRAMEBUFFER_ATTACHMENT_BLUE_SIZE:				return "GL_FRAMEBUFFER_ATTACHMENT_BLUE_SIZE";
248		case GL_FRAMEBUFFER_ATTACHMENT_ALPHA_SIZE:				return "GL_FRAMEBUFFER_ATTACHMENT_ALPHA_SIZE";
249		case GL_FRAMEBUFFER_ATTACHMENT_DEPTH_SIZE:				return "GL_FRAMEBUFFER_ATTACHMENT_DEPTH_SIZE";
250		case GL_FRAMEBUFFER_ATTACHMENT_STENCIL_SIZE:			return "GL_FRAMEBUFFER_ATTACHMENT_STENCIL_SIZE";
251		case GL_FRAMEBUFFER_ATTACHMENT_LAYERED:					return "GL_FRAMEBUFFER_ATTACHMENT_LAYERED";
252		default:												return nullptr;
253	}
254}
255
256const char* getFramebufferTargetName (int value)
257{
258	switch (value)
259	{
260		case GL_FRAMEBUFFER:		return "GL_FRAMEBUFFER";
261		case GL_RENDERBUFFER:		return "GL_RENDERBUFFER";
262		case GL_DRAW_FRAMEBUFFER:	return "GL_DRAW_FRAMEBUFFER";
263		case GL_READ_FRAMEBUFFER:	return "GL_READ_FRAMEBUFFER";
264		default:					return nullptr;
265	}
266}
267
268const char* getFramebufferStatusName (int value)
269{
270	switch (value)
271	{
272		case GL_FRAMEBUFFER_COMPLETE:						return "GL_FRAMEBUFFER_COMPLETE";
273		case GL_FRAMEBUFFER_INCOMPLETE_ATTACHMENT:			return "GL_FRAMEBUFFER_INCOMPLETE_ATTACHMENT";
274		case GL_FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT:	return "GL_FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT";
275		case GL_FRAMEBUFFER_INCOMPLETE_DIMENSIONS:			return "GL_FRAMEBUFFER_INCOMPLETE_DIMENSIONS";
276		case GL_FRAMEBUFFER_UNSUPPORTED:					return "GL_FRAMEBUFFER_UNSUPPORTED";
277		case GL_FRAMEBUFFER_INCOMPLETE_MULTISAMPLE:			return "GL_FRAMEBUFFER_INCOMPLETE_MULTISAMPLE";
278		case GL_FRAMEBUFFER_INCOMPLETE_LAYER_TARGETS:		return "GL_FRAMEBUFFER_INCOMPLETE_LAYER_TARGETS";
279		case GL_FRAMEBUFFER_UNDEFINED:						return "GL_FRAMEBUFFER_UNDEFINED";
280		case GL_FRAMEBUFFER_INCOMPLETE_DRAW_BUFFER:			return "GL_FRAMEBUFFER_INCOMPLETE_DRAW_BUFFER";
281		case GL_FRAMEBUFFER_INCOMPLETE_READ_BUFFER:			return "GL_FRAMEBUFFER_INCOMPLETE_READ_BUFFER";
282		default:											return nullptr;
283	}
284}
285
286const char* getFramebufferAttachmentTypeName (int value)
287{
288	switch (value)
289	{
290		case GL_NONE:					return "GL_NONE";
291		case GL_FRAMEBUFFER_DEFAULT:	return "GL_FRAMEBUFFER_DEFAULT";
292		case GL_TEXTURE:				return "GL_TEXTURE";
293		case GL_RENDERBUFFER:			return "GL_RENDERBUFFER";
294		default:						return nullptr;
295	}
296}
297
298const char* getFramebufferColorEncodingName (int value)
299{
300	switch (value)
301	{
302		case GL_LINEAR:	return "GL_LINEAR";
303		case GL_SRGB:	return "GL_SRGB";
304		default:		return nullptr;
305	}
306}
307
308const char* getFramebufferParameterName (int value)
309{
310	switch (value)
311	{
312		case GL_FRAMEBUFFER_DEFAULT_WIDTH:					return "GL_FRAMEBUFFER_DEFAULT_WIDTH";
313		case GL_FRAMEBUFFER_DEFAULT_HEIGHT:					return "GL_FRAMEBUFFER_DEFAULT_HEIGHT";
314		case GL_FRAMEBUFFER_DEFAULT_SAMPLES:				return "GL_FRAMEBUFFER_DEFAULT_SAMPLES";
315		case GL_FRAMEBUFFER_DEFAULT_FIXED_SAMPLE_LOCATIONS:	return "GL_FRAMEBUFFER_DEFAULT_FIXED_SAMPLE_LOCATIONS";
316		case GL_FRAMEBUFFER_DEFAULT_LAYERS:					return "GL_FRAMEBUFFER_DEFAULT_LAYERS";
317		case GL_DOUBLEBUFFER:								return "GL_DOUBLEBUFFER";
318		case GL_IMPLEMENTATION_COLOR_READ_FORMAT:			return "GL_IMPLEMENTATION_COLOR_READ_FORMAT";
319		case GL_IMPLEMENTATION_COLOR_READ_TYPE:				return "GL_IMPLEMENTATION_COLOR_READ_TYPE";
320		case GL_SAMPLES:									return "GL_SAMPLES";
321		case GL_SAMPLE_BUFFERS:								return "GL_SAMPLE_BUFFERS";
322		case GL_STEREO:										return "GL_STEREO";
323		default:											return nullptr;
324	}
325}
326
327const char* getRenderbufferParameterName (int value)
328{
329	switch (value)
330	{
331		case GL_RENDERBUFFER_WIDTH:				return "GL_RENDERBUFFER_WIDTH";
332		case GL_RENDERBUFFER_HEIGHT:			return "GL_RENDERBUFFER_HEIGHT";
333		case GL_RENDERBUFFER_INTERNAL_FORMAT:	return "GL_RENDERBUFFER_INTERNAL_FORMAT";
334		case GL_RENDERBUFFER_RED_SIZE:			return "GL_RENDERBUFFER_RED_SIZE";
335		case GL_RENDERBUFFER_GREEN_SIZE:		return "GL_RENDERBUFFER_GREEN_SIZE";
336		case GL_RENDERBUFFER_BLUE_SIZE:			return "GL_RENDERBUFFER_BLUE_SIZE";
337		case GL_RENDERBUFFER_ALPHA_SIZE:		return "GL_RENDERBUFFER_ALPHA_SIZE";
338		case GL_RENDERBUFFER_DEPTH_SIZE:		return "GL_RENDERBUFFER_DEPTH_SIZE";
339		case GL_RENDERBUFFER_STENCIL_SIZE:		return "GL_RENDERBUFFER_STENCIL_SIZE";
340		case GL_RENDERBUFFER_SAMPLES:			return "GL_RENDERBUFFER_SAMPLES";
341		default:								return nullptr;
342	}
343}
344
345const char* getPrimitiveTypeName (int value)
346{
347	switch (value)
348	{
349		case GL_POINTS:						return "GL_POINTS";
350		case GL_LINES:						return "GL_LINES";
351		case GL_LINE_STRIP:					return "GL_LINE_STRIP";
352		case GL_LINE_LOOP:					return "GL_LINE_LOOP";
353		case GL_TRIANGLES:					return "GL_TRIANGLES";
354		case GL_TRIANGLE_STRIP:				return "GL_TRIANGLE_STRIP";
355		case GL_TRIANGLE_FAN:				return "GL_TRIANGLE_FAN";
356		case GL_LINES_ADJACENCY:			return "GL_LINES_ADJACENCY";
357		case GL_LINE_STRIP_ADJACENCY:		return "GL_LINE_STRIP_ADJACENCY";
358		case GL_TRIANGLES_ADJACENCY:		return "GL_TRIANGLES_ADJACENCY";
359		case GL_TRIANGLE_STRIP_ADJACENCY:	return "GL_TRIANGLE_STRIP_ADJACENCY";
360		case GL_PATCHES:					return "GL_PATCHES";
361		case GL_ISOLINES:					return "GL_ISOLINES";
362		default:							return nullptr;
363	}
364}
365
366const char* getBlendFactorName (int value)
367{
368	switch (value)
369	{
370		case GL_ZERO:						return "GL_ZERO";
371		case GL_ONE:						return "GL_ONE";
372		case GL_SRC_ALPHA_SATURATE:			return "GL_SRC_ALPHA_SATURATE";
373		case GL_SRC_COLOR:					return "GL_SRC_COLOR";
374		case GL_ONE_MINUS_SRC_COLOR:		return "GL_ONE_MINUS_SRC_COLOR";
375		case GL_SRC_ALPHA:					return "GL_SRC_ALPHA";
376		case GL_ONE_MINUS_SRC_ALPHA:		return "GL_ONE_MINUS_SRC_ALPHA";
377		case GL_SRC1_COLOR:					return "GL_SRC1_COLOR";
378		case GL_ONE_MINUS_SRC1_COLOR:		return "GL_ONE_MINUS_SRC1_COLOR";
379		case GL_SRC1_ALPHA:					return "GL_SRC1_ALPHA";
380		case GL_ONE_MINUS_SRC1_ALPHA:		return "GL_ONE_MINUS_SRC1_ALPHA";
381		case GL_DST_COLOR:					return "GL_DST_COLOR";
382		case GL_ONE_MINUS_DST_COLOR:		return "GL_ONE_MINUS_DST_COLOR";
383		case GL_DST_ALPHA:					return "GL_DST_ALPHA";
384		case GL_ONE_MINUS_DST_ALPHA:		return "GL_ONE_MINUS_DST_ALPHA";
385		case GL_CONSTANT_COLOR:				return "GL_CONSTANT_COLOR";
386		case GL_ONE_MINUS_CONSTANT_COLOR:	return "GL_ONE_MINUS_CONSTANT_COLOR";
387		case GL_CONSTANT_ALPHA:				return "GL_CONSTANT_ALPHA";
388		case GL_ONE_MINUS_CONSTANT_ALPHA:	return "GL_ONE_MINUS_CONSTANT_ALPHA";
389		default:							return nullptr;
390	}
391}
392
393const char* getBlendEquationName (int value)
394{
395	switch (value)
396	{
397		case GL_FUNC_ADD:				return "GL_FUNC_ADD";
398		case GL_FUNC_SUBTRACT:			return "GL_FUNC_SUBTRACT";
399		case GL_FUNC_REVERSE_SUBTRACT:	return "GL_FUNC_REVERSE_SUBTRACT";
400		case GL_MIN:					return "GL_MIN";
401		case GL_MAX:					return "GL_MAX";
402		case GL_MULTIPLY_KHR:			return "GL_MULTIPLY_KHR";
403		case GL_SCREEN_KHR:				return "GL_SCREEN_KHR";
404		case GL_OVERLAY_KHR:			return "GL_OVERLAY_KHR";
405		case GL_DARKEN_KHR:				return "GL_DARKEN_KHR";
406		case GL_LIGHTEN_KHR:			return "GL_LIGHTEN_KHR";
407		case GL_COLORDODGE_KHR:			return "GL_COLORDODGE_KHR";
408		case GL_COLORBURN_KHR:			return "GL_COLORBURN_KHR";
409		case GL_HARDLIGHT_KHR:			return "GL_HARDLIGHT_KHR";
410		case GL_SOFTLIGHT_KHR:			return "GL_SOFTLIGHT_KHR";
411		case GL_DIFFERENCE_KHR:			return "GL_DIFFERENCE_KHR";
412		case GL_EXCLUSION_KHR:			return "GL_EXCLUSION_KHR";
413		case GL_HSL_HUE_KHR:			return "GL_HSL_HUE_KHR";
414		case GL_HSL_SATURATION_KHR:		return "GL_HSL_SATURATION_KHR";
415		case GL_HSL_COLOR_KHR:			return "GL_HSL_COLOR_KHR";
416		case GL_HSL_LUMINOSITY_KHR:		return "GL_HSL_LUMINOSITY_KHR";
417		case GL_BLEND_EQUATION:			return "GL_BLEND_EQUATION";
418		default:						return nullptr;
419	}
420}
421
422const char* getBufferTargetName (int value)
423{
424	switch (value)
425	{
426		case GL_ARRAY_BUFFER:				return "GL_ARRAY_BUFFER";
427		case GL_ELEMENT_ARRAY_BUFFER:		return "GL_ELEMENT_ARRAY_BUFFER";
428		case GL_COPY_READ_BUFFER:			return "GL_COPY_READ_BUFFER";
429		case GL_COPY_WRITE_BUFFER:			return "GL_COPY_WRITE_BUFFER";
430		case GL_PIXEL_PACK_BUFFER:			return "GL_PIXEL_PACK_BUFFER";
431		case GL_PIXEL_UNPACK_BUFFER:		return "GL_PIXEL_UNPACK_BUFFER";
432		case GL_TRANSFORM_FEEDBACK_BUFFER:	return "GL_TRANSFORM_FEEDBACK_BUFFER";
433		case GL_UNIFORM_BUFFER:				return "GL_UNIFORM_BUFFER";
434		case GL_DRAW_INDIRECT_BUFFER:		return "GL_DRAW_INDIRECT_BUFFER";
435		case GL_SHADER_STORAGE_BUFFER:		return "GL_SHADER_STORAGE_BUFFER";
436		case GL_TEXTURE_BUFFER:				return "GL_TEXTURE_BUFFER";
437		case GL_DISPATCH_INDIRECT_BUFFER:	return "GL_DISPATCH_INDIRECT_BUFFER";
438		case GL_ATOMIC_COUNTER_BUFFER:		return "GL_ATOMIC_COUNTER_BUFFER";
439		default:							return nullptr;
440	}
441}
442
443const char* getBufferBindingName (int value)
444{
445	switch (value)
446	{
447		case GL_ARRAY_BUFFER_BINDING:			return "GL_ARRAY_BUFFER_BINDING";
448		case GL_ELEMENT_ARRAY_BUFFER_BINDING:	return "GL_ELEMENT_ARRAY_BUFFER_BINDING";
449		default:								return nullptr;
450	}
451}
452
453const char* getUsageName (int value)
454{
455	switch (value)
456	{
457		case GL_STREAM_DRAW:	return "GL_STREAM_DRAW";
458		case GL_STREAM_READ:	return "GL_STREAM_READ";
459		case GL_STREAM_COPY:	return "GL_STREAM_COPY";
460		case GL_STATIC_DRAW:	return "GL_STATIC_DRAW";
461		case GL_STATIC_READ:	return "GL_STATIC_READ";
462		case GL_STATIC_COPY:	return "GL_STATIC_COPY";
463		case GL_DYNAMIC_DRAW:	return "GL_DYNAMIC_DRAW";
464		case GL_DYNAMIC_READ:	return "GL_DYNAMIC_READ";
465		case GL_DYNAMIC_COPY:	return "GL_DYNAMIC_COPY";
466		default:				return nullptr;
467	}
468}
469
470const char* getBufferQueryName (int value)
471{
472	switch (value)
473	{
474		case GL_BUFFER_SIZE:			return "GL_BUFFER_SIZE";
475		case GL_BUFFER_USAGE:			return "GL_BUFFER_USAGE";
476		case GL_BUFFER_ACCESS_FLAGS:	return "GL_BUFFER_ACCESS_FLAGS";
477		case GL_BUFFER_MAPPED:			return "GL_BUFFER_MAPPED";
478		case GL_BUFFER_MAP_OFFSET:		return "GL_BUFFER_MAP_OFFSET";
479		case GL_BUFFER_MAP_LENGTH:		return "GL_BUFFER_MAP_LENGTH";
480		case GL_BUFFER_ACCESS:			return "GL_BUFFER_ACCESS";
481		case GL_BUFFER_MAP_POINTER:		return "GL_BUFFER_MAP_POINTER";
482		default:						return nullptr;
483	}
484}
485
486const char* getFaceName (int value)
487{
488	switch (value)
489	{
490		case GL_FRONT:			return "GL_FRONT";
491		case GL_BACK:			return "GL_BACK";
492		case GL_FRONT_AND_BACK:	return "GL_FRONT_AND_BACK";
493		default:				return nullptr;
494	}
495}
496
497const char* getCompareFuncName (int value)
498{
499	switch (value)
500	{
501		case GL_NEVER:		return "GL_NEVER";
502		case GL_LESS:		return "GL_LESS";
503		case GL_LEQUAL:		return "GL_LEQUAL";
504		case GL_GREATER:	return "GL_GREATER";
505		case GL_EQUAL:		return "GL_EQUAL";
506		case GL_NOTEQUAL:	return "GL_NOTEQUAL";
507		case GL_GEQUAL:		return "GL_GEQUAL";
508		case GL_ALWAYS:		return "GL_ALWAYS";
509		default:			return nullptr;
510	}
511}
512
513const char* getEnableCapName (int value)
514{
515	switch (value)
516	{
517		case GL_TEXTURE_2D:						return "GL_TEXTURE_2D";
518		case GL_CULL_FACE:						return "GL_CULL_FACE";
519		case GL_BLEND:							return "GL_BLEND";
520		case GL_DITHER:							return "GL_DITHER";
521		case GL_STENCIL_TEST:					return "GL_STENCIL_TEST";
522		case GL_DEPTH_TEST:						return "GL_DEPTH_TEST";
523		case GL_SCISSOR_TEST:					return "GL_SCISSOR_TEST";
524		case GL_POLYGON_OFFSET_FILL:			return "GL_POLYGON_OFFSET_FILL";
525		case GL_SAMPLE_ALPHA_TO_COVERAGE:		return "GL_SAMPLE_ALPHA_TO_COVERAGE";
526		case GL_SAMPLE_COVERAGE:				return "GL_SAMPLE_COVERAGE";
527		case GL_STEREO:							return "GL_STEREO";
528		case GL_PRIMITIVE_RESTART_FIXED_INDEX:	return "GL_PRIMITIVE_RESTART_FIXED_INDEX";
529		case GL_RASTERIZER_DISCARD:				return "GL_RASTERIZER_DISCARD";
530		case GL_FRAMEBUFFER_SRGB:				return "GL_FRAMEBUFFER_SRGB";
531		case GL_SAMPLE_SHADING:					return "GL_SAMPLE_SHADING";
532		case GL_DEPTH_CLAMP:					return "GL_DEPTH_CLAMP";
533		case GL_PRIMITIVE_RESTART:				return "GL_PRIMITIVE_RESTART";
534		case GL_SAMPLE_MASK:					return "GL_SAMPLE_MASK";
535		case GL_DEBUG_OUTPUT:					return "GL_DEBUG_OUTPUT";
536		case GL_DEBUG_OUTPUT_SYNCHRONOUS:		return "GL_DEBUG_OUTPUT_SYNCHRONOUS";
537		case GL_BLEND_ADVANCED_COHERENT_KHR:	return "GL_BLEND_ADVANCED_COHERENT_KHR";
538		case GL_MULTISAMPLE:					return "GL_MULTISAMPLE";
539		case GL_SAMPLE_ALPHA_TO_ONE:			return "GL_SAMPLE_ALPHA_TO_ONE";
540		case GL_VERTEX_PROGRAM_POINT_SIZE:		return "GL_VERTEX_PROGRAM_POINT_SIZE";
541		case GL_TEXTURE_CUBE_MAP_SEAMLESS:		return "GL_TEXTURE_CUBE_MAP_SEAMLESS";
542		default:								return nullptr;
543	}
544}
545
546const char* getIndexedEnableCapName (int value)
547{
548	switch (value)
549	{
550		case GL_BLEND:	return "GL_BLEND";
551		default:		return nullptr;
552	}
553}
554
555const char* getWindingName (int value)
556{
557	switch (value)
558	{
559		case GL_CW:		return "GL_CW";
560		case GL_CCW:	return "GL_CCW";
561		default:		return nullptr;
562	}
563}
564
565const char* getHintModeName (int value)
566{
567	switch (value)
568	{
569		case GL_DONT_CARE:	return "GL_DONT_CARE";
570		case GL_FASTEST:	return "GL_FASTEST";
571		case GL_NICEST:		return "GL_NICEST";
572		default:			return nullptr;
573	}
574}
575
576const char* getHintName (int value)
577{
578	switch (value)
579	{
580		case GL_GENERATE_MIPMAP_HINT:		return "GL_GENERATE_MIPMAP_HINT";
581		case GL_TEXTURE_COMPRESSION_HINT:	return "GL_TEXTURE_COMPRESSION_HINT";
582		default:							return nullptr;
583	}
584}
585
586const char* getStencilOpName (int value)
587{
588	switch (value)
589	{
590		case GL_ZERO:		return "GL_ZERO";
591		case GL_KEEP:		return "GL_KEEP";
592		case GL_REPLACE:	return "GL_REPLACE";
593		case GL_INCR:		return "GL_INCR";
594		case GL_DECR:		return "GL_DECR";
595		case GL_INVERT:		return "GL_INVERT";
596		case GL_INCR_WRAP:	return "GL_INCR_WRAP";
597		case GL_DECR_WRAP:	return "GL_DECR_WRAP";
598		default:			return nullptr;
599	}
600}
601
602const char* getShaderTypeName (int value)
603{
604	switch (value)
605	{
606		case GL_VERTEX_SHADER:			return "GL_VERTEX_SHADER";
607		case GL_FRAGMENT_SHADER:		return "GL_FRAGMENT_SHADER";
608		case GL_COMPUTE_SHADER:			return "GL_COMPUTE_SHADER";
609		case GL_TESS_CONTROL_SHADER:	return "GL_TESS_CONTROL_SHADER";
610		case GL_TESS_EVALUATION_SHADER:	return "GL_TESS_EVALUATION_SHADER";
611		case GL_GEOMETRY_SHADER:		return "GL_GEOMETRY_SHADER";
612		default:						return nullptr;
613	}
614}
615
616const char* getBufferName (int value)
617{
618	switch (value)
619	{
620		case GL_COLOR:			return "GL_COLOR";
621		case GL_DEPTH:			return "GL_DEPTH";
622		case GL_STENCIL:		return "GL_STENCIL";
623		case GL_DEPTH_STENCIL:	return "GL_DEPTH_STENCIL";
624		default:				return nullptr;
625	}
626}
627
628const char* getInvalidateAttachmentName (int value)
629{
630	switch (value)
631	{
632		case GL_COLOR:						return "GL_COLOR";
633		case GL_DEPTH:						return "GL_DEPTH";
634		case GL_STENCIL:					return "GL_STENCIL";
635		case GL_COLOR_ATTACHMENT0:			return "GL_COLOR_ATTACHMENT0";
636		case GL_COLOR_ATTACHMENT1:			return "GL_COLOR_ATTACHMENT1";
637		case GL_COLOR_ATTACHMENT2:			return "GL_COLOR_ATTACHMENT2";
638		case GL_COLOR_ATTACHMENT3:			return "GL_COLOR_ATTACHMENT3";
639		case GL_COLOR_ATTACHMENT4:			return "GL_COLOR_ATTACHMENT4";
640		case GL_COLOR_ATTACHMENT5:			return "GL_COLOR_ATTACHMENT5";
641		case GL_COLOR_ATTACHMENT6:			return "GL_COLOR_ATTACHMENT6";
642		case GL_COLOR_ATTACHMENT7:			return "GL_COLOR_ATTACHMENT7";
643		case GL_DEPTH_ATTACHMENT:			return "GL_DEPTH_ATTACHMENT";
644		case GL_STENCIL_ATTACHMENT:			return "GL_STENCIL_ATTACHMENT";
645		case GL_DEPTH_STENCIL_ATTACHMENT:	return "GL_DEPTH_STENCIL_ATTACHMENT";
646		default:							return nullptr;
647	}
648}
649
650const char* getDrawReadBufferName (int value)
651{
652	switch (value)
653	{
654		case GL_COLOR:						return "GL_COLOR";
655		case GL_DEPTH:						return "GL_DEPTH";
656		case GL_STENCIL:					return "GL_STENCIL";
657		case GL_BACK:						return "GL_BACK";
658		case GL_NONE:						return "GL_NONE";
659		case GL_COLOR_ATTACHMENT0:			return "GL_COLOR_ATTACHMENT0";
660		case GL_COLOR_ATTACHMENT1:			return "GL_COLOR_ATTACHMENT1";
661		case GL_COLOR_ATTACHMENT2:			return "GL_COLOR_ATTACHMENT2";
662		case GL_COLOR_ATTACHMENT3:			return "GL_COLOR_ATTACHMENT3";
663		case GL_COLOR_ATTACHMENT4:			return "GL_COLOR_ATTACHMENT4";
664		case GL_COLOR_ATTACHMENT5:			return "GL_COLOR_ATTACHMENT5";
665		case GL_COLOR_ATTACHMENT6:			return "GL_COLOR_ATTACHMENT6";
666		case GL_COLOR_ATTACHMENT7:			return "GL_COLOR_ATTACHMENT7";
667		case GL_DEPTH_ATTACHMENT:			return "GL_DEPTH_ATTACHMENT";
668		case GL_STENCIL_ATTACHMENT:			return "GL_STENCIL_ATTACHMENT";
669		case GL_DEPTH_STENCIL_ATTACHMENT:	return "GL_DEPTH_STENCIL_ATTACHMENT";
670		default:							return nullptr;
671	}
672}
673
674const char* getTextureTargetName (int value)
675{
676	switch (value)
677	{
678		case GL_TEXTURE_1D:							return "GL_TEXTURE_1D";
679		case GL_TEXTURE_1D_ARRAY:					return "GL_TEXTURE_1D_ARRAY";
680		case GL_PROXY_TEXTURE_1D:					return "GL_PROXY_TEXTURE_1D";
681		case GL_PROXY_TEXTURE_1D_ARRAY:				return "GL_PROXY_TEXTURE_1D_ARRAY";
682		case GL_TEXTURE_2D:							return "GL_TEXTURE_2D";
683		case GL_TEXTURE_RECTANGLE:					return "GL_TEXTURE_RECTANGLE";
684		case GL_PROXY_TEXTURE_2D:					return "GL_PROXY_TEXTURE_2D";
685		case GL_TEXTURE_CUBE_MAP:					return "GL_TEXTURE_CUBE_MAP";
686		case GL_PROXY_TEXTURE_CUBE_MAP:				return "GL_PROXY_TEXTURE_CUBE_MAP";
687		case GL_PROXY_TEXTURE_CUBE_MAP_ARRAY:		return "GL_PROXY_TEXTURE_CUBE_MAP_ARRAY";
688		case GL_TEXTURE_CUBE_MAP_POSITIVE_X:		return "GL_TEXTURE_CUBE_MAP_POSITIVE_X";
689		case GL_TEXTURE_CUBE_MAP_NEGATIVE_X:		return "GL_TEXTURE_CUBE_MAP_NEGATIVE_X";
690		case GL_TEXTURE_CUBE_MAP_POSITIVE_Y:		return "GL_TEXTURE_CUBE_MAP_POSITIVE_Y";
691		case GL_TEXTURE_CUBE_MAP_NEGATIVE_Y:		return "GL_TEXTURE_CUBE_MAP_NEGATIVE_Y";
692		case GL_TEXTURE_CUBE_MAP_POSITIVE_Z:		return "GL_TEXTURE_CUBE_MAP_POSITIVE_Z";
693		case GL_TEXTURE_CUBE_MAP_NEGATIVE_Z:		return "GL_TEXTURE_CUBE_MAP_NEGATIVE_Z";
694		case GL_TEXTURE_3D:							return "GL_TEXTURE_3D";
695		case GL_PROXY_TEXTURE_3D:					return "GL_PROXY_TEXTURE_3D";
696		case GL_TEXTURE_2D_ARRAY:					return "GL_TEXTURE_2D_ARRAY";
697		case GL_PROXY_TEXTURE_2D_ARRAY:				return "GL_PROXY_TEXTURE_2D_ARRAY";
698		case GL_TEXTURE_2D_MULTISAMPLE:				return "GL_TEXTURE_2D_MULTISAMPLE";
699		case GL_PROXY_TEXTURE_2D_MULTISAMPLE:		return "GL_PROXY_TEXTURE_2D_MULTISAMPLE";
700		case GL_TEXTURE_2D_MULTISAMPLE_ARRAY:		return "GL_TEXTURE_2D_MULTISAMPLE_ARRAY";
701		case GL_PROXY_TEXTURE_2D_MULTISAMPLE_ARRAY:	return "GL_PROXY_TEXTURE_2D_MULTISAMPLE_ARRAY";
702		case GL_PROXY_TEXTURE_RECTANGLE:			return "GL_PROXY_TEXTURE_RECTANGLE";
703		case GL_TEXTURE_BUFFER:						return "GL_TEXTURE_BUFFER";
704		case GL_TEXTURE_CUBE_MAP_ARRAY:				return "GL_TEXTURE_CUBE_MAP_ARRAY";
705		default:									return nullptr;
706	}
707}
708
709const char* getTextureParameterName (int value)
710{
711	switch (value)
712	{
713		case GL_TEXTURE_WRAP_S:				return "GL_TEXTURE_WRAP_S";
714		case GL_TEXTURE_WRAP_T:				return "GL_TEXTURE_WRAP_T";
715		case GL_TEXTURE_WRAP_R:				return "GL_TEXTURE_WRAP_R";
716		case GL_TEXTURE_BASE_LEVEL:			return "GL_TEXTURE_BASE_LEVEL";
717		case GL_TEXTURE_MAX_LEVEL:			return "GL_TEXTURE_MAX_LEVEL";
718		case GL_TEXTURE_COMPARE_MODE:		return "GL_TEXTURE_COMPARE_MODE";
719		case GL_TEXTURE_COMPARE_FUNC:		return "GL_TEXTURE_COMPARE_FUNC";
720		case GL_TEXTURE_MAX_LOD:			return "GL_TEXTURE_MAX_LOD";
721		case GL_TEXTURE_MIN_LOD:			return "GL_TEXTURE_MIN_LOD";
722		case GL_TEXTURE_SWIZZLE_R:			return "GL_TEXTURE_SWIZZLE_R";
723		case GL_TEXTURE_SWIZZLE_G:			return "GL_TEXTURE_SWIZZLE_G";
724		case GL_TEXTURE_SWIZZLE_B:			return "GL_TEXTURE_SWIZZLE_B";
725		case GL_TEXTURE_SWIZZLE_A:			return "GL_TEXTURE_SWIZZLE_A";
726		case GL_TEXTURE_SWIZZLE_RGBA:		return "GL_TEXTURE_SWIZZLE_RGBA";
727		case GL_TEXTURE_MIN_FILTER:			return "GL_TEXTURE_MIN_FILTER";
728		case GL_TEXTURE_MAG_FILTER:			return "GL_TEXTURE_MAG_FILTER";
729		case GL_DEPTH_STENCIL_TEXTURE_MODE:	return "GL_DEPTH_STENCIL_TEXTURE_MODE";
730		case GL_TEXTURE_SRGB_DECODE_EXT:	return "GL_TEXTURE_SRGB_DECODE_EXT";
731		case GL_TEXTURE_BORDER_COLOR:		return "GL_TEXTURE_BORDER_COLOR";
732		case GL_TEXTURE_IMMUTABLE_LEVELS:	return "GL_TEXTURE_IMMUTABLE_LEVELS";
733		case GL_TEXTURE_IMMUTABLE_FORMAT:	return "GL_TEXTURE_IMMUTABLE_FORMAT";
734		default:							return nullptr;
735	}
736}
737
738const char* getTextureLevelParameterName (int value)
739{
740	switch (value)
741	{
742		case GL_TEXTURE_SAMPLES:					return "GL_TEXTURE_SAMPLES";
743		case GL_TEXTURE_FIXED_SAMPLE_LOCATIONS:		return "GL_TEXTURE_FIXED_SAMPLE_LOCATIONS";
744		case GL_TEXTURE_WIDTH:						return "GL_TEXTURE_WIDTH";
745		case GL_TEXTURE_HEIGHT:						return "GL_TEXTURE_HEIGHT";
746		case GL_TEXTURE_DEPTH:						return "GL_TEXTURE_DEPTH";
747		case GL_TEXTURE_INTERNAL_FORMAT:			return "GL_TEXTURE_INTERNAL_FORMAT";
748		case GL_TEXTURE_RED_SIZE:					return "GL_TEXTURE_RED_SIZE";
749		case GL_TEXTURE_GREEN_SIZE:					return "GL_TEXTURE_GREEN_SIZE";
750		case GL_TEXTURE_BLUE_SIZE:					return "GL_TEXTURE_BLUE_SIZE";
751		case GL_TEXTURE_ALPHA_SIZE:					return "GL_TEXTURE_ALPHA_SIZE";
752		case GL_TEXTURE_DEPTH_SIZE:					return "GL_TEXTURE_DEPTH_SIZE";
753		case GL_TEXTURE_STENCIL_SIZE:				return "GL_TEXTURE_STENCIL_SIZE";
754		case GL_TEXTURE_SHARED_SIZE:				return "GL_TEXTURE_SHARED_SIZE";
755		case GL_TEXTURE_RED_TYPE:					return "GL_TEXTURE_RED_TYPE";
756		case GL_TEXTURE_GREEN_TYPE:					return "GL_TEXTURE_GREEN_TYPE";
757		case GL_TEXTURE_BLUE_TYPE:					return "GL_TEXTURE_BLUE_TYPE";
758		case GL_TEXTURE_ALPHA_TYPE:					return "GL_TEXTURE_ALPHA_TYPE";
759		case GL_TEXTURE_DEPTH_TYPE:					return "GL_TEXTURE_DEPTH_TYPE";
760		case GL_TEXTURE_COMPRESSED:					return "GL_TEXTURE_COMPRESSED";
761		case GL_TEXTURE_BUFFER_DATA_STORE_BINDING:	return "GL_TEXTURE_BUFFER_DATA_STORE_BINDING";
762		case GL_TEXTURE_BUFFER_OFFSET:				return "GL_TEXTURE_BUFFER_OFFSET";
763		case GL_TEXTURE_BUFFER_SIZE:				return "GL_TEXTURE_BUFFER_SIZE";
764		case GL_TEXTURE_COMPRESSED_IMAGE_SIZE:		return "GL_TEXTURE_COMPRESSED_IMAGE_SIZE";
765		default:									return nullptr;
766	}
767}
768
769const char* getRepeatModeName (int value)
770{
771	switch (value)
772	{
773		case GL_REPEAT:				return "GL_REPEAT";
774		case GL_CLAMP_TO_EDGE:		return "GL_CLAMP_TO_EDGE";
775		case GL_MIRRORED_REPEAT:	return "GL_MIRRORED_REPEAT";
776		case GL_CLAMP_TO_BORDER:	return "GL_CLAMP_TO_BORDER";
777		default:					return nullptr;
778	}
779}
780
781const char* getTextureFilterName (int value)
782{
783	switch (value)
784	{
785		case GL_NEAREST:				return "GL_NEAREST";
786		case GL_LINEAR:					return "GL_LINEAR";
787		case GL_NEAREST_MIPMAP_NEAREST:	return "GL_NEAREST_MIPMAP_NEAREST";
788		case GL_LINEAR_MIPMAP_NEAREST:	return "GL_LINEAR_MIPMAP_NEAREST";
789		case GL_NEAREST_MIPMAP_LINEAR:	return "GL_NEAREST_MIPMAP_LINEAR";
790		case GL_LINEAR_MIPMAP_LINEAR:	return "GL_LINEAR_MIPMAP_LINEAR";
791		default:						return nullptr;
792	}
793}
794
795const char* getTextureWrapModeName (int value)
796{
797	switch (value)
798	{
799		case GL_REPEAT:				return "GL_REPEAT";
800		case GL_CLAMP_TO_EDGE:		return "GL_CLAMP_TO_EDGE";
801		case GL_MIRRORED_REPEAT:	return "GL_MIRRORED_REPEAT";
802		default:					return nullptr;
803	}
804}
805
806const char* getTextureSwizzleName (int value)
807{
808	switch (value)
809	{
810		case GL_RED:	return "GL_RED";
811		case GL_GREEN:	return "GL_GREEN";
812		case GL_BLUE:	return "GL_BLUE";
813		case GL_ALPHA:	return "GL_ALPHA";
814		case GL_ZERO:	return "GL_ZERO";
815		case GL_ONE:	return "GL_ONE";
816		default:		return nullptr;
817	}
818}
819
820const char* getTextureCompareModeName (int value)
821{
822	switch (value)
823	{
824		case GL_NONE:					return "GL_NONE";
825		case GL_COMPARE_REF_TO_TEXTURE:	return "GL_COMPARE_REF_TO_TEXTURE";
826		default:						return nullptr;
827	}
828}
829
830const char* getCubeMapFaceName (int value)
831{
832	switch (value)
833	{
834		case GL_TEXTURE_CUBE_MAP_POSITIVE_X:	return "GL_TEXTURE_CUBE_MAP_POSITIVE_X";
835		case GL_TEXTURE_CUBE_MAP_NEGATIVE_X:	return "GL_TEXTURE_CUBE_MAP_NEGATIVE_X";
836		case GL_TEXTURE_CUBE_MAP_POSITIVE_Y:	return "GL_TEXTURE_CUBE_MAP_POSITIVE_Y";
837		case GL_TEXTURE_CUBE_MAP_NEGATIVE_Y:	return "GL_TEXTURE_CUBE_MAP_NEGATIVE_Y";
838		case GL_TEXTURE_CUBE_MAP_POSITIVE_Z:	return "GL_TEXTURE_CUBE_MAP_POSITIVE_Z";
839		case GL_TEXTURE_CUBE_MAP_NEGATIVE_Z:	return "GL_TEXTURE_CUBE_MAP_NEGATIVE_Z";
840		default:								return nullptr;
841	}
842}
843
844const char* getTextureDepthStencilModeName (int value)
845{
846	switch (value)
847	{
848		case GL_DEPTH_COMPONENT:	return "GL_DEPTH_COMPONENT";
849		case GL_STENCIL_INDEX:		return "GL_STENCIL_INDEX";
850		default:					return nullptr;
851	}
852}
853
854const char* getPixelStoreParameterName (int value)
855{
856	switch (value)
857	{
858		case GL_UNPACK_ALIGNMENT:		return "GL_UNPACK_ALIGNMENT";
859		case GL_UNPACK_IMAGE_HEIGHT:	return "GL_UNPACK_IMAGE_HEIGHT";
860		case GL_UNPACK_ROW_LENGTH:		return "GL_UNPACK_ROW_LENGTH";
861		case GL_UNPACK_SKIP_IMAGES:		return "GL_UNPACK_SKIP_IMAGES";
862		case GL_UNPACK_SKIP_ROWS:		return "GL_UNPACK_SKIP_ROWS";
863		case GL_UNPACK_SKIP_PIXELS:		return "GL_UNPACK_SKIP_PIXELS";
864		case GL_PACK_ROW_LENGTH:		return "GL_PACK_ROW_LENGTH";
865		case GL_PACK_SKIP_ROWS:			return "GL_PACK_SKIP_ROWS";
866		case GL_PACK_SKIP_PIXELS:		return "GL_PACK_SKIP_PIXELS";
867		default:						return nullptr;
868	}
869}
870
871const char* getUncompressedTextureFormatName (int value)
872{
873	switch (value)
874	{
875		case GL_LUMINANCE:			return "GL_LUMINANCE";
876		case GL_LUMINANCE_ALPHA:	return "GL_LUMINANCE_ALPHA";
877		case GL_ALPHA:				return "GL_ALPHA";
878		case GL_RGB:				return "GL_RGB";
879		case GL_RGBA:				return "GL_RGBA";
880		case GL_RGBA4:				return "GL_RGBA4";
881		case GL_RGB4:				return "GL_RGB4";
882		case GL_RGB5_A1:			return "GL_RGB5_A1";
883		case GL_RGB565:				return "GL_RGB565";
884		case GL_R3_G3_B2:			return "GL_R3_G3_B2";
885		case GL_RGB5:				return "GL_RGB5";
886		case GL_RGB12:				return "GL_RGB12";
887		case GL_RGBA2:				return "GL_RGBA2";
888		case GL_RGBA12:				return "GL_RGBA12";
889		case GL_DEPTH_COMPONENT16:	return "GL_DEPTH_COMPONENT16";
890		case GL_STENCIL_INDEX1:		return "GL_STENCIL_INDEX1";
891		case GL_STENCIL_INDEX4:		return "GL_STENCIL_INDEX4";
892		case GL_STENCIL_INDEX8:		return "GL_STENCIL_INDEX8";
893		case GL_STENCIL_INDEX16:	return "GL_STENCIL_INDEX16";
894		case GL_RG:					return "GL_RG";
895		case GL_RED:				return "GL_RED";
896		case GL_RGBA_INTEGER:		return "GL_RGBA_INTEGER";
897		case GL_RGB_INTEGER:		return "GL_RGB_INTEGER";
898		case GL_RG_INTEGER:			return "GL_RG_INTEGER";
899		case GL_RED_INTEGER:		return "GL_RED_INTEGER";
900		case GL_GREEN_INTEGER:		return "GL_GREEN_INTEGER";
901		case GL_BLUE_INTEGER:		return "GL_BLUE_INTEGER";
902		case GL_BGR_INTEGER:		return "GL_BGR_INTEGER";
903		case GL_BGRA_INTEGER:		return "GL_BGRA_INTEGER";
904		case GL_DEPTH_COMPONENT:	return "GL_DEPTH_COMPONENT";
905		case GL_DEPTH_STENCIL:		return "GL_DEPTH_STENCIL";
906		case GL_RGBA32F:			return "GL_RGBA32F";
907		case GL_RGBA32I:			return "GL_RGBA32I";
908		case GL_RGBA32UI:			return "GL_RGBA32UI";
909		case GL_RGBA16:				return "GL_RGBA16";
910		case GL_RGBA16_SNORM:		return "GL_RGBA16_SNORM";
911		case GL_RGBA16F:			return "GL_RGBA16F";
912		case GL_RGBA16I:			return "GL_RGBA16I";
913		case GL_RGBA16UI:			return "GL_RGBA16UI";
914		case GL_RGBA8:				return "GL_RGBA8";
915		case GL_RGBA8I:				return "GL_RGBA8I";
916		case GL_RGBA8UI:			return "GL_RGBA8UI";
917		case GL_SRGB8_ALPHA8:		return "GL_SRGB8_ALPHA8";
918		case GL_RGB10_A2:			return "GL_RGB10_A2";
919		case GL_RGB10_A2UI:			return "GL_RGB10_A2UI";
920		case GL_RGBA8_SNORM:		return "GL_RGBA8_SNORM";
921		case GL_RGB8:				return "GL_RGB8";
922		case GL_R11F_G11F_B10F:		return "GL_R11F_G11F_B10F";
923		case GL_RGB32F:				return "GL_RGB32F";
924		case GL_RGB32I:				return "GL_RGB32I";
925		case GL_RGB32UI:			return "GL_RGB32UI";
926		case GL_RGB16:				return "GL_RGB16";
927		case GL_RGB16_SNORM:		return "GL_RGB16_SNORM";
928		case GL_RGB16F:				return "GL_RGB16F";
929		case GL_RGB16I:				return "GL_RGB16I";
930		case GL_RGB16UI:			return "GL_RGB16UI";
931		case GL_RGB8_SNORM:			return "GL_RGB8_SNORM";
932		case GL_RGB8I:				return "GL_RGB8I";
933		case GL_RGB8UI:				return "GL_RGB8UI";
934		case GL_SRGB8:				return "GL_SRGB8";
935		case GL_RGB9_E5:			return "GL_RGB9_E5";
936		case GL_RG32F:				return "GL_RG32F";
937		case GL_RG32I:				return "GL_RG32I";
938		case GL_RG32UI:				return "GL_RG32UI";
939		case GL_RG16:				return "GL_RG16";
940		case GL_RG16_SNORM:			return "GL_RG16_SNORM";
941		case GL_RG16F:				return "GL_RG16F";
942		case GL_RG16I:				return "GL_RG16I";
943		case GL_RG16UI:				return "GL_RG16UI";
944		case GL_RG8:				return "GL_RG8";
945		case GL_RG8I:				return "GL_RG8I";
946		case GL_RG8UI:				return "GL_RG8UI";
947		case GL_RG8_SNORM:			return "GL_RG8_SNORM";
948		case GL_R32F:				return "GL_R32F";
949		case GL_R32I:				return "GL_R32I";
950		case GL_R32UI:				return "GL_R32UI";
951		case GL_R16:				return "GL_R16";
952		case GL_R16_SNORM:			return "GL_R16_SNORM";
953		case GL_R16F:				return "GL_R16F";
954		case GL_R16I:				return "GL_R16I";
955		case GL_R16UI:				return "GL_R16UI";
956		case GL_R8:					return "GL_R8";
957		case GL_R8I:				return "GL_R8I";
958		case GL_R8UI:				return "GL_R8UI";
959		case GL_R8_SNORM:			return "GL_R8_SNORM";
960		case GL_DEPTH_COMPONENT32F:	return "GL_DEPTH_COMPONENT32F";
961		case GL_DEPTH_COMPONENT24:	return "GL_DEPTH_COMPONENT24";
962		case GL_DEPTH32F_STENCIL8:	return "GL_DEPTH32F_STENCIL8";
963		case GL_DEPTH24_STENCIL8:	return "GL_DEPTH24_STENCIL8";
964		case GL_RGB10:				return "GL_RGB10";
965		case GL_DEPTH_COMPONENT32:	return "GL_DEPTH_COMPONENT32";
966		case GL_SRGB:				return "GL_SRGB";
967		case GL_SRGB_ALPHA:			return "GL_SRGB_ALPHA";
968		case GL_SR8_EXT:			return "GL_SR8_EXT";
969		case GL_SRG8_EXT:			return "GL_SRG8_EXT";
970		case GL_BGRA:				return "GL_BGRA";
971		case GL_BGRA8_EXT:			return "GL_BGRA8_EXT";
972		case GL_BGR:				return "GL_BGR";
973		case GL_RED_SNORM:			return "GL_RED_SNORM";
974		case GL_RG_SNORM:			return "GL_RG_SNORM";
975		case GL_RGB_SNORM:			return "GL_RGB_SNORM";
976		case GL_RGBA_SNORM:			return "GL_RGBA_SNORM";
977		default:					return nullptr;
978	}
979}
980
981const char* getCompressedTextureFormatName (int value)
982{
983	switch (value)
984	{
985		case GL_COMPRESSED_R11_EAC:							return "GL_COMPRESSED_R11_EAC";
986		case GL_COMPRESSED_SIGNED_R11_EAC:					return "GL_COMPRESSED_SIGNED_R11_EAC";
987		case GL_COMPRESSED_RG11_EAC:						return "GL_COMPRESSED_RG11_EAC";
988		case GL_COMPRESSED_SIGNED_RG11_EAC:					return "GL_COMPRESSED_SIGNED_RG11_EAC";
989		case GL_COMPRESSED_RGB8_ETC2:						return "GL_COMPRESSED_RGB8_ETC2";
990		case GL_COMPRESSED_SRGB8_ETC2:						return "GL_COMPRESSED_SRGB8_ETC2";
991		case GL_COMPRESSED_RGB8_PUNCHTHROUGH_ALPHA1_ETC2:	return "GL_COMPRESSED_RGB8_PUNCHTHROUGH_ALPHA1_ETC2";
992		case GL_COMPRESSED_SRGB8_PUNCHTHROUGH_ALPHA1_ETC2:	return "GL_COMPRESSED_SRGB8_PUNCHTHROUGH_ALPHA1_ETC2";
993		case GL_COMPRESSED_RGBA8_ETC2_EAC:					return "GL_COMPRESSED_RGBA8_ETC2_EAC";
994		case GL_COMPRESSED_SRGB8_ALPHA8_ETC2_EAC:			return "GL_COMPRESSED_SRGB8_ALPHA8_ETC2_EAC";
995		case GL_COMPRESSED_RGBA_ASTC_4x4_KHR:				return "GL_COMPRESSED_RGBA_ASTC_4x4_KHR";
996		case GL_COMPRESSED_RGBA_ASTC_5x4_KHR:				return "GL_COMPRESSED_RGBA_ASTC_5x4_KHR";
997		case GL_COMPRESSED_RGBA_ASTC_5x5_KHR:				return "GL_COMPRESSED_RGBA_ASTC_5x5_KHR";
998		case GL_COMPRESSED_RGBA_ASTC_6x5_KHR:				return "GL_COMPRESSED_RGBA_ASTC_6x5_KHR";
999		case GL_COMPRESSED_RGBA_ASTC_6x6_KHR:				return "GL_COMPRESSED_RGBA_ASTC_6x6_KHR";
1000		case GL_COMPRESSED_RGBA_ASTC_8x5_KHR:				return "GL_COMPRESSED_RGBA_ASTC_8x5_KHR";
1001		case GL_COMPRESSED_RGBA_ASTC_8x6_KHR:				return "GL_COMPRESSED_RGBA_ASTC_8x6_KHR";
1002		case GL_COMPRESSED_RGBA_ASTC_8x8_KHR:				return "GL_COMPRESSED_RGBA_ASTC_8x8_KHR";
1003		case GL_COMPRESSED_RGBA_ASTC_10x5_KHR:				return "GL_COMPRESSED_RGBA_ASTC_10x5_KHR";
1004		case GL_COMPRESSED_RGBA_ASTC_10x6_KHR:				return "GL_COMPRESSED_RGBA_ASTC_10x6_KHR";
1005		case GL_COMPRESSED_RGBA_ASTC_10x8_KHR:				return "GL_COMPRESSED_RGBA_ASTC_10x8_KHR";
1006		case GL_COMPRESSED_RGBA_ASTC_10x10_KHR:				return "GL_COMPRESSED_RGBA_ASTC_10x10_KHR";
1007		case GL_COMPRESSED_RGBA_ASTC_12x10_KHR:				return "GL_COMPRESSED_RGBA_ASTC_12x10_KHR";
1008		case GL_COMPRESSED_RGBA_ASTC_12x12_KHR:				return "GL_COMPRESSED_RGBA_ASTC_12x12_KHR";
1009		case GL_COMPRESSED_SRGB8_ALPHA8_ASTC_4x4_KHR:		return "GL_COMPRESSED_SRGB8_ALPHA8_ASTC_4x4_KHR";
1010		case GL_COMPRESSED_SRGB8_ALPHA8_ASTC_5x4_KHR:		return "GL_COMPRESSED_SRGB8_ALPHA8_ASTC_5x4_KHR";
1011		case GL_COMPRESSED_SRGB8_ALPHA8_ASTC_5x5_KHR:		return "GL_COMPRESSED_SRGB8_ALPHA8_ASTC_5x5_KHR";
1012		case GL_COMPRESSED_SRGB8_ALPHA8_ASTC_6x5_KHR:		return "GL_COMPRESSED_SRGB8_ALPHA8_ASTC_6x5_KHR";
1013		case GL_COMPRESSED_SRGB8_ALPHA8_ASTC_6x6_KHR:		return "GL_COMPRESSED_SRGB8_ALPHA8_ASTC_6x6_KHR";
1014		case GL_COMPRESSED_SRGB8_ALPHA8_ASTC_8x5_KHR:		return "GL_COMPRESSED_SRGB8_ALPHA8_ASTC_8x5_KHR";
1015		case GL_COMPRESSED_SRGB8_ALPHA8_ASTC_8x6_KHR:		return "GL_COMPRESSED_SRGB8_ALPHA8_ASTC_8x6_KHR";
1016		case GL_COMPRESSED_SRGB8_ALPHA8_ASTC_8x8_KHR:		return "GL_COMPRESSED_SRGB8_ALPHA8_ASTC_8x8_KHR";
1017		case GL_COMPRESSED_SRGB8_ALPHA8_ASTC_10x5_KHR:		return "GL_COMPRESSED_SRGB8_ALPHA8_ASTC_10x5_KHR";
1018		case GL_COMPRESSED_SRGB8_ALPHA8_ASTC_10x6_KHR:		return "GL_COMPRESSED_SRGB8_ALPHA8_ASTC_10x6_KHR";
1019		case GL_COMPRESSED_SRGB8_ALPHA8_ASTC_10x8_KHR:		return "GL_COMPRESSED_SRGB8_ALPHA8_ASTC_10x8_KHR";
1020		case GL_COMPRESSED_SRGB8_ALPHA8_ASTC_10x10_KHR:		return "GL_COMPRESSED_SRGB8_ALPHA8_ASTC_10x10_KHR";
1021		case GL_COMPRESSED_SRGB8_ALPHA8_ASTC_12x10_KHR:		return "GL_COMPRESSED_SRGB8_ALPHA8_ASTC_12x10_KHR";
1022		case GL_COMPRESSED_SRGB8_ALPHA8_ASTC_12x12_KHR:		return "GL_COMPRESSED_SRGB8_ALPHA8_ASTC_12x12_KHR";
1023		case GL_COMPRESSED_RGB_S3TC_DXT1_EXT:				return "GL_COMPRESSED_RGB_S3TC_DXT1_EXT";
1024		case GL_COMPRESSED_RGBA_S3TC_DXT1_EXT:				return "GL_COMPRESSED_RGBA_S3TC_DXT1_EXT";
1025		case GL_COMPRESSED_RGBA_S3TC_DXT3_EXT:				return "GL_COMPRESSED_RGBA_S3TC_DXT3_EXT";
1026		case GL_COMPRESSED_RGBA_S3TC_DXT5_EXT:				return "GL_COMPRESSED_RGBA_S3TC_DXT5_EXT";
1027		case GL_COMPRESSED_RGB_PVRTC_4BPPV1_IMG:			return "GL_COMPRESSED_RGB_PVRTC_4BPPV1_IMG";
1028		case GL_COMPRESSED_RGB_PVRTC_2BPPV1_IMG:			return "GL_COMPRESSED_RGB_PVRTC_2BPPV1_IMG";
1029		case GL_COMPRESSED_RGBA_PVRTC_4BPPV1_IMG:			return "GL_COMPRESSED_RGBA_PVRTC_4BPPV1_IMG";
1030		case GL_COMPRESSED_RGBA_PVRTC_2BPPV1_IMG:			return "GL_COMPRESSED_RGBA_PVRTC_2BPPV1_IMG";
1031		case GL_COMPRESSED_RED:								return "GL_COMPRESSED_RED";
1032		case GL_COMPRESSED_RG:								return "GL_COMPRESSED_RG";
1033		case GL_COMPRESSED_RGB:								return "GL_COMPRESSED_RGB";
1034		case GL_COMPRESSED_RGBA:							return "GL_COMPRESSED_RGBA";
1035		case GL_COMPRESSED_SRGB:							return "GL_COMPRESSED_SRGB";
1036		case GL_COMPRESSED_SRGB_ALPHA:						return "GL_COMPRESSED_SRGB_ALPHA";
1037		case GL_COMPRESSED_RED_RGTC1:						return "GL_COMPRESSED_RED_RGTC1";
1038		case GL_COMPRESSED_SIGNED_RED_RGTC1:				return "GL_COMPRESSED_SIGNED_RED_RGTC1";
1039		case GL_COMPRESSED_RG_RGTC2:						return "GL_COMPRESSED_RG_RGTC2";
1040		case GL_COMPRESSED_SIGNED_RG_RGTC2:					return "GL_COMPRESSED_SIGNED_RG_RGTC2";
1041		case GL_COMPRESSED_RGBA_BPTC_UNORM:					return "GL_COMPRESSED_RGBA_BPTC_UNORM";
1042		case GL_COMPRESSED_SRGB_ALPHA_BPTC_UNORM:			return "GL_COMPRESSED_SRGB_ALPHA_BPTC_UNORM";
1043		case GL_COMPRESSED_RGB_BPTC_SIGNED_FLOAT:			return "GL_COMPRESSED_RGB_BPTC_SIGNED_FLOAT";
1044		case GL_COMPRESSED_RGB_BPTC_UNSIGNED_FLOAT:			return "GL_COMPRESSED_RGB_BPTC_UNSIGNED_FLOAT";
1045		default:											return nullptr;
1046	}
1047}
1048
1049const char* getShaderVarTypeName (int value)
1050{
1051	switch (value)
1052	{
1053		case GL_FLOAT:										return "GL_FLOAT";
1054		case GL_FLOAT_VEC2:									return "GL_FLOAT_VEC2";
1055		case GL_FLOAT_VEC3:									return "GL_FLOAT_VEC3";
1056		case GL_FLOAT_VEC4:									return "GL_FLOAT_VEC4";
1057		case GL_INT:										return "GL_INT";
1058		case GL_INT_VEC2:									return "GL_INT_VEC2";
1059		case GL_INT_VEC3:									return "GL_INT_VEC3";
1060		case GL_INT_VEC4:									return "GL_INT_VEC4";
1061		case GL_UNSIGNED_INT:								return "GL_UNSIGNED_INT";
1062		case GL_UNSIGNED_INT_VEC2:							return "GL_UNSIGNED_INT_VEC2";
1063		case GL_UNSIGNED_INT_VEC3:							return "GL_UNSIGNED_INT_VEC3";
1064		case GL_UNSIGNED_INT_VEC4:							return "GL_UNSIGNED_INT_VEC4";
1065		case GL_BOOL:										return "GL_BOOL";
1066		case GL_BOOL_VEC2:									return "GL_BOOL_VEC2";
1067		case GL_BOOL_VEC3:									return "GL_BOOL_VEC3";
1068		case GL_BOOL_VEC4:									return "GL_BOOL_VEC4";
1069		case GL_FLOAT_MAT2:									return "GL_FLOAT_MAT2";
1070		case GL_FLOAT_MAT3:									return "GL_FLOAT_MAT3";
1071		case GL_FLOAT_MAT4:									return "GL_FLOAT_MAT4";
1072		case GL_FLOAT_MAT2x3:								return "GL_FLOAT_MAT2x3";
1073		case GL_FLOAT_MAT2x4:								return "GL_FLOAT_MAT2x4";
1074		case GL_FLOAT_MAT3x2:								return "GL_FLOAT_MAT3x2";
1075		case GL_FLOAT_MAT3x4:								return "GL_FLOAT_MAT3x4";
1076		case GL_FLOAT_MAT4x2:								return "GL_FLOAT_MAT4x2";
1077		case GL_FLOAT_MAT4x3:								return "GL_FLOAT_MAT4x3";
1078		case GL_SAMPLER_1D:									return "GL_SAMPLER_1D";
1079		case GL_SAMPLER_1D_ARRAY:							return "GL_SAMPLER_1D_ARRAY";
1080		case GL_SAMPLER_1D_SHADOW:							return "GL_SAMPLER_1D_SHADOW";
1081		case GL_SAMPLER_2D:									return "GL_SAMPLER_2D";
1082		case GL_SAMPLER_2D_RECT:							return "GL_SAMPLER_2D_RECT";
1083		case GL_SAMPLER_2D_RECT_SHADOW:						return "GL_SAMPLER_2D_RECT_SHADOW";
1084		case GL_SAMPLER_3D:									return "GL_SAMPLER_3D";
1085		case GL_SAMPLER_CUBE:								return "GL_SAMPLER_CUBE";
1086		case GL_SAMPLER_1D_ARRAY_SHADOW:					return "GL_SAMPLER_1D_ARRAY_SHADOW";
1087		case GL_SAMPLER_2D_SHADOW:							return "GL_SAMPLER_2D_SHADOW";
1088		case GL_SAMPLER_2D_ARRAY:							return "GL_SAMPLER_2D_ARRAY";
1089		case GL_SAMPLER_2D_ARRAY_SHADOW:					return "GL_SAMPLER_2D_ARRAY_SHADOW";
1090		case GL_SAMPLER_CUBE_SHADOW:						return "GL_SAMPLER_CUBE_SHADOW";
1091		case GL_INT_SAMPLER_1D:								return "GL_INT_SAMPLER_1D";
1092		case GL_INT_SAMPLER_2D:								return "GL_INT_SAMPLER_2D";
1093		case GL_INT_SAMPLER_2D_RECT:						return "GL_INT_SAMPLER_2D_RECT";
1094		case GL_INT_SAMPLER_3D:								return "GL_INT_SAMPLER_3D";
1095		case GL_INT_SAMPLER_CUBE:							return "GL_INT_SAMPLER_CUBE";
1096		case GL_INT_SAMPLER_2D_ARRAY:						return "GL_INT_SAMPLER_2D_ARRAY";
1097		case GL_INT_SAMPLER_1D_ARRAY:						return "GL_INT_SAMPLER_1D_ARRAY";
1098		case GL_UNSIGNED_INT_SAMPLER_1D:					return "GL_UNSIGNED_INT_SAMPLER_1D";
1099		case GL_UNSIGNED_INT_SAMPLER_2D:					return "GL_UNSIGNED_INT_SAMPLER_2D";
1100		case GL_UNSIGNED_INT_SAMPLER_2D_RECT:				return "GL_UNSIGNED_INT_SAMPLER_2D_RECT";
1101		case GL_UNSIGNED_INT_SAMPLER_3D:					return "GL_UNSIGNED_INT_SAMPLER_3D";
1102		case GL_UNSIGNED_INT_SAMPLER_CUBE:					return "GL_UNSIGNED_INT_SAMPLER_CUBE";
1103		case GL_UNSIGNED_INT_SAMPLER_1D_ARRAY:				return "GL_UNSIGNED_INT_SAMPLER_1D_ARRAY";
1104		case GL_UNSIGNED_INT_SAMPLER_2D_ARRAY:				return "GL_UNSIGNED_INT_SAMPLER_2D_ARRAY";
1105		case GL_SAMPLER_2D_MULTISAMPLE:						return "GL_SAMPLER_2D_MULTISAMPLE";
1106		case GL_INT_SAMPLER_2D_MULTISAMPLE:					return "GL_INT_SAMPLER_2D_MULTISAMPLE";
1107		case GL_UNSIGNED_INT_SAMPLER_2D_MULTISAMPLE:		return "GL_UNSIGNED_INT_SAMPLER_2D_MULTISAMPLE";
1108		case GL_IMAGE_2D:									return "GL_IMAGE_2D";
1109		case GL_IMAGE_3D:									return "GL_IMAGE_3D";
1110		case GL_IMAGE_CUBE:									return "GL_IMAGE_CUBE";
1111		case GL_IMAGE_2D_ARRAY:								return "GL_IMAGE_2D_ARRAY";
1112		case GL_INT_IMAGE_2D:								return "GL_INT_IMAGE_2D";
1113		case GL_INT_IMAGE_3D:								return "GL_INT_IMAGE_3D";
1114		case GL_INT_IMAGE_CUBE:								return "GL_INT_IMAGE_CUBE";
1115		case GL_INT_IMAGE_2D_ARRAY:							return "GL_INT_IMAGE_2D_ARRAY";
1116		case GL_UNSIGNED_INT_IMAGE_2D:						return "GL_UNSIGNED_INT_IMAGE_2D";
1117		case GL_UNSIGNED_INT_IMAGE_3D:						return "GL_UNSIGNED_INT_IMAGE_3D";
1118		case GL_UNSIGNED_INT_IMAGE_CUBE:					return "GL_UNSIGNED_INT_IMAGE_CUBE";
1119		case GL_UNSIGNED_INT_IMAGE_2D_ARRAY:				return "GL_UNSIGNED_INT_IMAGE_2D_ARRAY";
1120		case GL_UNSIGNED_INT_ATOMIC_COUNTER:				return "GL_UNSIGNED_INT_ATOMIC_COUNTER";
1121		case GL_SAMPLER_2D_MULTISAMPLE_ARRAY:				return "GL_SAMPLER_2D_MULTISAMPLE_ARRAY";
1122		case GL_INT_SAMPLER_2D_MULTISAMPLE_ARRAY:			return "GL_INT_SAMPLER_2D_MULTISAMPLE_ARRAY";
1123		case GL_UNSIGNED_INT_SAMPLER_2D_MULTISAMPLE_ARRAY:	return "GL_UNSIGNED_INT_SAMPLER_2D_MULTISAMPLE_ARRAY";
1124		case GL_SAMPLER_BUFFER:								return "GL_SAMPLER_BUFFER";
1125		case GL_INT_SAMPLER_BUFFER:							return "GL_INT_SAMPLER_BUFFER";
1126		case GL_UNSIGNED_INT_SAMPLER_BUFFER:				return "GL_UNSIGNED_INT_SAMPLER_BUFFER";
1127		case GL_IMAGE_BUFFER:								return "GL_IMAGE_BUFFER";
1128		case GL_INT_IMAGE_BUFFER:							return "GL_INT_IMAGE_BUFFER";
1129		case GL_UNSIGNED_INT_IMAGE_BUFFER:					return "GL_UNSIGNED_INT_IMAGE_BUFFER";
1130		case GL_SAMPLER_CUBE_MAP_ARRAY:						return "GL_SAMPLER_CUBE_MAP_ARRAY";
1131		case GL_SAMPLER_CUBE_MAP_ARRAY_SHADOW:				return "GL_SAMPLER_CUBE_MAP_ARRAY_SHADOW";
1132		case GL_INT_SAMPLER_CUBE_MAP_ARRAY:					return "GL_INT_SAMPLER_CUBE_MAP_ARRAY";
1133		case GL_UNSIGNED_INT_SAMPLER_CUBE_MAP_ARRAY:		return "GL_UNSIGNED_INT_SAMPLER_CUBE_MAP_ARRAY";
1134		case GL_IMAGE_CUBE_MAP_ARRAY:						return "GL_IMAGE_CUBE_MAP_ARRAY";
1135		case GL_INT_IMAGE_CUBE_MAP_ARRAY:					return "GL_INT_IMAGE_CUBE_MAP_ARRAY";
1136		case GL_UNSIGNED_INT_IMAGE_CUBE_MAP_ARRAY:			return "GL_UNSIGNED_INT_IMAGE_CUBE_MAP_ARRAY";
1137		default:											return nullptr;
1138	}
1139}
1140
1141const char* getShaderParamName (int value)
1142{
1143	switch (value)
1144	{
1145		case GL_SHADER_TYPE:			return "GL_SHADER_TYPE";
1146		case GL_DELETE_STATUS:			return "GL_DELETE_STATUS";
1147		case GL_COMPILE_STATUS:			return "GL_COMPILE_STATUS";
1148		case GL_INFO_LOG_LENGTH:		return "GL_INFO_LOG_LENGTH";
1149		case GL_SHADER_SOURCE_LENGTH:	return "GL_SHADER_SOURCE_LENGTH";
1150		default:						return nullptr;
1151	}
1152}
1153
1154const char* getVertexAttribParameterNameName (int value)
1155{
1156	switch (value)
1157	{
1158		case GL_VERTEX_ATTRIB_ARRAY_BUFFER_BINDING:	return "GL_VERTEX_ATTRIB_ARRAY_BUFFER_BINDING";
1159		case GL_VERTEX_ATTRIB_ARRAY_ENABLED:		return "GL_VERTEX_ATTRIB_ARRAY_ENABLED";
1160		case GL_VERTEX_ATTRIB_ARRAY_SIZE:			return "GL_VERTEX_ATTRIB_ARRAY_SIZE";
1161		case GL_VERTEX_ATTRIB_ARRAY_STRIDE:			return "GL_VERTEX_ATTRIB_ARRAY_STRIDE";
1162		case GL_VERTEX_ATTRIB_ARRAY_TYPE:			return "GL_VERTEX_ATTRIB_ARRAY_TYPE";
1163		case GL_VERTEX_ATTRIB_ARRAY_NORMALIZED:		return "GL_VERTEX_ATTRIB_ARRAY_NORMALIZED";
1164		case GL_VERTEX_ATTRIB_ARRAY_INTEGER:		return "GL_VERTEX_ATTRIB_ARRAY_INTEGER";
1165		case GL_VERTEX_ATTRIB_ARRAY_DIVISOR:		return "GL_VERTEX_ATTRIB_ARRAY_DIVISOR";
1166		case GL_CURRENT_VERTEX_ATTRIB:				return "GL_CURRENT_VERTEX_ATTRIB";
1167		case GL_VERTEX_ATTRIB_BINDING:				return "GL_VERTEX_ATTRIB_BINDING";
1168		case GL_VERTEX_ATTRIB_RELATIVE_OFFSET:		return "GL_VERTEX_ATTRIB_RELATIVE_OFFSET";
1169		case GL_VERTEX_ATTRIB_ARRAY_POINTER:		return "GL_VERTEX_ATTRIB_ARRAY_POINTER";
1170		default:									return nullptr;
1171	}
1172}
1173
1174const char* getBooleanName (int value)
1175{
1176	switch (value)
1177	{
1178		case GL_FALSE:	return "GL_FALSE";
1179		case GL_TRUE:	return "GL_TRUE";
1180		default:		return nullptr;
1181	}
1182}
1183
1184const char* getGettableStateName (int value)
1185{
1186	switch (value)
1187	{
1188		case GL_ELEMENT_ARRAY_BUFFER_BINDING:						return "GL_ELEMENT_ARRAY_BUFFER_BINDING";
1189		case GL_ARRAY_BUFFER_BINDING:								return "GL_ARRAY_BUFFER_BINDING";
1190		case GL_VERTEX_ARRAY_BINDING:								return "GL_VERTEX_ARRAY_BINDING";
1191		case GL_VIEWPORT:											return "GL_VIEWPORT";
1192		case GL_DEPTH_RANGE:										return "GL_DEPTH_RANGE";
1193		case GL_TRANSFORM_FEEDBACK_BINDING:							return "GL_TRANSFORM_FEEDBACK_BINDING";
1194		case GL_LINE_WIDTH:											return "GL_LINE_WIDTH";
1195		case GL_CULL_FACE_MODE:										return "GL_CULL_FACE_MODE";
1196		case GL_FRONT_FACE:											return "GL_FRONT_FACE";
1197		case GL_POLYGON_OFFSET_FACTOR:								return "GL_POLYGON_OFFSET_FACTOR";
1198		case GL_POLYGON_OFFSET_UNITS:								return "GL_POLYGON_OFFSET_UNITS";
1199		case GL_SAMPLE_COVERAGE_VALUE:								return "GL_SAMPLE_COVERAGE_VALUE";
1200		case GL_SAMPLE_COVERAGE_INVERT:								return "GL_SAMPLE_COVERAGE_INVERT";
1201		case GL_ACTIVE_TEXTURE:										return "GL_ACTIVE_TEXTURE";
1202		case GL_TEXTURE_BINDING_1D:									return "GL_TEXTURE_BINDING_1D";
1203		case GL_TEXTURE_BINDING_1D_ARRAY:							return "GL_TEXTURE_BINDING_1D_ARRAY";
1204		case GL_TEXTURE_BINDING_2D:									return "GL_TEXTURE_BINDING_2D";
1205		case GL_TEXTURE_BINDING_RECTANGLE:							return "GL_TEXTURE_BINDING_RECTANGLE";
1206		case GL_TEXTURE_BINDING_3D:									return "GL_TEXTURE_BINDING_3D";
1207		case GL_TEXTURE_BINDING_2D_ARRAY:							return "GL_TEXTURE_BINDING_2D_ARRAY";
1208		case GL_TEXTURE_BINDING_CUBE_MAP:							return "GL_TEXTURE_BINDING_CUBE_MAP";
1209		case GL_TEXTURE_BINDING_CUBE_MAP_ARRAY:						return "GL_TEXTURE_BINDING_CUBE_MAP_ARRAY";
1210		case GL_SAMPLER_BINDING:									return "GL_SAMPLER_BINDING";
1211		case GL_SCISSOR_BOX:										return "GL_SCISSOR_BOX";
1212		case GL_STENCIL_FUNC:										return "GL_STENCIL_FUNC";
1213		case GL_STENCIL_VALUE_MASK:									return "GL_STENCIL_VALUE_MASK";
1214		case GL_STENCIL_REF:										return "GL_STENCIL_REF";
1215		case GL_STENCIL_FAIL:										return "GL_STENCIL_FAIL";
1216		case GL_STENCIL_PASS_DEPTH_FAIL:							return "GL_STENCIL_PASS_DEPTH_FAIL";
1217		case GL_STENCIL_PASS_DEPTH_PASS:							return "GL_STENCIL_PASS_DEPTH_PASS";
1218		case GL_STENCIL_BACK_FUNC:									return "GL_STENCIL_BACK_FUNC";
1219		case GL_STENCIL_BACK_VALUE_MASK:							return "GL_STENCIL_BACK_VALUE_MASK";
1220		case GL_STENCIL_BACK_REF:									return "GL_STENCIL_BACK_REF";
1221		case GL_STENCIL_BACK_FAIL:									return "GL_STENCIL_BACK_FAIL";
1222		case GL_STENCIL_BACK_PASS_DEPTH_FAIL:						return "GL_STENCIL_BACK_PASS_DEPTH_FAIL";
1223		case GL_STENCIL_BACK_PASS_DEPTH_PASS:						return "GL_STENCIL_BACK_PASS_DEPTH_PASS";
1224		case GL_DEPTH_FUNC:											return "GL_DEPTH_FUNC";
1225		case GL_BLEND_SRC_RGB:										return "GL_BLEND_SRC_RGB";
1226		case GL_BLEND_SRC_ALPHA:									return "GL_BLEND_SRC_ALPHA";
1227		case GL_BLEND_DST_RGB:										return "GL_BLEND_DST_RGB";
1228		case GL_BLEND_DST_ALPHA:									return "GL_BLEND_DST_ALPHA";
1229		case GL_BLEND_EQUATION_RGB:									return "GL_BLEND_EQUATION_RGB";
1230		case GL_BLEND_EQUATION_ALPHA:								return "GL_BLEND_EQUATION_ALPHA";
1231		case GL_BLEND_COLOR:										return "GL_BLEND_COLOR";
1232		case GL_COLOR_WRITEMASK:									return "GL_COLOR_WRITEMASK";
1233		case GL_DEPTH_WRITEMASK:									return "GL_DEPTH_WRITEMASK";
1234		case GL_STENCIL_WRITEMASK:									return "GL_STENCIL_WRITEMASK";
1235		case GL_STENCIL_BACK_WRITEMASK:								return "GL_STENCIL_BACK_WRITEMASK";
1236		case GL_COLOR_CLEAR_VALUE:									return "GL_COLOR_CLEAR_VALUE";
1237		case GL_DEPTH_CLEAR_VALUE:									return "GL_DEPTH_CLEAR_VALUE";
1238		case GL_STENCIL_CLEAR_VALUE:								return "GL_STENCIL_CLEAR_VALUE";
1239		case GL_DRAW_FRAMEBUFFER_BINDING:							return "GL_DRAW_FRAMEBUFFER_BINDING";
1240		case GL_READ_FRAMEBUFFER_BINDING:							return "GL_READ_FRAMEBUFFER_BINDING";
1241		case GL_RENDERBUFFER_BINDING:								return "GL_RENDERBUFFER_BINDING";
1242		case GL_DRAW_BUFFER0:										return "GL_DRAW_BUFFER0";
1243		case GL_DRAW_BUFFER1:										return "GL_DRAW_BUFFER1";
1244		case GL_DRAW_BUFFER2:										return "GL_DRAW_BUFFER2";
1245		case GL_DRAW_BUFFER3:										return "GL_DRAW_BUFFER3";
1246		case GL_DRAW_BUFFER4:										return "GL_DRAW_BUFFER4";
1247		case GL_DRAW_BUFFER5:										return "GL_DRAW_BUFFER5";
1248		case GL_DRAW_BUFFER6:										return "GL_DRAW_BUFFER6";
1249		case GL_DRAW_BUFFER7:										return "GL_DRAW_BUFFER7";
1250		case GL_DRAW_BUFFER8:										return "GL_DRAW_BUFFER8";
1251		case GL_DRAW_BUFFER9:										return "GL_DRAW_BUFFER9";
1252		case GL_DRAW_BUFFER10:										return "GL_DRAW_BUFFER10";
1253		case GL_DRAW_BUFFER11:										return "GL_DRAW_BUFFER11";
1254		case GL_DRAW_BUFFER12:										return "GL_DRAW_BUFFER12";
1255		case GL_DRAW_BUFFER13:										return "GL_DRAW_BUFFER13";
1256		case GL_DRAW_BUFFER14:										return "GL_DRAW_BUFFER14";
1257		case GL_DRAW_BUFFER15:										return "GL_DRAW_BUFFER15";
1258		case GL_READ_BUFFER:										return "GL_READ_BUFFER";
1259		case GL_DRAW_BUFFER:										return "GL_DRAW_BUFFER";
1260		case GL_UNPACK_IMAGE_HEIGHT:								return "GL_UNPACK_IMAGE_HEIGHT";
1261		case GL_UNPACK_SKIP_IMAGES:									return "GL_UNPACK_SKIP_IMAGES";
1262		case GL_UNPACK_ROW_LENGTH:									return "GL_UNPACK_ROW_LENGTH";
1263		case GL_UNPACK_SKIP_ROWS:									return "GL_UNPACK_SKIP_ROWS";
1264		case GL_UNPACK_SKIP_PIXELS:									return "GL_UNPACK_SKIP_PIXELS";
1265		case GL_UNPACK_ALIGNMENT:									return "GL_UNPACK_ALIGNMENT";
1266		case GL_PACK_ROW_LENGTH:									return "GL_PACK_ROW_LENGTH";
1267		case GL_PACK_SKIP_ROWS:										return "GL_PACK_SKIP_ROWS";
1268		case GL_PACK_SKIP_PIXELS:									return "GL_PACK_SKIP_PIXELS";
1269		case GL_PACK_ALIGNMENT:										return "GL_PACK_ALIGNMENT";
1270		case GL_PIXEL_PACK_BUFFER_BINDING:							return "GL_PIXEL_PACK_BUFFER_BINDING";
1271		case GL_PIXEL_UNPACK_BUFFER_BINDING:						return "GL_PIXEL_UNPACK_BUFFER_BINDING";
1272		case GL_CURRENT_PROGRAM:									return "GL_CURRENT_PROGRAM";
1273		case GL_TRANSFORM_FEEDBACK_BUFFER_BINDING:					return "GL_TRANSFORM_FEEDBACK_BUFFER_BINDING";
1274		case GL_TRANSFORM_FEEDBACK_PAUSED:							return "GL_TRANSFORM_FEEDBACK_PAUSED";
1275		case GL_TRANSFORM_FEEDBACK_ACTIVE:							return "GL_TRANSFORM_FEEDBACK_ACTIVE";
1276		case GL_UNIFORM_BUFFER_BINDING:								return "GL_UNIFORM_BUFFER_BINDING";
1277		case GL_GENERATE_MIPMAP_HINT:								return "GL_GENERATE_MIPMAP_HINT";
1278		case GL_FRAGMENT_SHADER_DERIVATIVE_HINT:					return "GL_FRAGMENT_SHADER_DERIVATIVE_HINT";
1279		case GL_MAX_ELEMENT_INDEX:									return "GL_MAX_ELEMENT_INDEX";
1280		case GL_SUBPIXEL_BITS:										return "GL_SUBPIXEL_BITS";
1281		case GL_MAX_3D_TEXTURE_SIZE:								return "GL_MAX_3D_TEXTURE_SIZE";
1282		case GL_MAX_TEXTURE_SIZE:									return "GL_MAX_TEXTURE_SIZE";
1283		case GL_MAX_ARRAY_TEXTURE_LAYERS:							return "GL_MAX_ARRAY_TEXTURE_LAYERS";
1284		case GL_MAX_TEXTURE_LOD_BIAS:								return "GL_MAX_TEXTURE_LOD_BIAS";
1285		case GL_MAX_CUBE_MAP_TEXTURE_SIZE:							return "GL_MAX_CUBE_MAP_TEXTURE_SIZE";
1286		case GL_MAX_RECTANGLE_TEXTURE_SIZE:							return "GL_MAX_RECTANGLE_TEXTURE_SIZE";
1287		case GL_MAX_RENDERBUFFER_SIZE:								return "GL_MAX_RENDERBUFFER_SIZE";
1288		case GL_MAX_DRAW_BUFFERS:									return "GL_MAX_DRAW_BUFFERS";
1289		case GL_MAX_DUAL_SOURCE_DRAW_BUFFERS:						return "GL_MAX_DUAL_SOURCE_DRAW_BUFFERS";
1290		case GL_MAX_COLOR_ATTACHMENTS:								return "GL_MAX_COLOR_ATTACHMENTS";
1291		case GL_MAX_VIEWPORT_DIMS:									return "GL_MAX_VIEWPORT_DIMS";
1292		case GL_ALIASED_POINT_SIZE_RANGE:							return "GL_ALIASED_POINT_SIZE_RANGE";
1293		case GL_ALIASED_LINE_WIDTH_RANGE:							return "GL_ALIASED_LINE_WIDTH_RANGE";
1294		case GL_MAX_ELEMENTS_INDICES:								return "GL_MAX_ELEMENTS_INDICES";
1295		case GL_MAX_ELEMENTS_VERTICES:								return "GL_MAX_ELEMENTS_VERTICES";
1296		case GL_COMPRESSED_TEXTURE_FORMATS:							return "GL_COMPRESSED_TEXTURE_FORMATS";
1297		case GL_NUM_COMPRESSED_TEXTURE_FORMATS:						return "GL_NUM_COMPRESSED_TEXTURE_FORMATS";
1298		case GL_PROGRAM_BINARY_FORMATS:								return "GL_PROGRAM_BINARY_FORMATS";
1299		case GL_NUM_PROGRAM_BINARY_FORMATS:							return "GL_NUM_PROGRAM_BINARY_FORMATS";
1300		case GL_SHADER_BINARY_FORMATS:								return "GL_SHADER_BINARY_FORMATS";
1301		case GL_NUM_SHADER_BINARY_FORMATS:							return "GL_NUM_SHADER_BINARY_FORMATS";
1302		case GL_SHADER_COMPILER:									return "GL_SHADER_COMPILER";
1303		case GL_MAX_SERVER_WAIT_TIMEOUT:							return "GL_MAX_SERVER_WAIT_TIMEOUT";
1304		case GL_NUM_EXTENSIONS:										return "GL_NUM_EXTENSIONS";
1305		case GL_MAJOR_VERSION:										return "GL_MAJOR_VERSION";
1306		case GL_MINOR_VERSION:										return "GL_MINOR_VERSION";
1307		case GL_MAX_VERTEX_ATTRIBS:									return "GL_MAX_VERTEX_ATTRIBS";
1308		case GL_MAX_VERTEX_UNIFORM_COMPONENTS:						return "GL_MAX_VERTEX_UNIFORM_COMPONENTS";
1309		case GL_MAX_VERTEX_UNIFORM_VECTORS:							return "GL_MAX_VERTEX_UNIFORM_VECTORS";
1310		case GL_MAX_VERTEX_UNIFORM_BLOCKS:							return "GL_MAX_VERTEX_UNIFORM_BLOCKS";
1311		case GL_MAX_VERTEX_OUTPUT_COMPONENTS:						return "GL_MAX_VERTEX_OUTPUT_COMPONENTS";
1312		case GL_MAX_VERTEX_TEXTURE_IMAGE_UNITS:						return "GL_MAX_VERTEX_TEXTURE_IMAGE_UNITS";
1313		case GL_MAX_FRAGMENT_UNIFORM_COMPONENTS:					return "GL_MAX_FRAGMENT_UNIFORM_COMPONENTS";
1314		case GL_MAX_FRAGMENT_UNIFORM_VECTORS:						return "GL_MAX_FRAGMENT_UNIFORM_VECTORS";
1315		case GL_MAX_FRAGMENT_UNIFORM_BLOCKS:						return "GL_MAX_FRAGMENT_UNIFORM_BLOCKS";
1316		case GL_MAX_FRAGMENT_INPUT_COMPONENTS:						return "GL_MAX_FRAGMENT_INPUT_COMPONENTS";
1317		case GL_MAX_TEXTURE_IMAGE_UNITS:							return "GL_MAX_TEXTURE_IMAGE_UNITS";
1318		case GL_MIN_PROGRAM_TEXEL_OFFSET:							return "GL_MIN_PROGRAM_TEXEL_OFFSET";
1319		case GL_MAX_PROGRAM_TEXEL_OFFSET:							return "GL_MAX_PROGRAM_TEXEL_OFFSET";
1320		case GL_MAX_UNIFORM_BUFFER_BINDINGS:						return "GL_MAX_UNIFORM_BUFFER_BINDINGS";
1321		case GL_MAX_UNIFORM_BLOCK_SIZE:								return "GL_MAX_UNIFORM_BLOCK_SIZE";
1322		case GL_UNIFORM_BUFFER_OFFSET_ALIGNMENT:					return "GL_UNIFORM_BUFFER_OFFSET_ALIGNMENT";
1323		case GL_MAX_COMBINED_UNIFORM_BLOCKS:						return "GL_MAX_COMBINED_UNIFORM_BLOCKS";
1324		case GL_MAX_COMBINED_VERTEX_UNIFORM_COMPONENTS:				return "GL_MAX_COMBINED_VERTEX_UNIFORM_COMPONENTS";
1325		case GL_MAX_COMBINED_FRAGMENT_UNIFORM_COMPONENTS:			return "GL_MAX_COMBINED_FRAGMENT_UNIFORM_COMPONENTS";
1326		case GL_MAX_VARYING_COMPONENTS:								return "GL_MAX_VARYING_COMPONENTS";
1327		case GL_MAX_VARYING_VECTORS:								return "GL_MAX_VARYING_VECTORS";
1328		case GL_MAX_COMBINED_TEXTURE_IMAGE_UNITS:					return "GL_MAX_COMBINED_TEXTURE_IMAGE_UNITS";
1329		case GL_MAX_TRANSFORM_FEEDBACK_INTERLEAVED_COMPONENTS:		return "GL_MAX_TRANSFORM_FEEDBACK_INTERLEAVED_COMPONENTS";
1330		case GL_MAX_TRANSFORM_FEEDBACK_SEPARATE_ATTRIBS:			return "GL_MAX_TRANSFORM_FEEDBACK_SEPARATE_ATTRIBS";
1331		case GL_MAX_TRANSFORM_FEEDBACK_SEPARATE_COMPONENTS:			return "GL_MAX_TRANSFORM_FEEDBACK_SEPARATE_COMPONENTS";
1332		case GL_INTERLEAVED_ATTRIBS:								return "GL_INTERLEAVED_ATTRIBS";
1333		case GL_SEPARATE_ATTRIBS:									return "GL_SEPARATE_ATTRIBS";
1334		case GL_SAMPLE_BUFFERS:										return "GL_SAMPLE_BUFFERS";
1335		case GL_SAMPLES:											return "GL_SAMPLES";
1336		case GL_MAX_SAMPLES:										return "GL_MAX_SAMPLES";
1337		case GL_DEPTH_BITS:											return "GL_DEPTH_BITS";
1338		case GL_STENCIL_BITS:										return "GL_STENCIL_BITS";
1339		case GL_IMPLEMENTATION_COLOR_READ_TYPE:						return "GL_IMPLEMENTATION_COLOR_READ_TYPE";
1340		case GL_IMPLEMENTATION_COLOR_READ_FORMAT:					return "GL_IMPLEMENTATION_COLOR_READ_FORMAT";
1341		case GL_COPY_READ_BUFFER_BINDING:							return "GL_COPY_READ_BUFFER_BINDING";
1342		case GL_COPY_WRITE_BUFFER_BINDING:							return "GL_COPY_WRITE_BUFFER_BINDING";
1343		case GL_RED_BITS:											return "GL_RED_BITS";
1344		case GL_GREEN_BITS:											return "GL_GREEN_BITS";
1345		case GL_BLUE_BITS:											return "GL_BLUE_BITS";
1346		case GL_ALPHA_BITS:											return "GL_ALPHA_BITS";
1347		case GL_MAX_COLOR_TEXTURE_SAMPLES:							return "GL_MAX_COLOR_TEXTURE_SAMPLES";
1348		case GL_TIMESTAMP:											return "GL_TIMESTAMP";
1349		case GL_MAX_DEPTH_TEXTURE_SAMPLES:							return "GL_MAX_DEPTH_TEXTURE_SAMPLES";
1350		case GL_MAX_INTEGER_SAMPLES:								return "GL_MAX_INTEGER_SAMPLES";
1351		case GL_TEXTURE_BINDING_2D_MULTISAMPLE:						return "GL_TEXTURE_BINDING_2D_MULTISAMPLE";
1352		case GL_TEXTURE_BINDING_2D_MULTISAMPLE_ARRAY:				return "GL_TEXTURE_BINDING_2D_MULTISAMPLE_ARRAY";
1353		case GL_MAX_VERTEX_ATTRIB_STRIDE:							return "GL_MAX_VERTEX_ATTRIB_STRIDE";
1354		case GL_MAX_VERTEX_ATTRIB_BINDINGS:							return "GL_MAX_VERTEX_ATTRIB_BINDINGS";
1355		case GL_MAX_VERTEX_ATTRIB_RELATIVE_OFFSET:					return "GL_MAX_VERTEX_ATTRIB_RELATIVE_OFFSET";
1356		case GL_MIN_SAMPLE_SHADING_VALUE:							return "GL_MIN_SAMPLE_SHADING_VALUE";
1357		case GL_FRAGMENT_INTERPOLATION_OFFSET_BITS:					return "GL_FRAGMENT_INTERPOLATION_OFFSET_BITS";
1358		case GL_MAX_FRAGMENT_INTERPOLATION_OFFSET:					return "GL_MAX_FRAGMENT_INTERPOLATION_OFFSET";
1359		case GL_MIN_FRAGMENT_INTERPOLATION_OFFSET:					return "GL_MIN_FRAGMENT_INTERPOLATION_OFFSET";
1360		case GL_MAX_GEOMETRY_SHADER_INVOCATIONS:					return "GL_MAX_GEOMETRY_SHADER_INVOCATIONS";
1361		case GL_LAYER_PROVOKING_VERTEX:								return "GL_LAYER_PROVOKING_VERTEX";
1362		case GL_MAX_GEOMETRY_UNIFORM_COMPONENTS:					return "GL_MAX_GEOMETRY_UNIFORM_COMPONENTS";
1363		case GL_MAX_GEOMETRY_SHADER_STORAGE_BLOCKS:					return "GL_MAX_GEOMETRY_SHADER_STORAGE_BLOCKS";
1364		case GL_MAX_GEOMETRY_UNIFORM_BLOCKS:						return "GL_MAX_GEOMETRY_UNIFORM_BLOCKS";
1365		case GL_MAX_GEOMETRY_INPUT_COMPONENTS:						return "GL_MAX_GEOMETRY_INPUT_COMPONENTS";
1366		case GL_MAX_GEOMETRY_OUTPUT_COMPONENTS:						return "GL_MAX_GEOMETRY_OUTPUT_COMPONENTS";
1367		case GL_MAX_GEOMETRY_IMAGE_UNIFORMS:						return "GL_MAX_GEOMETRY_IMAGE_UNIFORMS";
1368		case GL_MAX_GEOMETRY_TEXTURE_IMAGE_UNITS:					return "GL_MAX_GEOMETRY_TEXTURE_IMAGE_UNITS";
1369		case GL_MAX_GEOMETRY_OUTPUT_VERTICES:						return "GL_MAX_GEOMETRY_OUTPUT_VERTICES";
1370		case GL_MAX_GEOMETRY_ATOMIC_COUNTERS:						return "GL_MAX_GEOMETRY_ATOMIC_COUNTERS";
1371		case GL_MAX_GEOMETRY_ATOMIC_COUNTER_BUFFERS:				return "GL_MAX_GEOMETRY_ATOMIC_COUNTER_BUFFERS";
1372		case GL_MAX_GEOMETRY_TOTAL_OUTPUT_COMPONENTS:				return "GL_MAX_GEOMETRY_TOTAL_OUTPUT_COMPONENTS";
1373		case GL_MAX_FRAMEBUFFER_LAYERS:								return "GL_MAX_FRAMEBUFFER_LAYERS";
1374		case GL_PROVOKING_VERTEX:									return "GL_PROVOKING_VERTEX";
1375		case GL_PRIMITIVE_RESTART_INDEX:							return "GL_PRIMITIVE_RESTART_INDEX";
1376		case GL_MAX_FRAGMENT_ATOMIC_COUNTER_BUFFERS:				return "GL_MAX_FRAGMENT_ATOMIC_COUNTER_BUFFERS";
1377		case GL_MAX_FRAGMENT_ATOMIC_COUNTERS:						return "GL_MAX_FRAGMENT_ATOMIC_COUNTERS";
1378		case GL_MAX_FRAGMENT_IMAGE_UNIFORMS:						return "GL_MAX_FRAGMENT_IMAGE_UNIFORMS";
1379		case GL_MAX_COMPUTE_UNIFORM_BLOCKS:							return "GL_MAX_COMPUTE_UNIFORM_BLOCKS";
1380		case GL_MAX_COMPUTE_TEXTURE_IMAGE_UNITS:					return "GL_MAX_COMPUTE_TEXTURE_IMAGE_UNITS";
1381		case GL_MAX_COMPUTE_UNIFORM_COMPONENTS:						return "GL_MAX_COMPUTE_UNIFORM_COMPONENTS";
1382		case GL_MAX_COMPUTE_ATOMIC_COUNTER_BUFFERS:					return "GL_MAX_COMPUTE_ATOMIC_COUNTER_BUFFERS";
1383		case GL_MAX_COMPUTE_ATOMIC_COUNTERS:						return "GL_MAX_COMPUTE_ATOMIC_COUNTERS";
1384		case GL_MAX_COMPUTE_IMAGE_UNIFORMS:							return "GL_MAX_COMPUTE_IMAGE_UNIFORMS";
1385		case GL_MAX_COMPUTE_SHADER_STORAGE_BLOCKS:					return "GL_MAX_COMPUTE_SHADER_STORAGE_BLOCKS";
1386		case GL_MAX_FRAGMENT_SHADER_STORAGE_BLOCKS:					return "GL_MAX_FRAGMENT_SHADER_STORAGE_BLOCKS";
1387		case GL_MAX_COMBINED_COMPUTE_UNIFORM_COMPONENTS:			return "GL_MAX_COMBINED_COMPUTE_UNIFORM_COMPONENTS";
1388		case GL_MAX_VERTEX_ATOMIC_COUNTER_BUFFERS:					return "GL_MAX_VERTEX_ATOMIC_COUNTER_BUFFERS";
1389		case GL_MAX_VERTEX_ATOMIC_COUNTERS:							return "GL_MAX_VERTEX_ATOMIC_COUNTERS";
1390		case GL_MAX_VERTEX_IMAGE_UNIFORMS:							return "GL_MAX_VERTEX_IMAGE_UNIFORMS";
1391		case GL_MAX_VERTEX_SHADER_STORAGE_BLOCKS:					return "GL_MAX_VERTEX_SHADER_STORAGE_BLOCKS";
1392		case GL_MAX_COMBINED_SHADER_OUTPUT_RESOURCES:				return "GL_MAX_COMBINED_SHADER_OUTPUT_RESOURCES";
1393		case GL_MAX_ATOMIC_COUNTER_BUFFER_BINDINGS:					return "GL_MAX_ATOMIC_COUNTER_BUFFER_BINDINGS";
1394		case GL_MAX_ATOMIC_COUNTER_BUFFER_SIZE:						return "GL_MAX_ATOMIC_COUNTER_BUFFER_SIZE";
1395		case GL_MAX_IMAGE_UNITS:									return "GL_MAX_IMAGE_UNITS";
1396		case GL_MAX_COMBINED_ATOMIC_COUNTER_BUFFERS:				return "GL_MAX_COMBINED_ATOMIC_COUNTER_BUFFERS";
1397		case GL_MAX_COMBINED_IMAGE_UNIFORMS:						return "GL_MAX_COMBINED_IMAGE_UNIFORMS";
1398		case GL_MAX_SHADER_STORAGE_BUFFER_BINDINGS:					return "GL_MAX_SHADER_STORAGE_BUFFER_BINDINGS";
1399		case GL_MAX_SHADER_STORAGE_BLOCK_SIZE:						return "GL_MAX_SHADER_STORAGE_BLOCK_SIZE";
1400		case GL_MAX_COMBINED_ATOMIC_COUNTERS:						return "GL_MAX_COMBINED_ATOMIC_COUNTERS";
1401		case GL_MAX_COMBINED_SHADER_STORAGE_BLOCKS:					return "GL_MAX_COMBINED_SHADER_STORAGE_BLOCKS";
1402		case GL_SHADER_STORAGE_BUFFER_OFFSET_ALIGNMENT:				return "GL_SHADER_STORAGE_BUFFER_OFFSET_ALIGNMENT";
1403		case GL_PRIMITIVE_BOUNDING_BOX_EXT:							return "GL_PRIMITIVE_BOUNDING_BOX_EXT";
1404		case GL_DRAW_INDIRECT_BUFFER_BINDING:						return "GL_DRAW_INDIRECT_BUFFER_BINDING";
1405		case GL_MAX_SAMPLE_MASK_WORDS:								return "GL_MAX_SAMPLE_MASK_WORDS";
1406		case GL_PROGRAM_PIPELINE_BINDING:							return "GL_PROGRAM_PIPELINE_BINDING";
1407		case GL_ATOMIC_COUNTER_BUFFER_BINDING:						return "GL_ATOMIC_COUNTER_BUFFER_BINDING";
1408		case GL_SHADER_STORAGE_BUFFER_BINDING:						return "GL_SHADER_STORAGE_BUFFER_BINDING";
1409		case GL_DISPATCH_INDIRECT_BUFFER_BINDING:					return "GL_DISPATCH_INDIRECT_BUFFER_BINDING";
1410		case GL_MAX_FRAMEBUFFER_WIDTH:								return "GL_MAX_FRAMEBUFFER_WIDTH";
1411		case GL_MAX_FRAMEBUFFER_HEIGHT:								return "GL_MAX_FRAMEBUFFER_HEIGHT";
1412		case GL_MAX_FRAMEBUFFER_SAMPLES:							return "GL_MAX_FRAMEBUFFER_SAMPLES";
1413		case GL_MAX_COMPUTE_SHARED_MEMORY_SIZE:						return "GL_MAX_COMPUTE_SHARED_MEMORY_SIZE";
1414		case GL_MIN_PROGRAM_TEXTURE_GATHER_OFFSET:					return "GL_MIN_PROGRAM_TEXTURE_GATHER_OFFSET";
1415		case GL_MAX_PROGRAM_TEXTURE_GATHER_OFFSET:					return "GL_MAX_PROGRAM_TEXTURE_GATHER_OFFSET";
1416		case GL_MAX_COMPUTE_WORK_GROUP_INVOCATIONS:					return "GL_MAX_COMPUTE_WORK_GROUP_INVOCATIONS";
1417		case GL_MAX_UNIFORM_LOCATIONS:								return "GL_MAX_UNIFORM_LOCATIONS";
1418		case GL_MAX_DEBUG_MESSAGE_LENGTH:							return "GL_MAX_DEBUG_MESSAGE_LENGTH";
1419		case GL_MAX_DEBUG_LOGGED_MESSAGES:							return "GL_MAX_DEBUG_LOGGED_MESSAGES";
1420		case GL_MAX_DEBUG_GROUP_STACK_DEPTH:						return "GL_MAX_DEBUG_GROUP_STACK_DEPTH";
1421		case GL_MAX_LABEL_LENGTH:									return "GL_MAX_LABEL_LENGTH";
1422		case GL_CONTEXT_FLAGS:										return "GL_CONTEXT_FLAGS";
1423		case GL_DEBUG_LOGGED_MESSAGES:								return "GL_DEBUG_LOGGED_MESSAGES";
1424		case GL_DEBUG_NEXT_LOGGED_MESSAGE_LENGTH:					return "GL_DEBUG_NEXT_LOGGED_MESSAGE_LENGTH";
1425		case GL_DEBUG_GROUP_STACK_DEPTH:							return "GL_DEBUG_GROUP_STACK_DEPTH";
1426		case GL_MAX_COMBINED_GEOMETRY_UNIFORM_COMPONENTS:			return "GL_MAX_COMBINED_GEOMETRY_UNIFORM_COMPONENTS";
1427		case GL_TEXTURE_BUFFER_OFFSET_ALIGNMENT:					return "GL_TEXTURE_BUFFER_OFFSET_ALIGNMENT";
1428		case GL_TEXTURE_BUFFER_BINDING:								return "GL_TEXTURE_BUFFER_BINDING";
1429		case GL_TEXTURE_BINDING_BUFFER:								return "GL_TEXTURE_BINDING_BUFFER";
1430		case GL_MAX_TEXTURE_BUFFER_SIZE:							return "GL_MAX_TEXTURE_BUFFER_SIZE";
1431		case GL_MAX_PATCH_VERTICES:									return "GL_MAX_PATCH_VERTICES";
1432		case GL_MAX_TESS_GEN_LEVEL:									return "GL_MAX_TESS_GEN_LEVEL";
1433		case GL_MAX_TESS_CONTROL_UNIFORM_COMPONENTS:				return "GL_MAX_TESS_CONTROL_UNIFORM_COMPONENTS";
1434		case GL_MAX_TESS_EVALUATION_UNIFORM_COMPONENTS:				return "GL_MAX_TESS_EVALUATION_UNIFORM_COMPONENTS";
1435		case GL_MAX_TESS_CONTROL_TEXTURE_IMAGE_UNITS:				return "GL_MAX_TESS_CONTROL_TEXTURE_IMAGE_UNITS";
1436		case GL_MAX_TESS_EVALUATION_TEXTURE_IMAGE_UNITS:			return "GL_MAX_TESS_EVALUATION_TEXTURE_IMAGE_UNITS";
1437		case GL_MAX_TESS_CONTROL_OUTPUT_COMPONENTS:					return "GL_MAX_TESS_CONTROL_OUTPUT_COMPONENTS";
1438		case GL_MAX_TESS_PATCH_COMPONENTS:							return "GL_MAX_TESS_PATCH_COMPONENTS";
1439		case GL_MAX_TESS_CONTROL_TOTAL_OUTPUT_COMPONENTS:			return "GL_MAX_TESS_CONTROL_TOTAL_OUTPUT_COMPONENTS";
1440		case GL_MAX_TESS_EVALUATION_OUTPUT_COMPONENTS:				return "GL_MAX_TESS_EVALUATION_OUTPUT_COMPONENTS";
1441		case GL_MAX_TESS_CONTROL_UNIFORM_BLOCKS:					return "GL_MAX_TESS_CONTROL_UNIFORM_BLOCKS";
1442		case GL_MAX_TESS_EVALUATION_UNIFORM_BLOCKS:					return "GL_MAX_TESS_EVALUATION_UNIFORM_BLOCKS";
1443		case GL_MAX_TESS_CONTROL_INPUT_COMPONENTS:					return "GL_MAX_TESS_CONTROL_INPUT_COMPONENTS";
1444		case GL_MAX_TESS_EVALUATION_INPUT_COMPONENTS:				return "GL_MAX_TESS_EVALUATION_INPUT_COMPONENTS";
1445		case GL_MAX_TESS_CONTROL_ATOMIC_COUNTER_BUFFERS:			return "GL_MAX_TESS_CONTROL_ATOMIC_COUNTER_BUFFERS";
1446		case GL_MAX_TESS_EVALUATION_ATOMIC_COUNTER_BUFFERS:			return "GL_MAX_TESS_EVALUATION_ATOMIC_COUNTER_BUFFERS";
1447		case GL_MAX_TESS_CONTROL_ATOMIC_COUNTERS:					return "GL_MAX_TESS_CONTROL_ATOMIC_COUNTERS";
1448		case GL_MAX_TESS_EVALUATION_ATOMIC_COUNTERS:				return "GL_MAX_TESS_EVALUATION_ATOMIC_COUNTERS";
1449		case GL_MAX_TESS_CONTROL_IMAGE_UNIFORMS:					return "GL_MAX_TESS_CONTROL_IMAGE_UNIFORMS";
1450		case GL_MAX_TESS_EVALUATION_IMAGE_UNIFORMS:					return "GL_MAX_TESS_EVALUATION_IMAGE_UNIFORMS";
1451		case GL_MAX_COMBINED_TESS_EVALUATION_UNIFORM_COMPONENTS:	return "GL_MAX_COMBINED_TESS_EVALUATION_UNIFORM_COMPONENTS";
1452		case GL_MAX_TESS_EVALUATION_SHADER_STORAGE_BLOCKS:			return "GL_MAX_TESS_EVALUATION_SHADER_STORAGE_BLOCKS";
1453		case GL_MAX_COMBINED_TESS_CONTROL_UNIFORM_COMPONENTS:		return "GL_MAX_COMBINED_TESS_CONTROL_UNIFORM_COMPONENTS";
1454		case GL_MAX_TESS_CONTROL_SHADER_STORAGE_BLOCKS:				return "GL_MAX_TESS_CONTROL_SHADER_STORAGE_BLOCKS";
1455		case GL_PATCH_VERTICES:										return "GL_PATCH_VERTICES";
1456		case GL_PRIMITIVE_RESTART_FOR_PATCHES_SUPPORTED:			return "GL_PRIMITIVE_RESTART_FOR_PATCHES_SUPPORTED";
1457		case GL_BUFFER_MAP_POINTER:									return "GL_BUFFER_MAP_POINTER";
1458		case GL_POINT_SIZE:											return "GL_POINT_SIZE";
1459		case GL_POINT_SIZE_RANGE:									return "GL_POINT_SIZE_RANGE";
1460		case GL_POINT_SIZE_GRANULARITY:								return "GL_POINT_SIZE_GRANULARITY";
1461		case GL_BLEND_DST:											return "GL_BLEND_DST";
1462		case GL_BLEND_SRC:											return "GL_BLEND_SRC";
1463		case GL_LOGIC_OP_MODE:										return "GL_LOGIC_OP_MODE";
1464		case GL_COLOR_LOGIC_OP:										return "GL_COLOR_LOGIC_OP";
1465		case GL_TEXTURE_LOD_BIAS:									return "GL_TEXTURE_LOD_BIAS";
1466		case GL_QUADS_FOLLOW_PROVOKING_VERTEX_CONVENTION:			return "GL_QUADS_FOLLOW_PROVOKING_VERTEX_CONVENTION";
1467		case GL_MAX_SUBROUTINES:									return "GL_MAX_SUBROUTINES";
1468		case GL_MAX_SUBROUTINE_UNIFORM_LOCATIONS:					return "GL_MAX_SUBROUTINE_UNIFORM_LOCATIONS";
1469		case GL_NUM_COMPATIBLE_SUBROUTINES:							return "GL_NUM_COMPATIBLE_SUBROUTINES";
1470		case GL_COMPATIBLE_SUBROUTINES:								return "GL_COMPATIBLE_SUBROUTINES";
1471		case GL_PATCH_DEFAULT_INNER_LEVEL:							return "GL_PATCH_DEFAULT_INNER_LEVEL";
1472		case GL_PATCH_DEFAULT_OUTER_LEVEL:							return "GL_PATCH_DEFAULT_OUTER_LEVEL";
1473		case GL_MAX_TRANSFORM_FEEDBACK_BUFFERS:						return "GL_MAX_TRANSFORM_FEEDBACK_BUFFERS";
1474		case GL_TEXTURE_2D:											return "GL_TEXTURE_2D";
1475		case GL_CULL_FACE:											return "GL_CULL_FACE";
1476		case GL_BLEND:												return "GL_BLEND";
1477		case GL_DITHER:												return "GL_DITHER";
1478		case GL_STENCIL_TEST:										return "GL_STENCIL_TEST";
1479		case GL_DEPTH_TEST:											return "GL_DEPTH_TEST";
1480		case GL_SCISSOR_TEST:										return "GL_SCISSOR_TEST";
1481		case GL_POLYGON_OFFSET_FILL:								return "GL_POLYGON_OFFSET_FILL";
1482		case GL_SAMPLE_ALPHA_TO_COVERAGE:							return "GL_SAMPLE_ALPHA_TO_COVERAGE";
1483		case GL_SAMPLE_COVERAGE:									return "GL_SAMPLE_COVERAGE";
1484		case GL_STEREO:												return "GL_STEREO";
1485		case GL_PRIMITIVE_RESTART_FIXED_INDEX:						return "GL_PRIMITIVE_RESTART_FIXED_INDEX";
1486		case GL_RASTERIZER_DISCARD:									return "GL_RASTERIZER_DISCARD";
1487		case GL_FRAMEBUFFER_SRGB:									return "GL_FRAMEBUFFER_SRGB";
1488		case GL_SAMPLE_SHADING:										return "GL_SAMPLE_SHADING";
1489		case GL_DEPTH_CLAMP:										return "GL_DEPTH_CLAMP";
1490		case GL_PRIMITIVE_RESTART:									return "GL_PRIMITIVE_RESTART";
1491		case GL_SAMPLE_MASK:										return "GL_SAMPLE_MASK";
1492		case GL_DEBUG_OUTPUT:										return "GL_DEBUG_OUTPUT";
1493		case GL_DEBUG_OUTPUT_SYNCHRONOUS:							return "GL_DEBUG_OUTPUT_SYNCHRONOUS";
1494		case GL_BLEND_ADVANCED_COHERENT_KHR:						return "GL_BLEND_ADVANCED_COHERENT_KHR";
1495		case GL_MULTISAMPLE:										return "GL_MULTISAMPLE";
1496		case GL_SAMPLE_ALPHA_TO_ONE:								return "GL_SAMPLE_ALPHA_TO_ONE";
1497		case GL_VERTEX_PROGRAM_POINT_SIZE:							return "GL_VERTEX_PROGRAM_POINT_SIZE";
1498		case GL_TEXTURE_CUBE_MAP_SEAMLESS:							return "GL_TEXTURE_CUBE_MAP_SEAMLESS";
1499		default:													return nullptr;
1500	}
1501}
1502
1503const char* getGettableIndexedStateName (int value)
1504{
1505	switch (value)
1506	{
1507		case GL_TRANSFORM_FEEDBACK_BUFFER_BINDING:					return "GL_TRANSFORM_FEEDBACK_BUFFER_BINDING";
1508		case GL_UNIFORM_BUFFER_BINDING:								return "GL_UNIFORM_BUFFER_BINDING";
1509		case GL_TRANSFORM_FEEDBACK_BUFFER_START:					return "GL_TRANSFORM_FEEDBACK_BUFFER_START";
1510		case GL_TRANSFORM_FEEDBACK_BUFFER_SIZE:						return "GL_TRANSFORM_FEEDBACK_BUFFER_SIZE";
1511		case GL_UNIFORM_BUFFER_START:								return "GL_UNIFORM_BUFFER_START";
1512		case GL_UNIFORM_BUFFER_SIZE:								return "GL_UNIFORM_BUFFER_SIZE";
1513		case GL_SAMPLE_MASK_VALUE:									return "GL_SAMPLE_MASK_VALUE";
1514		case GL_VERTEX_BINDING_OFFSET:								return "GL_VERTEX_BINDING_OFFSET";
1515		case GL_VERTEX_BINDING_STRIDE:								return "GL_VERTEX_BINDING_STRIDE";
1516		case GL_VERTEX_BINDING_DIVISOR:								return "GL_VERTEX_BINDING_DIVISOR";
1517		case GL_VERTEX_BINDING_BUFFER:								return "GL_VERTEX_BINDING_BUFFER";
1518		case GL_MAX_COMPUTE_WORK_GROUP_COUNT:						return "GL_MAX_COMPUTE_WORK_GROUP_COUNT";
1519		case GL_MAX_COMPUTE_WORK_GROUP_SIZE:						return "GL_MAX_COMPUTE_WORK_GROUP_SIZE";
1520		case GL_ATOMIC_COUNTER_BUFFER_BINDING:						return "GL_ATOMIC_COUNTER_BUFFER_BINDING";
1521		case GL_ATOMIC_COUNTER_BUFFER_START:						return "GL_ATOMIC_COUNTER_BUFFER_START";
1522		case GL_ATOMIC_COUNTER_BUFFER_SIZE:							return "GL_ATOMIC_COUNTER_BUFFER_SIZE";
1523		case GL_SHADER_STORAGE_BUFFER_BINDING:						return "GL_SHADER_STORAGE_BUFFER_BINDING";
1524		case GL_SHADER_STORAGE_BUFFER_START:						return "GL_SHADER_STORAGE_BUFFER_START";
1525		case GL_SHADER_STORAGE_BUFFER_SIZE:							return "GL_SHADER_STORAGE_BUFFER_SIZE";
1526		case GL_IMAGE_BINDING_NAME:									return "GL_IMAGE_BINDING_NAME";
1527		case GL_IMAGE_BINDING_LEVEL:								return "GL_IMAGE_BINDING_LEVEL";
1528		case GL_IMAGE_BINDING_LAYERED:								return "GL_IMAGE_BINDING_LAYERED";
1529		case GL_IMAGE_BINDING_LAYER:								return "GL_IMAGE_BINDING_LAYER";
1530		case GL_IMAGE_BINDING_ACCESS:								return "GL_IMAGE_BINDING_ACCESS";
1531		case GL_IMAGE_BINDING_FORMAT:								return "GL_IMAGE_BINDING_FORMAT";
1532		case GL_BLEND_EQUATION_RGB:									return "GL_BLEND_EQUATION_RGB";
1533		case GL_BLEND_EQUATION_ALPHA:								return "GL_BLEND_EQUATION_ALPHA";
1534		case GL_BLEND_SRC_RGB:										return "GL_BLEND_SRC_RGB";
1535		case GL_BLEND_SRC_ALPHA:									return "GL_BLEND_SRC_ALPHA";
1536		case GL_BLEND_DST_RGB:										return "GL_BLEND_DST_RGB";
1537		case GL_BLEND_DST_ALPHA:									return "GL_BLEND_DST_ALPHA";
1538		case GL_COLOR_WRITEMASK:									return "GL_COLOR_WRITEMASK";
1539		case GL_UNIFORM_BLOCK_BINDING:								return "GL_UNIFORM_BLOCK_BINDING";
1540		case GL_UNIFORM_BLOCK_DATA_SIZE:							return "GL_UNIFORM_BLOCK_DATA_SIZE";
1541		case GL_UNIFORM_BLOCK_NAME_LENGTH:							return "GL_UNIFORM_BLOCK_NAME_LENGTH";
1542		case GL_UNIFORM_BLOCK_ACTIVE_UNIFORMS:						return "GL_UNIFORM_BLOCK_ACTIVE_UNIFORMS";
1543		case GL_UNIFORM_BLOCK_ACTIVE_UNIFORM_INDICES:				return "GL_UNIFORM_BLOCK_ACTIVE_UNIFORM_INDICES";
1544		case GL_UNIFORM_BLOCK_REFERENCED_BY_VERTEX_SHADER:			return "GL_UNIFORM_BLOCK_REFERENCED_BY_VERTEX_SHADER";
1545		case GL_UNIFORM_BLOCK_REFERENCED_BY_TESS_CONTROL_SHADER:	return "GL_UNIFORM_BLOCK_REFERENCED_BY_TESS_CONTROL_SHADER";
1546		case GL_UNIFORM_BLOCK_REFERENCED_BY_TESS_EVALUATION_SHADER:	return "GL_UNIFORM_BLOCK_REFERENCED_BY_TESS_EVALUATION_SHADER";
1547		case GL_UNIFORM_BLOCK_REFERENCED_BY_GEOMETRY_SHADER:		return "GL_UNIFORM_BLOCK_REFERENCED_BY_GEOMETRY_SHADER";
1548		case GL_UNIFORM_BLOCK_REFERENCED_BY_FRAGMENT_SHADER:		return "GL_UNIFORM_BLOCK_REFERENCED_BY_FRAGMENT_SHADER";
1549		case GL_UNIFORM_BLOCK_REFERENCED_BY_COMPUTE_SHADER:			return "GL_UNIFORM_BLOCK_REFERENCED_BY_COMPUTE_SHADER";
1550		case GL_OBJECT_TYPE:										return "GL_OBJECT_TYPE";
1551		case GL_SYNC_STATUS:										return "GL_SYNC_STATUS";
1552		case GL_SYNC_CONDITION:										return "GL_SYNC_CONDITION";
1553		case GL_SYNC_FLAGS:											return "GL_SYNC_FLAGS";
1554		case GL_SYNC_FENCE:											return "GL_SYNC_FENCE";
1555		case GL_SYNC_GPU_COMMANDS_COMPLETE:							return "GL_SYNC_GPU_COMMANDS_COMPLETE";
1556		case GL_SIGNALED:											return "GL_SIGNALED";
1557		case GL_UNSIGNALED:											return "GL_UNSIGNALED";
1558		case GL_PROGRAM_BINARY_LENGTH:								return "GL_PROGRAM_BINARY_LENGTH";
1559		case GL_CONTEXT_PROFILE_MASK:								return "GL_CONTEXT_PROFILE_MASK";
1560		case GL_FRACTIONAL_EVEN:									return "GL_FRACTIONAL_EVEN";
1561		case GL_FRACTIONAL_ODD:										return "GL_FRACTIONAL_ODD";
1562		default:													return nullptr;
1563	}
1564}
1565
1566const char* getGettableStringName (int value)
1567{
1568	switch (value)
1569	{
1570		case GL_EXTENSIONS:					return "GL_EXTENSIONS";
1571		case GL_RENDERER:					return "GL_RENDERER";
1572		case GL_SHADING_LANGUAGE_VERSION:	return "GL_SHADING_LANGUAGE_VERSION";
1573		case GL_VENDOR:						return "GL_VENDOR";
1574		case GL_VERSION:					return "GL_VERSION";
1575		default:							return nullptr;
1576	}
1577}
1578
1579const char* getGettablePackStateName (int value)
1580{
1581	switch (value)
1582	{
1583		case GL_PACK_SWAP_BYTES:		return "GL_PACK_SWAP_BYTES";
1584		case GL_PACK_LSB_FIRST:			return "GL_PACK_LSB_FIRST";
1585		case GL_PACK_ROW_LENGTH:		return "GL_PACK_ROW_LENGTH";
1586		case GL_PACK_IMAGE_HEIGHT:		return "GL_PACK_IMAGE_HEIGHT";
1587		case GL_PACK_SKIP_ROWS:			return "GL_PACK_SKIP_ROWS";
1588		case GL_PACK_SKIP_PIXELS:		return "GL_PACK_SKIP_PIXELS";
1589		case GL_PACK_SKIP_IMAGES:		return "GL_PACK_SKIP_IMAGES";
1590		case GL_PACK_ALIGNMENT:			return "GL_PACK_ALIGNMENT";
1591		case GL_UNPACK_SWAP_BYTES:		return "GL_UNPACK_SWAP_BYTES";
1592		case GL_UNPACK_LSB_FIRST:		return "GL_UNPACK_LSB_FIRST";
1593		case GL_UNPACK_ROW_LENGTH:		return "GL_UNPACK_ROW_LENGTH";
1594		case GL_UNPACK_IMAGE_HEIGHT:	return "GL_UNPACK_IMAGE_HEIGHT";
1595		case GL_UNPACK_SKIP_ROWS:		return "GL_UNPACK_SKIP_ROWS";
1596		case GL_UNPACK_SKIP_PIXELS:		return "GL_UNPACK_SKIP_PIXELS";
1597		case GL_UNPACK_SKIP_IMAGES:		return "GL_UNPACK_SKIP_IMAGES";
1598		case GL_UNPACK_ALIGNMENT:		return "GL_UNPACK_ALIGNMENT";
1599		default:						return nullptr;
1600	}
1601}
1602
1603const char* getPointerStateName (int value)
1604{
1605	switch (value)
1606	{
1607		case GL_DEBUG_CALLBACK_FUNCTION:	return "GL_DEBUG_CALLBACK_FUNCTION";
1608		case GL_DEBUG_CALLBACK_USER_PARAM:	return "GL_DEBUG_CALLBACK_USER_PARAM";
1609		default:							return nullptr;
1610	}
1611}
1612
1613const char* getInternalFormatParameterName (int value)
1614{
1615	switch (value)
1616	{
1617		case GL_NUM_SAMPLE_COUNTS:	return "GL_NUM_SAMPLE_COUNTS";
1618		case GL_SAMPLES:			return "GL_SAMPLES";
1619		default:					return nullptr;
1620	}
1621}
1622
1623const char* getInternalFormatTargetName (int value)
1624{
1625	switch (value)
1626	{
1627		case GL_RENDERBUFFER:					return "GL_RENDERBUFFER";
1628		case GL_TEXTURE_2D_MULTISAMPLE:			return "GL_TEXTURE_2D_MULTISAMPLE";
1629		case GL_TEXTURE_2D_MULTISAMPLE_ARRAY:	return "GL_TEXTURE_2D_MULTISAMPLE_ARRAY";
1630		case GL_TEXTURE_2D:						return "GL_TEXTURE_2D";
1631		case GL_TEXTURE_3D:						return "GL_TEXTURE_3D";
1632		case GL_TEXTURE_2D_ARRAY:				return "GL_TEXTURE_2D_ARRAY";
1633		case GL_TEXTURE_CUBE_MAP:				return "GL_TEXTURE_CUBE_MAP";
1634		default:								return nullptr;
1635	}
1636}
1637
1638const char* getMultisampleParameterName (int value)
1639{
1640	switch (value)
1641	{
1642		case GL_SAMPLE_POSITION:	return "GL_SAMPLE_POSITION";
1643		default:					return nullptr;
1644	}
1645}
1646
1647const char* getQueryTargetName (int value)
1648{
1649	switch (value)
1650	{
1651		case GL_SAMPLES_PASSED:							return "GL_SAMPLES_PASSED";
1652		case GL_ANY_SAMPLES_PASSED:						return "GL_ANY_SAMPLES_PASSED";
1653		case GL_PRIMITIVES_GENERATED:					return "GL_PRIMITIVES_GENERATED";
1654		case GL_TRANSFORM_FEEDBACK_PRIMITIVES_WRITTEN:	return "GL_TRANSFORM_FEEDBACK_PRIMITIVES_WRITTEN";
1655		case GL_TIME_ELAPSED:							return "GL_TIME_ELAPSED";
1656		case GL_ANY_SAMPLES_PASSED_CONSERVATIVE:		return "GL_ANY_SAMPLES_PASSED_CONSERVATIVE";
1657		default:										return nullptr;
1658	}
1659}
1660
1661const char* getQueryParamName (int value)
1662{
1663	switch (value)
1664	{
1665		case GL_CURRENT_QUERY:		return "GL_CURRENT_QUERY";
1666		case GL_QUERY_COUNTER_BITS:	return "GL_QUERY_COUNTER_BITS";
1667		default:					return nullptr;
1668	}
1669}
1670
1671const char* getQueryObjectParamName (int value)
1672{
1673	switch (value)
1674	{
1675		case GL_QUERY_RESULT:			return "GL_QUERY_RESULT";
1676		case GL_QUERY_RESULT_AVAILABLE:	return "GL_QUERY_RESULT_AVAILABLE";
1677		case GL_MAX_VERTEX_STREAMS:		return "GL_MAX_VERTEX_STREAMS";
1678		default:						return nullptr;
1679	}
1680}
1681
1682const char* getImageAccessName (int value)
1683{
1684	switch (value)
1685	{
1686		case GL_READ_ONLY:	return "GL_READ_ONLY";
1687		case GL_WRITE_ONLY:	return "GL_WRITE_ONLY";
1688		case GL_READ_WRITE:	return "GL_READ_WRITE";
1689		default:			return nullptr;
1690	}
1691}
1692
1693const char* getProgramInterfaceName (int value)
1694{
1695	switch (value)
1696	{
1697		case GL_UNIFORM:					return "GL_UNIFORM";
1698		case GL_UNIFORM_BLOCK:				return "GL_UNIFORM_BLOCK";
1699		case GL_ATOMIC_COUNTER_BUFFER:		return "GL_ATOMIC_COUNTER_BUFFER";
1700		case GL_PROGRAM_INPUT:				return "GL_PROGRAM_INPUT";
1701		case GL_PROGRAM_OUTPUT:				return "GL_PROGRAM_OUTPUT";
1702		case GL_TRANSFORM_FEEDBACK_VARYING:	return "GL_TRANSFORM_FEEDBACK_VARYING";
1703		case GL_BUFFER_VARIABLE:			return "GL_BUFFER_VARIABLE";
1704		case GL_SHADER_STORAGE_BLOCK:		return "GL_SHADER_STORAGE_BLOCK";
1705		default:							return nullptr;
1706	}
1707}
1708
1709const char* getProgramResourcePropertyName (int value)
1710{
1711	switch (value)
1712	{
1713		case GL_ACTIVE_VARIABLES:						return "GL_ACTIVE_VARIABLES";
1714		case GL_BUFFER_BINDING:							return "GL_BUFFER_BINDING";
1715		case GL_NUM_ACTIVE_VARIABLES:					return "GL_NUM_ACTIVE_VARIABLES";
1716		case GL_ARRAY_SIZE:								return "GL_ARRAY_SIZE";
1717		case GL_ARRAY_STRIDE:							return "GL_ARRAY_STRIDE";
1718		case GL_BLOCK_INDEX:							return "GL_BLOCK_INDEX";
1719		case GL_IS_ROW_MAJOR:							return "GL_IS_ROW_MAJOR";
1720		case GL_MATRIX_STRIDE:							return "GL_MATRIX_STRIDE";
1721		case GL_ATOMIC_COUNTER_BUFFER_INDEX:			return "GL_ATOMIC_COUNTER_BUFFER_INDEX";
1722		case GL_BUFFER_DATA_SIZE:						return "GL_BUFFER_DATA_SIZE";
1723		case GL_LOCATION:								return "GL_LOCATION";
1724		case GL_NAME_LENGTH:							return "GL_NAME_LENGTH";
1725		case GL_OFFSET:									return "GL_OFFSET";
1726		case GL_REFERENCED_BY_VERTEX_SHADER:			return "GL_REFERENCED_BY_VERTEX_SHADER";
1727		case GL_REFERENCED_BY_FRAGMENT_SHADER:			return "GL_REFERENCED_BY_FRAGMENT_SHADER";
1728		case GL_REFERENCED_BY_COMPUTE_SHADER:			return "GL_REFERENCED_BY_COMPUTE_SHADER";
1729		case GL_REFERENCED_BY_GEOMETRY_SHADER:			return "GL_REFERENCED_BY_GEOMETRY_SHADER";
1730		case GL_REFERENCED_BY_TESS_CONTROL_SHADER:		return "GL_REFERENCED_BY_TESS_CONTROL_SHADER";
1731		case GL_REFERENCED_BY_TESS_EVALUATION_SHADER:	return "GL_REFERENCED_BY_TESS_EVALUATION_SHADER";
1732		case GL_TOP_LEVEL_ARRAY_SIZE:					return "GL_TOP_LEVEL_ARRAY_SIZE";
1733		case GL_TOP_LEVEL_ARRAY_STRIDE:					return "GL_TOP_LEVEL_ARRAY_STRIDE";
1734		case GL_TYPE:									return "GL_TYPE";
1735		case GL_IS_PER_PATCH:							return "GL_IS_PER_PATCH";
1736		default:										return nullptr;
1737	}
1738}
1739
1740const char* getPrecisionFormatTypeName (int value)
1741{
1742	switch (value)
1743	{
1744		case GL_LOW_FLOAT:		return "GL_LOW_FLOAT";
1745		case GL_MEDIUM_FLOAT:	return "GL_MEDIUM_FLOAT";
1746		case GL_HIGH_FLOAT:		return "GL_HIGH_FLOAT";
1747		case GL_LOW_INT:		return "GL_LOW_INT";
1748		case GL_MEDIUM_INT:		return "GL_MEDIUM_INT";
1749		case GL_HIGH_INT:		return "GL_HIGH_INT";
1750		default:				return nullptr;
1751	}
1752}
1753
1754const char* getTransformFeedbackTargetName (int value)
1755{
1756	switch (value)
1757	{
1758		case GL_TRANSFORM_FEEDBACK:	return "GL_TRANSFORM_FEEDBACK";
1759		default:					return nullptr;
1760	}
1761}
1762
1763const char* getClampColorTargetName (int value)
1764{
1765	switch (value)
1766	{
1767		case GL_CLAMP_READ_COLOR:	return "GL_CLAMP_READ_COLOR";
1768		case GL_FIXED_ONLY:			return "GL_FIXED_ONLY";
1769		default:					return nullptr;
1770	}
1771}
1772
1773const char* getProvokingVertexName (int value)
1774{
1775	switch (value)
1776	{
1777		case GL_FIRST_VERTEX_CONVENTION:	return "GL_FIRST_VERTEX_CONVENTION";
1778		case GL_LAST_VERTEX_CONVENTION:		return "GL_LAST_VERTEX_CONVENTION";
1779		case GL_UNDEFINED_VERTEX:			return "GL_UNDEFINED_VERTEX";
1780		default:							return nullptr;
1781	}
1782}
1783
1784const char* getDebugMessageSourceName (int value)
1785{
1786	switch (value)
1787	{
1788		case GL_DEBUG_SOURCE_API:				return "GL_DEBUG_SOURCE_API";
1789		case GL_DEBUG_SOURCE_WINDOW_SYSTEM:		return "GL_DEBUG_SOURCE_WINDOW_SYSTEM";
1790		case GL_DEBUG_SOURCE_SHADER_COMPILER:	return "GL_DEBUG_SOURCE_SHADER_COMPILER";
1791		case GL_DEBUG_SOURCE_THIRD_PARTY:		return "GL_DEBUG_SOURCE_THIRD_PARTY";
1792		case GL_DEBUG_SOURCE_APPLICATION:		return "GL_DEBUG_SOURCE_APPLICATION";
1793		case GL_DEBUG_SOURCE_OTHER:				return "GL_DEBUG_SOURCE_OTHER";
1794		case GL_DONT_CARE:						return "GL_DONT_CARE";
1795		default:								return nullptr;
1796	}
1797}
1798
1799const char* getDebugMessageTypeName (int value)
1800{
1801	switch (value)
1802	{
1803		case GL_DEBUG_TYPE_ERROR:				return "GL_DEBUG_TYPE_ERROR";
1804		case GL_DEBUG_TYPE_DEPRECATED_BEHAVIOR:	return "GL_DEBUG_TYPE_DEPRECATED_BEHAVIOR";
1805		case GL_DEBUG_TYPE_UNDEFINED_BEHAVIOR:	return "GL_DEBUG_TYPE_UNDEFINED_BEHAVIOR";
1806		case GL_DEBUG_TYPE_PORTABILITY:			return "GL_DEBUG_TYPE_PORTABILITY";
1807		case GL_DEBUG_TYPE_PERFORMANCE:			return "GL_DEBUG_TYPE_PERFORMANCE";
1808		case GL_DEBUG_TYPE_OTHER:				return "GL_DEBUG_TYPE_OTHER";
1809		case GL_DEBUG_TYPE_MARKER:				return "GL_DEBUG_TYPE_MARKER";
1810		case GL_DEBUG_TYPE_PUSH_GROUP:			return "GL_DEBUG_TYPE_PUSH_GROUP";
1811		case GL_DEBUG_TYPE_POP_GROUP:			return "GL_DEBUG_TYPE_POP_GROUP";
1812		case GL_DONT_CARE:						return "GL_DONT_CARE";
1813		default:								return nullptr;
1814	}
1815}
1816
1817const char* getDebugMessageSeverityName (int value)
1818{
1819	switch (value)
1820	{
1821		case GL_DEBUG_SEVERITY_HIGH:			return "GL_DEBUG_SEVERITY_HIGH";
1822		case GL_DEBUG_SEVERITY_MEDIUM:			return "GL_DEBUG_SEVERITY_MEDIUM";
1823		case GL_DEBUG_SEVERITY_LOW:				return "GL_DEBUG_SEVERITY_LOW";
1824		case GL_DEBUG_SEVERITY_NOTIFICATION:	return "GL_DEBUG_SEVERITY_NOTIFICATION";
1825		case GL_DONT_CARE:						return "GL_DONT_CARE";
1826		default:								return nullptr;
1827	}
1828}
1829
1830const char* getPipelineParamName (int value)
1831{
1832	switch (value)
1833	{
1834		case GL_ACTIVE_PROGRAM:			return "GL_ACTIVE_PROGRAM";
1835		case GL_INFO_LOG_LENGTH:		return "GL_INFO_LOG_LENGTH";
1836		case GL_VALIDATE_STATUS:		return "GL_VALIDATE_STATUS";
1837		case GL_VERTEX_SHADER:			return "GL_VERTEX_SHADER";
1838		case GL_FRAGMENT_SHADER:		return "GL_FRAGMENT_SHADER";
1839		case GL_COMPUTE_SHADER:			return "GL_COMPUTE_SHADER";
1840		case GL_GEOMETRY_SHADER:		return "GL_GEOMETRY_SHADER";
1841		case GL_TESS_CONTROL_SHADER:	return "GL_TESS_CONTROL_SHADER";
1842		case GL_TESS_EVALUATION_SHADER:	return "GL_TESS_EVALUATION_SHADER";
1843		default:						return nullptr;
1844	}
1845}
1846
1847const char* getPatchParamName (int value)
1848{
1849	switch (value)
1850	{
1851		case GL_PATCH_VERTICES:	return "GL_PATCH_VERTICES";
1852		default:				return nullptr;
1853	}
1854}
1855
1856const char* getTextureFormatName (int value)
1857{
1858	switch (value)
1859	{
1860		case GL_LUMINANCE:									return "GL_LUMINANCE";
1861		case GL_LUMINANCE_ALPHA:							return "GL_LUMINANCE_ALPHA";
1862		case GL_ALPHA:										return "GL_ALPHA";
1863		case GL_RGB:										return "GL_RGB";
1864		case GL_RGBA:										return "GL_RGBA";
1865		case GL_RGBA4:										return "GL_RGBA4";
1866		case GL_RGB4:										return "GL_RGB4";
1867		case GL_RGB5_A1:									return "GL_RGB5_A1";
1868		case GL_RGB565:										return "GL_RGB565";
1869		case GL_R3_G3_B2:									return "GL_R3_G3_B2";
1870		case GL_RGB5:										return "GL_RGB5";
1871		case GL_RGB12:										return "GL_RGB12";
1872		case GL_RGBA2:										return "GL_RGBA2";
1873		case GL_RGBA12:										return "GL_RGBA12";
1874		case GL_DEPTH_COMPONENT16:							return "GL_DEPTH_COMPONENT16";
1875		case GL_STENCIL_INDEX1:								return "GL_STENCIL_INDEX1";
1876		case GL_STENCIL_INDEX4:								return "GL_STENCIL_INDEX4";
1877		case GL_STENCIL_INDEX8:								return "GL_STENCIL_INDEX8";
1878		case GL_STENCIL_INDEX16:							return "GL_STENCIL_INDEX16";
1879		case GL_RG:											return "GL_RG";
1880		case GL_RED:										return "GL_RED";
1881		case GL_RGBA_INTEGER:								return "GL_RGBA_INTEGER";
1882		case GL_RGB_INTEGER:								return "GL_RGB_INTEGER";
1883		case GL_RG_INTEGER:									return "GL_RG_INTEGER";
1884		case GL_RED_INTEGER:								return "GL_RED_INTEGER";
1885		case GL_GREEN_INTEGER:								return "GL_GREEN_INTEGER";
1886		case GL_BLUE_INTEGER:								return "GL_BLUE_INTEGER";
1887		case GL_BGR_INTEGER:								return "GL_BGR_INTEGER";
1888		case GL_BGRA_INTEGER:								return "GL_BGRA_INTEGER";
1889		case GL_DEPTH_COMPONENT:							return "GL_DEPTH_COMPONENT";
1890		case GL_DEPTH_STENCIL:								return "GL_DEPTH_STENCIL";
1891		case GL_RGBA32F:									return "GL_RGBA32F";
1892		case GL_RGBA32I:									return "GL_RGBA32I";
1893		case GL_RGBA32UI:									return "GL_RGBA32UI";
1894		case GL_RGBA16:										return "GL_RGBA16";
1895		case GL_RGBA16_SNORM:								return "GL_RGBA16_SNORM";
1896		case GL_RGBA16F:									return "GL_RGBA16F";
1897		case GL_RGBA16I:									return "GL_RGBA16I";
1898		case GL_RGBA16UI:									return "GL_RGBA16UI";
1899		case GL_RGBA8:										return "GL_RGBA8";
1900		case GL_RGBA8I:										return "GL_RGBA8I";
1901		case GL_RGBA8UI:									return "GL_RGBA8UI";
1902		case GL_SRGB8_ALPHA8:								return "GL_SRGB8_ALPHA8";
1903		case GL_RGB10_A2:									return "GL_RGB10_A2";
1904		case GL_RGB10_A2UI:									return "GL_RGB10_A2UI";
1905		case GL_RGBA8_SNORM:								return "GL_RGBA8_SNORM";
1906		case GL_RGB8:										return "GL_RGB8";
1907		case GL_R11F_G11F_B10F:								return "GL_R11F_G11F_B10F";
1908		case GL_RGB32F:										return "GL_RGB32F";
1909		case GL_RGB32I:										return "GL_RGB32I";
1910		case GL_RGB32UI:									return "GL_RGB32UI";
1911		case GL_RGB16:										return "GL_RGB16";
1912		case GL_RGB16_SNORM:								return "GL_RGB16_SNORM";
1913		case GL_RGB16F:										return "GL_RGB16F";
1914		case GL_RGB16I:										return "GL_RGB16I";
1915		case GL_RGB16UI:									return "GL_RGB16UI";
1916		case GL_RGB8_SNORM:									return "GL_RGB8_SNORM";
1917		case GL_RGB8I:										return "GL_RGB8I";
1918		case GL_RGB8UI:										return "GL_RGB8UI";
1919		case GL_SRGB8:										return "GL_SRGB8";
1920		case GL_RGB9_E5:									return "GL_RGB9_E5";
1921		case GL_RG32F:										return "GL_RG32F";
1922		case GL_RG32I:										return "GL_RG32I";
1923		case GL_RG32UI:										return "GL_RG32UI";
1924		case GL_RG16:										return "GL_RG16";
1925		case GL_RG16_SNORM:									return "GL_RG16_SNORM";
1926		case GL_RG16F:										return "GL_RG16F";
1927		case GL_RG16I:										return "GL_RG16I";
1928		case GL_RG16UI:										return "GL_RG16UI";
1929		case GL_RG8:										return "GL_RG8";
1930		case GL_RG8I:										return "GL_RG8I";
1931		case GL_RG8UI:										return "GL_RG8UI";
1932		case GL_RG8_SNORM:									return "GL_RG8_SNORM";
1933		case GL_R32F:										return "GL_R32F";
1934		case GL_R32I:										return "GL_R32I";
1935		case GL_R32UI:										return "GL_R32UI";
1936		case GL_R16:										return "GL_R16";
1937		case GL_R16_SNORM:									return "GL_R16_SNORM";
1938		case GL_R16F:										return "GL_R16F";
1939		case GL_R16I:										return "GL_R16I";
1940		case GL_R16UI:										return "GL_R16UI";
1941		case GL_R8:											return "GL_R8";
1942		case GL_R8I:										return "GL_R8I";
1943		case GL_R8UI:										return "GL_R8UI";
1944		case GL_R8_SNORM:									return "GL_R8_SNORM";
1945		case GL_DEPTH_COMPONENT32F:							return "GL_DEPTH_COMPONENT32F";
1946		case GL_DEPTH_COMPONENT24:							return "GL_DEPTH_COMPONENT24";
1947		case GL_DEPTH32F_STENCIL8:							return "GL_DEPTH32F_STENCIL8";
1948		case GL_DEPTH24_STENCIL8:							return "GL_DEPTH24_STENCIL8";
1949		case GL_RGB10:										return "GL_RGB10";
1950		case GL_DEPTH_COMPONENT32:							return "GL_DEPTH_COMPONENT32";
1951		case GL_SRGB:										return "GL_SRGB";
1952		case GL_SRGB_ALPHA:									return "GL_SRGB_ALPHA";
1953		case GL_SR8_EXT:									return "GL_SR8_EXT";
1954		case GL_SRG8_EXT:									return "GL_SRG8_EXT";
1955		case GL_BGRA:										return "GL_BGRA";
1956		case GL_BGRA8_EXT:									return "GL_BGRA8_EXT";
1957		case GL_BGR:										return "GL_BGR";
1958		case GL_RED_SNORM:									return "GL_RED_SNORM";
1959		case GL_RG_SNORM:									return "GL_RG_SNORM";
1960		case GL_RGB_SNORM:									return "GL_RGB_SNORM";
1961		case GL_RGBA_SNORM:									return "GL_RGBA_SNORM";
1962		case GL_COMPRESSED_R11_EAC:							return "GL_COMPRESSED_R11_EAC";
1963		case GL_COMPRESSED_SIGNED_R11_EAC:					return "GL_COMPRESSED_SIGNED_R11_EAC";
1964		case GL_COMPRESSED_RG11_EAC:						return "GL_COMPRESSED_RG11_EAC";
1965		case GL_COMPRESSED_SIGNED_RG11_EAC:					return "GL_COMPRESSED_SIGNED_RG11_EAC";
1966		case GL_COMPRESSED_RGB8_ETC2:						return "GL_COMPRESSED_RGB8_ETC2";
1967		case GL_COMPRESSED_SRGB8_ETC2:						return "GL_COMPRESSED_SRGB8_ETC2";
1968		case GL_COMPRESSED_RGB8_PUNCHTHROUGH_ALPHA1_ETC2:	return "GL_COMPRESSED_RGB8_PUNCHTHROUGH_ALPHA1_ETC2";
1969		case GL_COMPRESSED_SRGB8_PUNCHTHROUGH_ALPHA1_ETC2:	return "GL_COMPRESSED_SRGB8_PUNCHTHROUGH_ALPHA1_ETC2";
1970		case GL_COMPRESSED_RGBA8_ETC2_EAC:					return "GL_COMPRESSED_RGBA8_ETC2_EAC";
1971		case GL_COMPRESSED_SRGB8_ALPHA8_ETC2_EAC:			return "GL_COMPRESSED_SRGB8_ALPHA8_ETC2_EAC";
1972		case GL_COMPRESSED_RGBA_ASTC_4x4_KHR:				return "GL_COMPRESSED_RGBA_ASTC_4x4_KHR";
1973		case GL_COMPRESSED_RGBA_ASTC_5x4_KHR:				return "GL_COMPRESSED_RGBA_ASTC_5x4_KHR";
1974		case GL_COMPRESSED_RGBA_ASTC_5x5_KHR:				return "GL_COMPRESSED_RGBA_ASTC_5x5_KHR";
1975		case GL_COMPRESSED_RGBA_ASTC_6x5_KHR:				return "GL_COMPRESSED_RGBA_ASTC_6x5_KHR";
1976		case GL_COMPRESSED_RGBA_ASTC_6x6_KHR:				return "GL_COMPRESSED_RGBA_ASTC_6x6_KHR";
1977		case GL_COMPRESSED_RGBA_ASTC_8x5_KHR:				return "GL_COMPRESSED_RGBA_ASTC_8x5_KHR";
1978		case GL_COMPRESSED_RGBA_ASTC_8x6_KHR:				return "GL_COMPRESSED_RGBA_ASTC_8x6_KHR";
1979		case GL_COMPRESSED_RGBA_ASTC_8x8_KHR:				return "GL_COMPRESSED_RGBA_ASTC_8x8_KHR";
1980		case GL_COMPRESSED_RGBA_ASTC_10x5_KHR:				return "GL_COMPRESSED_RGBA_ASTC_10x5_KHR";
1981		case GL_COMPRESSED_RGBA_ASTC_10x6_KHR:				return "GL_COMPRESSED_RGBA_ASTC_10x6_KHR";
1982		case GL_COMPRESSED_RGBA_ASTC_10x8_KHR:				return "GL_COMPRESSED_RGBA_ASTC_10x8_KHR";
1983		case GL_COMPRESSED_RGBA_ASTC_10x10_KHR:				return "GL_COMPRESSED_RGBA_ASTC_10x10_KHR";
1984		case GL_COMPRESSED_RGBA_ASTC_12x10_KHR:				return "GL_COMPRESSED_RGBA_ASTC_12x10_KHR";
1985		case GL_COMPRESSED_RGBA_ASTC_12x12_KHR:				return "GL_COMPRESSED_RGBA_ASTC_12x12_KHR";
1986		case GL_COMPRESSED_SRGB8_ALPHA8_ASTC_4x4_KHR:		return "GL_COMPRESSED_SRGB8_ALPHA8_ASTC_4x4_KHR";
1987		case GL_COMPRESSED_SRGB8_ALPHA8_ASTC_5x4_KHR:		return "GL_COMPRESSED_SRGB8_ALPHA8_ASTC_5x4_KHR";
1988		case GL_COMPRESSED_SRGB8_ALPHA8_ASTC_5x5_KHR:		return "GL_COMPRESSED_SRGB8_ALPHA8_ASTC_5x5_KHR";
1989		case GL_COMPRESSED_SRGB8_ALPHA8_ASTC_6x5_KHR:		return "GL_COMPRESSED_SRGB8_ALPHA8_ASTC_6x5_KHR";
1990		case GL_COMPRESSED_SRGB8_ALPHA8_ASTC_6x6_KHR:		return "GL_COMPRESSED_SRGB8_ALPHA8_ASTC_6x6_KHR";
1991		case GL_COMPRESSED_SRGB8_ALPHA8_ASTC_8x5_KHR:		return "GL_COMPRESSED_SRGB8_ALPHA8_ASTC_8x5_KHR";
1992		case GL_COMPRESSED_SRGB8_ALPHA8_ASTC_8x6_KHR:		return "GL_COMPRESSED_SRGB8_ALPHA8_ASTC_8x6_KHR";
1993		case GL_COMPRESSED_SRGB8_ALPHA8_ASTC_8x8_KHR:		return "GL_COMPRESSED_SRGB8_ALPHA8_ASTC_8x8_KHR";
1994		case GL_COMPRESSED_SRGB8_ALPHA8_ASTC_10x5_KHR:		return "GL_COMPRESSED_SRGB8_ALPHA8_ASTC_10x5_KHR";
1995		case GL_COMPRESSED_SRGB8_ALPHA8_ASTC_10x6_KHR:		return "GL_COMPRESSED_SRGB8_ALPHA8_ASTC_10x6_KHR";
1996		case GL_COMPRESSED_SRGB8_ALPHA8_ASTC_10x8_KHR:		return "GL_COMPRESSED_SRGB8_ALPHA8_ASTC_10x8_KHR";
1997		case GL_COMPRESSED_SRGB8_ALPHA8_ASTC_10x10_KHR:		return "GL_COMPRESSED_SRGB8_ALPHA8_ASTC_10x10_KHR";
1998		case GL_COMPRESSED_SRGB8_ALPHA8_ASTC_12x10_KHR:		return "GL_COMPRESSED_SRGB8_ALPHA8_ASTC_12x10_KHR";
1999		case GL_COMPRESSED_SRGB8_ALPHA8_ASTC_12x12_KHR:		return "GL_COMPRESSED_SRGB8_ALPHA8_ASTC_12x12_KHR";
2000		case GL_COMPRESSED_RGB_S3TC_DXT1_EXT:				return "GL_COMPRESSED_RGB_S3TC_DXT1_EXT";
2001		case GL_COMPRESSED_RGBA_S3TC_DXT1_EXT:				return "GL_COMPRESSED_RGBA_S3TC_DXT1_EXT";
2002		case GL_COMPRESSED_RGBA_S3TC_DXT3_EXT:				return "GL_COMPRESSED_RGBA_S3TC_DXT3_EXT";
2003		case GL_COMPRESSED_RGBA_S3TC_DXT5_EXT:				return "GL_COMPRESSED_RGBA_S3TC_DXT5_EXT";
2004		case GL_COMPRESSED_RGB_PVRTC_4BPPV1_IMG:			return "GL_COMPRESSED_RGB_PVRTC_4BPPV1_IMG";
2005		case GL_COMPRESSED_RGB_PVRTC_2BPPV1_IMG:			return "GL_COMPRESSED_RGB_PVRTC_2BPPV1_IMG";
2006		case GL_COMPRESSED_RGBA_PVRTC_4BPPV1_IMG:			return "GL_COMPRESSED_RGBA_PVRTC_4BPPV1_IMG";
2007		case GL_COMPRESSED_RGBA_PVRTC_2BPPV1_IMG:			return "GL_COMPRESSED_RGBA_PVRTC_2BPPV1_IMG";
2008		case GL_COMPRESSED_RED:								return "GL_COMPRESSED_RED";
2009		case GL_COMPRESSED_RG:								return "GL_COMPRESSED_RG";
2010		case GL_COMPRESSED_RGB:								return "GL_COMPRESSED_RGB";
2011		case GL_COMPRESSED_RGBA:							return "GL_COMPRESSED_RGBA";
2012		case GL_COMPRESSED_SRGB:							return "GL_COMPRESSED_SRGB";
2013		case GL_COMPRESSED_SRGB_ALPHA:						return "GL_COMPRESSED_SRGB_ALPHA";
2014		case GL_COMPRESSED_RED_RGTC1:						return "GL_COMPRESSED_RED_RGTC1";
2015		case GL_COMPRESSED_SIGNED_RED_RGTC1:				return "GL_COMPRESSED_SIGNED_RED_RGTC1";
2016		case GL_COMPRESSED_RG_RGTC2:						return "GL_COMPRESSED_RG_RGTC2";
2017		case GL_COMPRESSED_SIGNED_RG_RGTC2:					return "GL_COMPRESSED_SIGNED_RG_RGTC2";
2018		case GL_COMPRESSED_RGBA_BPTC_UNORM:					return "GL_COMPRESSED_RGBA_BPTC_UNORM";
2019		case GL_COMPRESSED_SRGB_ALPHA_BPTC_UNORM:			return "GL_COMPRESSED_SRGB_ALPHA_BPTC_UNORM";
2020		case GL_COMPRESSED_RGB_BPTC_SIGNED_FLOAT:			return "GL_COMPRESSED_RGB_BPTC_SIGNED_FLOAT";
2021		case GL_COMPRESSED_RGB_BPTC_UNSIGNED_FLOAT:			return "GL_COMPRESSED_RGB_BPTC_UNSIGNED_FLOAT";
2022		default:											return nullptr;
2023	}
2024}
2025
2026const char* getGraphicsResetStatusName (int value)
2027{
2028	switch (value)
2029	{
2030		case GL_NO_ERROR:				return "GL_NO_ERROR";
2031		case GL_GUILTY_CONTEXT_RESET:	return "GL_GUILTY_CONTEXT_RESET";
2032		case GL_INNOCENT_CONTEXT_RESET:	return "GL_INNOCENT_CONTEXT_RESET";
2033		case GL_UNKNOWN_CONTEXT_RESET:	return "GL_UNKNOWN_CONTEXT_RESET";
2034		default:						return nullptr;
2035	}
2036}
2037
2038const char* getClipDistanceParamName (int value)
2039{
2040	switch (value)
2041	{
2042		case GL_CLIP_DISTANCE0:							return "GL_CLIP_DISTANCE0";
2043		case GL_CLIP_DISTANCE1:							return "GL_CLIP_DISTANCE1";
2044		case GL_CLIP_DISTANCE2:							return "GL_CLIP_DISTANCE2";
2045		case GL_CLIP_DISTANCE3:							return "GL_CLIP_DISTANCE3";
2046		case GL_CLIP_DISTANCE4:							return "GL_CLIP_DISTANCE4";
2047		case GL_CLIP_DISTANCE5:							return "GL_CLIP_DISTANCE5";
2048		case GL_CLIP_DISTANCE6:							return "GL_CLIP_DISTANCE6";
2049		case GL_CLIP_DISTANCE7:							return "GL_CLIP_DISTANCE7";
2050		case GL_MAX_CLIP_DISTANCES:						return "GL_MAX_CLIP_DISTANCES";
2051		case GL_MAX_CULL_DISTANCES:						return "GL_MAX_CULL_DISTANCES";
2052		case GL_MAX_COMBINED_CLIP_AND_CULL_DISTANCES:	return "GL_MAX_COMBINED_CLIP_AND_CULL_DISTANCES";
2053		default:										return nullptr;
2054	}
2055}
2056
2057const char* getConditionalRenderParamName (int value)
2058{
2059	switch (value)
2060	{
2061		case GL_QUERY_WAIT:							return "GL_QUERY_WAIT";
2062		case GL_QUERY_NO_WAIT:						return "GL_QUERY_NO_WAIT";
2063		case GL_QUERY_BY_REGION_WAIT:				return "GL_QUERY_BY_REGION_WAIT";
2064		case GL_QUERY_BY_REGION_NO_WAIT:			return "GL_QUERY_BY_REGION_NO_WAIT";
2065		case GL_QUERY_WAIT_INVERTED:				return "GL_QUERY_WAIT_INVERTED";
2066		case GL_QUERY_NO_WAIT_INVERTED:				return "GL_QUERY_NO_WAIT_INVERTED";
2067		case GL_QUERY_BY_REGION_WAIT_INVERTED:		return "GL_QUERY_BY_REGION_WAIT_INVERTED";
2068		case GL_QUERY_BY_REGION_NO_WAIT_INVERTED:	return "GL_QUERY_BY_REGION_NO_WAIT_INVERTED";
2069		default:									return nullptr;
2070	}
2071}
2072
2073const char* getWaitEnumName (int value)
2074{
2075	switch (value)
2076	{
2077		case GL_ALREADY_SIGNALED:		return "GL_ALREADY_SIGNALED";
2078		case GL_TIMEOUT_EXPIRED:		return "GL_TIMEOUT_EXPIRED";
2079		case GL_CONDITION_SATISFIED:	return "GL_CONDITION_SATISFIED";
2080		case GL_WAIT_FAILED:			return "GL_WAIT_FAILED";
2081		default:						return nullptr;
2082	}
2083}
2084
2085const char* getLogicOpParamsName (int value)
2086{
2087	switch (value)
2088	{
2089		case GL_CLEAR:			return "GL_CLEAR";
2090		case GL_SET:			return "GL_SET";
2091		case GL_COPY:			return "GL_COPY";
2092		case GL_COPY_INVERTED:	return "GL_COPY_INVERTED";
2093		case GL_NOOP:			return "GL_NOOP";
2094		case GL_INVERT:			return "GL_INVERT";
2095		case GL_AND:			return "GL_AND";
2096		case GL_NAND:			return "GL_NAND";
2097		case GL_OR:				return "GL_OR";
2098		case GL_NOR:			return "GL_NOR";
2099		case GL_XOR:			return "GL_XOR";
2100		case GL_EQUIV:			return "GL_EQUIV";
2101		case GL_AND_REVERSE:	return "GL_AND_REVERSE";
2102		case GL_AND_INVERTED:	return "GL_AND_INVERTED";
2103		case GL_OR_REVERSE:		return "GL_OR_REVERSE";
2104		case GL_OR_INVERTED:	return "GL_OR_INVERTED";
2105		default:				return nullptr;
2106	}
2107}
2108
2109const char* getPolygonModeName (int value)
2110{
2111	switch (value)
2112	{
2113		case GL_LINE:	return "GL_LINE";
2114		case GL_POINT:	return "GL_POINT";
2115		case GL_FILL:	return "GL_FILL";
2116		default:		return nullptr;
2117	}
2118}
2119
2120const char* getPrimSizeParamName (int value)
2121{
2122	switch (value)
2123	{
2124		case GL_ALIASED_POINT_SIZE_RANGE:		return "GL_ALIASED_POINT_SIZE_RANGE";
2125		case GL_POINT_SIZE:						return "GL_POINT_SIZE";
2126		case GL_POINT_FADE_THRESHOLD_SIZE:		return "GL_POINT_FADE_THRESHOLD_SIZE";
2127		case GL_SMOOTH_POINT_SIZE_RANGE:		return "GL_SMOOTH_POINT_SIZE_RANGE";
2128		case GL_SMOOTH_POINT_SIZE_GRANULARITY:	return "GL_SMOOTH_POINT_SIZE_GRANULARITY";
2129		case GL_POINT_SPRITE_COORD_ORIGIN:		return "GL_POINT_SPRITE_COORD_ORIGIN";
2130		case GL_SMOOTH_LINE_WIDTH_RANGE:		return "GL_SMOOTH_LINE_WIDTH_RANGE";
2131		case GL_SMOOTH_LINE_WIDTH_GRANULARITY:	return "GL_SMOOTH_LINE_WIDTH_GRANULARITY";
2132		case GL_ALIASED_LINE_WIDTH_RANGE:		return "GL_ALIASED_LINE_WIDTH_RANGE";
2133		default:								return nullptr;
2134	}
2135}
2136
2137const char* getActiveTextureParamName (int value)
2138{
2139	switch (value)
2140	{
2141		case GL_TEXTURE0:	return "GL_TEXTURE0";
2142		case GL_TEXTURE1:	return "GL_TEXTURE1";
2143		case GL_TEXTURE2:	return "GL_TEXTURE2";
2144		case GL_TEXTURE3:	return "GL_TEXTURE3";
2145		case GL_TEXTURE4:	return "GL_TEXTURE4";
2146		case GL_TEXTURE5:	return "GL_TEXTURE5";
2147		case GL_TEXTURE6:	return "GL_TEXTURE6";
2148		case GL_TEXTURE7:	return "GL_TEXTURE7";
2149		case GL_TEXTURE8:	return "GL_TEXTURE8";
2150		case GL_TEXTURE9:	return "GL_TEXTURE9";
2151		case GL_TEXTURE10:	return "GL_TEXTURE10";
2152		case GL_TEXTURE11:	return "GL_TEXTURE11";
2153		case GL_TEXTURE12:	return "GL_TEXTURE12";
2154		case GL_TEXTURE13:	return "GL_TEXTURE13";
2155		case GL_TEXTURE14:	return "GL_TEXTURE14";
2156		case GL_TEXTURE15:	return "GL_TEXTURE15";
2157		case GL_TEXTURE16:	return "GL_TEXTURE16";
2158		case GL_TEXTURE17:	return "GL_TEXTURE17";
2159		case GL_TEXTURE18:	return "GL_TEXTURE18";
2160		case GL_TEXTURE19:	return "GL_TEXTURE19";
2161		case GL_TEXTURE20:	return "GL_TEXTURE20";
2162		case GL_TEXTURE21:	return "GL_TEXTURE21";
2163		case GL_TEXTURE22:	return "GL_TEXTURE22";
2164		case GL_TEXTURE23:	return "GL_TEXTURE23";
2165		case GL_TEXTURE24:	return "GL_TEXTURE24";
2166		case GL_TEXTURE25:	return "GL_TEXTURE25";
2167		case GL_TEXTURE26:	return "GL_TEXTURE26";
2168		case GL_TEXTURE27:	return "GL_TEXTURE27";
2169		case GL_TEXTURE28:	return "GL_TEXTURE28";
2170		case GL_TEXTURE29:	return "GL_TEXTURE29";
2171		case GL_TEXTURE30:	return "GL_TEXTURE30";
2172		case GL_TEXTURE31:	return "GL_TEXTURE31";
2173		default:			return nullptr;
2174	}
2175}
2176
2177const char* getClipControlParamName (int value)
2178{
2179	switch (value)
2180	{
2181		case GL_LOWER_LEFT:				return "GL_LOWER_LEFT";
2182		case GL_UPPER_LEFT:				return "GL_UPPER_LEFT";
2183		case GL_NEGATIVE_ONE_TO_ONE:	return "GL_NEGATIVE_ONE_TO_ONE";
2184		case GL_ZERO_TO_ONE:			return "GL_ZERO_TO_ONE";
2185		default:						return nullptr;
2186	}
2187}
2188
2189const char* getUniformSubroutinesParamName (int value)
2190{
2191	switch (value)
2192	{
2193		case GL_ACTIVE_SUBROUTINES:						return "GL_ACTIVE_SUBROUTINES";
2194		case GL_ACTIVE_SUBROUTINE_UNIFORMS:				return "GL_ACTIVE_SUBROUTINE_UNIFORMS";
2195		case GL_ACTIVE_SUBROUTINE_UNIFORM_LOCATIONS:	return "GL_ACTIVE_SUBROUTINE_UNIFORM_LOCATIONS";
2196		case GL_ACTIVE_SUBROUTINE_MAX_LENGTH:			return "GL_ACTIVE_SUBROUTINE_MAX_LENGTH";
2197		case GL_ACTIVE_SUBROUTINE_UNIFORM_MAX_LENGTH:	return "GL_ACTIVE_SUBROUTINE_UNIFORM_MAX_LENGTH";
2198		default:										return nullptr;
2199	}
2200}
2201
2202tcu::Format::Bitfield<16> getBufferMaskStr (int value)
2203{
2204	static const tcu::Format::BitDesc s_desc[] =
2205	{
2206		tcu::Format::BitDesc(GL_DEPTH_BUFFER_BIT,	"GL_DEPTH_BUFFER_BIT"),
2207		tcu::Format::BitDesc(GL_STENCIL_BUFFER_BIT,	"GL_STENCIL_BUFFER_BIT"),
2208		tcu::Format::BitDesc(GL_COLOR_BUFFER_BIT,	"GL_COLOR_BUFFER_BIT"),
2209	};
2210	return tcu::Format::Bitfield<16>(value, &s_desc[0], &s_desc[DE_LENGTH_OF_ARRAY(s_desc)]);
2211}
2212
2213tcu::Format::Bitfield<16> getBufferMapFlagsStr (int value)
2214{
2215	static const tcu::Format::BitDesc s_desc[] =
2216	{
2217		tcu::Format::BitDesc(GL_MAP_READ_BIT,				"GL_MAP_READ_BIT"),
2218		tcu::Format::BitDesc(GL_MAP_WRITE_BIT,				"GL_MAP_WRITE_BIT"),
2219		tcu::Format::BitDesc(GL_MAP_INVALIDATE_RANGE_BIT,	"GL_MAP_INVALIDATE_RANGE_BIT"),
2220		tcu::Format::BitDesc(GL_MAP_INVALIDATE_BUFFER_BIT,	"GL_MAP_INVALIDATE_BUFFER_BIT"),
2221		tcu::Format::BitDesc(GL_MAP_FLUSH_EXPLICIT_BIT,		"GL_MAP_FLUSH_EXPLICIT_BIT"),
2222		tcu::Format::BitDesc(GL_MAP_UNSYNCHRONIZED_BIT,		"GL_MAP_UNSYNCHRONIZED_BIT"),
2223	};
2224	return tcu::Format::Bitfield<16>(value, &s_desc[0], &s_desc[DE_LENGTH_OF_ARRAY(s_desc)]);
2225}
2226
2227tcu::Format::Bitfield<16> getMemoryBarrierFlagsStr (int value)
2228{
2229	static const tcu::Format::BitDesc s_desc[] =
2230	{
2231		tcu::Format::BitDesc(GL_VERTEX_ATTRIB_ARRAY_BARRIER_BIT,	"GL_VERTEX_ATTRIB_ARRAY_BARRIER_BIT"),
2232		tcu::Format::BitDesc(GL_ELEMENT_ARRAY_BARRIER_BIT,			"GL_ELEMENT_ARRAY_BARRIER_BIT"),
2233		tcu::Format::BitDesc(GL_UNIFORM_BARRIER_BIT,				"GL_UNIFORM_BARRIER_BIT"),
2234		tcu::Format::BitDesc(GL_TEXTURE_FETCH_BARRIER_BIT,			"GL_TEXTURE_FETCH_BARRIER_BIT"),
2235		tcu::Format::BitDesc(GL_SHADER_IMAGE_ACCESS_BARRIER_BIT,	"GL_SHADER_IMAGE_ACCESS_BARRIER_BIT"),
2236		tcu::Format::BitDesc(GL_COMMAND_BARRIER_BIT,				"GL_COMMAND_BARRIER_BIT"),
2237		tcu::Format::BitDesc(GL_PIXEL_BUFFER_BARRIER_BIT,			"GL_PIXEL_BUFFER_BARRIER_BIT"),
2238		tcu::Format::BitDesc(GL_TEXTURE_UPDATE_BARRIER_BIT,			"GL_TEXTURE_UPDATE_BARRIER_BIT"),
2239		tcu::Format::BitDesc(GL_BUFFER_UPDATE_BARRIER_BIT,			"GL_BUFFER_UPDATE_BARRIER_BIT"),
2240		tcu::Format::BitDesc(GL_FRAMEBUFFER_BARRIER_BIT,			"GL_FRAMEBUFFER_BARRIER_BIT"),
2241		tcu::Format::BitDesc(GL_TRANSFORM_FEEDBACK_BARRIER_BIT,		"GL_TRANSFORM_FEEDBACK_BARRIER_BIT"),
2242		tcu::Format::BitDesc(GL_ATOMIC_COUNTER_BARRIER_BIT,			"GL_ATOMIC_COUNTER_BARRIER_BIT"),
2243	};
2244	return tcu::Format::Bitfield<16>(value, &s_desc[0], &s_desc[DE_LENGTH_OF_ARRAY(s_desc)]);
2245}
2246
2247tcu::Format::Bitfield<16> getShaderTypeMaskStr (int value)
2248{
2249	static const tcu::Format::BitDesc s_desc[] =
2250	{
2251		tcu::Format::BitDesc(GL_VERTEX_SHADER_BIT,			"GL_VERTEX_SHADER_BIT"),
2252		tcu::Format::BitDesc(GL_FRAGMENT_SHADER_BIT,		"GL_FRAGMENT_SHADER_BIT"),
2253		tcu::Format::BitDesc(GL_COMPUTE_SHADER_BIT,			"GL_COMPUTE_SHADER_BIT"),
2254		tcu::Format::BitDesc(GL_GEOMETRY_SHADER_BIT,		"GL_GEOMETRY_SHADER_BIT"),
2255		tcu::Format::BitDesc(GL_TESS_CONTROL_SHADER_BIT,	"GL_TESS_CONTROL_SHADER_BIT"),
2256		tcu::Format::BitDesc(GL_TESS_EVALUATION_SHADER_BIT,	"GL_TESS_EVALUATION_SHADER_BIT"),
2257	};
2258	return tcu::Format::Bitfield<16>(value, &s_desc[0], &s_desc[DE_LENGTH_OF_ARRAY(s_desc)]);
2259}
2260
2261tcu::Format::Bitfield<16> getContextMaskStr (int value)
2262{
2263	static const tcu::Format::BitDesc s_desc[] =
2264	{
2265		tcu::Format::BitDesc(GL_CONTEXT_FLAG_NO_ERROR_BIT,				"GL_CONTEXT_FLAG_NO_ERROR_BIT"),
2266		tcu::Format::BitDesc(GL_CONTEXT_FLAG_ROBUST_ACCESS_BIT,			"GL_CONTEXT_FLAG_ROBUST_ACCESS_BIT"),
2267		tcu::Format::BitDesc(GL_CONTEXT_FLAG_DEBUG_BIT,					"GL_CONTEXT_FLAG_DEBUG_BIT"),
2268		tcu::Format::BitDesc(GL_CONTEXT_FLAG_FORWARD_COMPATIBLE_BIT,	"GL_CONTEXT_FLAG_FORWARD_COMPATIBLE_BIT"),
2269	};
2270	return tcu::Format::Bitfield<16>(value, &s_desc[0], &s_desc[DE_LENGTH_OF_ARRAY(s_desc)]);
2271}
2272
2273tcu::Format::Bitfield<16> getClientWaitMaskStr (int value)
2274{
2275	static const tcu::Format::BitDesc s_desc[] =
2276	{
2277		tcu::Format::BitDesc(GL_SYNC_FLUSH_COMMANDS_BIT,	"GL_SYNC_FLUSH_COMMANDS_BIT"),
2278	};
2279	return tcu::Format::Bitfield<16>(value, &s_desc[0], &s_desc[DE_LENGTH_OF_ARRAY(s_desc)]);
2280}
2281
2282tcu::Format::Bitfield<16> getContextProfileMaskStr (int value)
2283{
2284	static const tcu::Format::BitDesc s_desc[] =
2285	{
2286		tcu::Format::BitDesc(GL_CONTEXT_CORE_PROFILE_BIT,			"GL_CONTEXT_CORE_PROFILE_BIT"),
2287		tcu::Format::BitDesc(GL_CONTEXT_COMPATIBILITY_PROFILE_BIT,	"GL_CONTEXT_COMPATIBILITY_PROFILE_BIT"),
2288	};
2289	return tcu::Format::Bitfield<16>(value, &s_desc[0], &s_desc[DE_LENGTH_OF_ARRAY(s_desc)]);
2290}
2291