/* WARNING: This is auto-generated file. Do not modify, since changes will
 * be lost! Modify the generating script instead.
 *
 * Generated from Khronos GL API description (gl.xml) revision 32093.
 */

const char* getErrorName (int value)
{
	switch (value)
	{
		case GL_NO_ERROR:						return "GL_NO_ERROR";
		case GL_INVALID_ENUM:					return "GL_INVALID_ENUM";
		case GL_INVALID_VALUE:					return "GL_INVALID_VALUE";
		case GL_INVALID_OPERATION:				return "GL_INVALID_OPERATION";
		case GL_OUT_OF_MEMORY:					return "GL_OUT_OF_MEMORY";
		case GL_INVALID_FRAMEBUFFER_OPERATION:	return "GL_INVALID_FRAMEBUFFER_OPERATION";
		default:								return DE_NULL;
	}
}

const char* getTypeName (int value)
{
	switch (value)
	{
		case GL_BYTE:							return "GL_BYTE";
		case GL_UNSIGNED_BYTE:					return "GL_UNSIGNED_BYTE";
		case GL_SHORT:							return "GL_SHORT";
		case GL_UNSIGNED_SHORT:					return "GL_UNSIGNED_SHORT";
		case GL_INT:							return "GL_INT";
		case GL_UNSIGNED_INT:					return "GL_UNSIGNED_INT";
		case GL_FLOAT:							return "GL_FLOAT";
		case GL_FIXED:							return "GL_FIXED";
		case GL_UNSIGNED_SHORT_5_6_5:			return "GL_UNSIGNED_SHORT_5_6_5";
		case GL_UNSIGNED_SHORT_4_4_4_4:			return "GL_UNSIGNED_SHORT_4_4_4_4";
		case GL_UNSIGNED_SHORT_5_5_5_1:			return "GL_UNSIGNED_SHORT_5_5_5_1";
		case GL_HALF_FLOAT:						return "GL_HALF_FLOAT";
		case GL_INT_2_10_10_10_REV:				return "GL_INT_2_10_10_10_REV";
		case GL_UNSIGNED_INT_2_10_10_10_REV:	return "GL_UNSIGNED_INT_2_10_10_10_REV";
		case GL_UNSIGNED_INT_10F_11F_11F_REV:	return "GL_UNSIGNED_INT_10F_11F_11F_REV";
		case GL_UNSIGNED_INT_5_9_9_9_REV:		return "GL_UNSIGNED_INT_5_9_9_9_REV";
		case GL_UNSIGNED_INT_24_8:				return "GL_UNSIGNED_INT_24_8";
		case GL_FLOAT_32_UNSIGNED_INT_24_8_REV:	return "GL_FLOAT_32_UNSIGNED_INT_24_8_REV";
		case GL_SIGNED_NORMALIZED:				return "GL_SIGNED_NORMALIZED";
		case GL_UNSIGNED_NORMALIZED:			return "GL_UNSIGNED_NORMALIZED";
		case GL_HALF_FLOAT_OES:					return "GL_HALF_FLOAT_OES";
		default:								return DE_NULL;
	}
}

const char* getParamQueryName (int value)
{
	switch (value)
	{
		case GL_LINE_WIDTH:							return "GL_LINE_WIDTH";
		case GL_ALIASED_POINT_SIZE_RANGE:			return "GL_ALIASED_POINT_SIZE_RANGE";
		case GL_ALIASED_LINE_WIDTH_RANGE:			return "GL_ALIASED_LINE_WIDTH_RANGE";
		case GL_CULL_FACE_MODE:						return "GL_CULL_FACE_MODE";
		case GL_FRONT_FACE:							return "GL_FRONT_FACE";
		case GL_DEPTH_RANGE:						return "GL_DEPTH_RANGE";
		case GL_DEPTH_WRITEMASK:					return "GL_DEPTH_WRITEMASK";
		case GL_DEPTH_CLEAR_VALUE:					return "GL_DEPTH_CLEAR_VALUE";
		case GL_DEPTH_FUNC:							return "GL_DEPTH_FUNC";
		case GL_STENCIL_CLEAR_VALUE:				return "GL_STENCIL_CLEAR_VALUE";
		case GL_STENCIL_FUNC:						return "GL_STENCIL_FUNC";
		case GL_STENCIL_FAIL:						return "GL_STENCIL_FAIL";
		case GL_STENCIL_PASS_DEPTH_FAIL:			return "GL_STENCIL_PASS_DEPTH_FAIL";
		case GL_STENCIL_PASS_DEPTH_PASS:			return "GL_STENCIL_PASS_DEPTH_PASS";
		case GL_STENCIL_REF:						return "GL_STENCIL_REF";
		case GL_STENCIL_VALUE_MASK:					return "GL_STENCIL_VALUE_MASK";
		case GL_STENCIL_WRITEMASK:					return "GL_STENCIL_WRITEMASK";
		case GL_STENCIL_BACK_FUNC:					return "GL_STENCIL_BACK_FUNC";
		case GL_STENCIL_BACK_FAIL:					return "GL_STENCIL_BACK_FAIL";
		case GL_STENCIL_BACK_PASS_DEPTH_FAIL:		return "GL_STENCIL_BACK_PASS_DEPTH_FAIL";
		case GL_STENCIL_BACK_PASS_DEPTH_PASS:		return "GL_STENCIL_BACK_PASS_DEPTH_PASS";
		case GL_STENCIL_BACK_REF:					return "GL_STENCIL_BACK_REF";
		case GL_STENCIL_BACK_VALUE_MASK:			return "GL_STENCIL_BACK_VALUE_MASK";
		case GL_STENCIL_BACK_WRITEMASK:				return "GL_STENCIL_BACK_WRITEMASK";
		case GL_VIEWPORT:							return "GL_VIEWPORT";
		case GL_SCISSOR_BOX:						return "GL_SCISSOR_BOX";
		case GL_SCISSOR_TEST:						return "GL_SCISSOR_TEST";
		case GL_COLOR_CLEAR_VALUE:					return "GL_COLOR_CLEAR_VALUE";
		case GL_COLOR_WRITEMASK:					return "GL_COLOR_WRITEMASK";
		case GL_UNPACK_ALIGNMENT:					return "GL_UNPACK_ALIGNMENT";
		case GL_PACK_ALIGNMENT:						return "GL_PACK_ALIGNMENT";
		case GL_MAX_TEXTURE_SIZE:					return "GL_MAX_TEXTURE_SIZE";
		case GL_MAX_VIEWPORT_DIMS:					return "GL_MAX_VIEWPORT_DIMS";
		case GL_SUBPIXEL_BITS:						return "GL_SUBPIXEL_BITS";
		case GL_RED_BITS:							return "GL_RED_BITS";
		case GL_GREEN_BITS:							return "GL_GREEN_BITS";
		case GL_BLUE_BITS:							return "GL_BLUE_BITS";
		case GL_ALPHA_BITS:							return "GL_ALPHA_BITS";
		case GL_DEPTH_BITS:							return "GL_DEPTH_BITS";
		case GL_STENCIL_BITS:						return "GL_STENCIL_BITS";
		case GL_POLYGON_OFFSET_UNITS:				return "GL_POLYGON_OFFSET_UNITS";
		case GL_POLYGON_OFFSET_FILL:				return "GL_POLYGON_OFFSET_FILL";
		case GL_POLYGON_OFFSET_FACTOR:				return "GL_POLYGON_OFFSET_FACTOR";
		case GL_TEXTURE_BINDING_2D:					return "GL_TEXTURE_BINDING_2D";
		case GL_SAMPLE_BUFFERS:						return "GL_SAMPLE_BUFFERS";
		case GL_SAMPLES:							return "GL_SAMPLES";
		case GL_SAMPLE_COVERAGE_VALUE:				return "GL_SAMPLE_COVERAGE_VALUE";
		case GL_SAMPLE_COVERAGE_INVERT:				return "GL_SAMPLE_COVERAGE_INVERT";
		case GL_MAX_CUBE_MAP_TEXTURE_SIZE:			return "GL_MAX_CUBE_MAP_TEXTURE_SIZE";
		case GL_MAX_RENDERBUFFER_SIZE:				return "GL_MAX_RENDERBUFFER_SIZE";
		case GL_MAX_VERTEX_ATTRIBS:					return "GL_MAX_VERTEX_ATTRIBS";
		case GL_MAX_VERTEX_UNIFORM_VECTORS:			return "GL_MAX_VERTEX_UNIFORM_VECTORS";
		case GL_MAX_VARYING_VECTORS:				return "GL_MAX_VARYING_VECTORS";
		case GL_MAX_COMBINED_TEXTURE_IMAGE_UNITS:	return "GL_MAX_COMBINED_TEXTURE_IMAGE_UNITS";
		case GL_MAX_VERTEX_TEXTURE_IMAGE_UNITS:		return "GL_MAX_VERTEX_TEXTURE_IMAGE_UNITS";
		case GL_MAX_TEXTURE_IMAGE_UNITS:			return "GL_MAX_TEXTURE_IMAGE_UNITS";
		case GL_MAX_FRAGMENT_UNIFORM_VECTORS:		return "GL_MAX_FRAGMENT_UNIFORM_VECTORS";
		default:									return DE_NULL;
	}
}

const char* getProgramParamName (int value)
{
	switch (value)
	{
		case GL_ACTIVE_ATTRIBUTES:						return "GL_ACTIVE_ATTRIBUTES";
		case GL_ACTIVE_ATTRIBUTE_MAX_LENGTH:			return "GL_ACTIVE_ATTRIBUTE_MAX_LENGTH";
		case GL_ACTIVE_UNIFORMS:						return "GL_ACTIVE_UNIFORMS";
		case GL_ACTIVE_UNIFORM_BLOCKS:					return "GL_ACTIVE_UNIFORM_BLOCKS";
		case GL_ACTIVE_UNIFORM_BLOCK_MAX_NAME_LENGTH:	return "GL_ACTIVE_UNIFORM_BLOCK_MAX_NAME_LENGTH";
		case GL_ACTIVE_UNIFORM_MAX_LENGTH:				return "GL_ACTIVE_UNIFORM_MAX_LENGTH";
		case GL_ATTACHED_SHADERS:						return "GL_ATTACHED_SHADERS";
		case GL_DELETE_STATUS:							return "GL_DELETE_STATUS";
		case GL_INFO_LOG_LENGTH:						return "GL_INFO_LOG_LENGTH";
		case GL_LINK_STATUS:							return "GL_LINK_STATUS";
		case GL_PROGRAM_BINARY_RETRIEVABLE_HINT:		return "GL_PROGRAM_BINARY_RETRIEVABLE_HINT";
		case GL_TRANSFORM_FEEDBACK_BUFFER_MODE:			return "GL_TRANSFORM_FEEDBACK_BUFFER_MODE";
		case GL_TRANSFORM_FEEDBACK_VARYINGS:			return "GL_TRANSFORM_FEEDBACK_VARYINGS";
		case GL_TRANSFORM_FEEDBACK_VARYING_MAX_LENGTH:	return "GL_TRANSFORM_FEEDBACK_VARYING_MAX_LENGTH";
		case GL_VALIDATE_STATUS:						return "GL_VALIDATE_STATUS";
		case GL_GEOMETRY_INPUT_TYPE:					return "GL_GEOMETRY_INPUT_TYPE";
		case GL_GEOMETRY_OUTPUT_TYPE:					return "GL_GEOMETRY_OUTPUT_TYPE";
		case GL_GEOMETRY_VERTICES_OUT:					return "GL_GEOMETRY_VERTICES_OUT";
		case GL_GEOMETRY_SHADER_INVOCATIONS:			return "GL_GEOMETRY_SHADER_INVOCATIONS";
		case GL_PROGRAM_SEPARABLE:						return "GL_PROGRAM_SEPARABLE";
		case GL_COMPUTE_WORK_GROUP_SIZE:				return "GL_COMPUTE_WORK_GROUP_SIZE";
		case GL_ACTIVE_ATOMIC_COUNTER_BUFFERS:			return "GL_ACTIVE_ATOMIC_COUNTER_BUFFERS";
		case GL_TESS_CONTROL_OUTPUT_VERTICES:			return "GL_TESS_CONTROL_OUTPUT_VERTICES";
		case GL_TESS_GEN_MODE:							return "GL_TESS_GEN_MODE";
		case GL_TESS_GEN_SPACING:						return "GL_TESS_GEN_SPACING";
		case GL_TESS_GEN_VERTEX_ORDER:					return "GL_TESS_GEN_VERTEX_ORDER";
		case GL_TESS_GEN_POINT_MODE:					return "GL_TESS_GEN_POINT_MODE";
		default:										return DE_NULL;
	}
}

const char* getUniformParamName (int value)
{
	switch (value)
	{
		case GL_UNIFORM_TYPE:			return "GL_UNIFORM_TYPE";
		case GL_UNIFORM_SIZE:			return "GL_UNIFORM_SIZE";
		case GL_UNIFORM_NAME_LENGTH:	return "GL_UNIFORM_NAME_LENGTH";
		case GL_UNIFORM_BLOCK_INDEX:	return "GL_UNIFORM_BLOCK_INDEX";
		case GL_UNIFORM_OFFSET:			return "GL_UNIFORM_OFFSET";
		case GL_UNIFORM_ARRAY_STRIDE:	return "GL_UNIFORM_ARRAY_STRIDE";
		case GL_UNIFORM_MATRIX_STRIDE:	return "GL_UNIFORM_MATRIX_STRIDE";
		case GL_UNIFORM_IS_ROW_MAJOR:	return "GL_UNIFORM_IS_ROW_MAJOR";
		default:						return DE_NULL;
	}
}

const char* getFramebufferAttachmentName (int value)
{
	switch (value)
	{
		case GL_COLOR_ATTACHMENT0:			return "GL_COLOR_ATTACHMENT0";
		case GL_COLOR_ATTACHMENT1:			return "GL_COLOR_ATTACHMENT1";
		case GL_COLOR_ATTACHMENT2:			return "GL_COLOR_ATTACHMENT2";
		case GL_COLOR_ATTACHMENT3:			return "GL_COLOR_ATTACHMENT3";
		case GL_COLOR_ATTACHMENT4:			return "GL_COLOR_ATTACHMENT4";
		case GL_COLOR_ATTACHMENT5:			return "GL_COLOR_ATTACHMENT5";
		case GL_COLOR_ATTACHMENT6:			return "GL_COLOR_ATTACHMENT6";
		case GL_COLOR_ATTACHMENT7:			return "GL_COLOR_ATTACHMENT7";
		case GL_COLOR_ATTACHMENT8:			return "GL_COLOR_ATTACHMENT8";
		case GL_COLOR_ATTACHMENT9:			return "GL_COLOR_ATTACHMENT9";
		case GL_COLOR_ATTACHMENT10:			return "GL_COLOR_ATTACHMENT10";
		case GL_COLOR_ATTACHMENT11:			return "GL_COLOR_ATTACHMENT11";
		case GL_COLOR_ATTACHMENT12:			return "GL_COLOR_ATTACHMENT12";
		case GL_COLOR_ATTACHMENT13:			return "GL_COLOR_ATTACHMENT13";
		case GL_COLOR_ATTACHMENT14:			return "GL_COLOR_ATTACHMENT14";
		case GL_COLOR_ATTACHMENT15:			return "GL_COLOR_ATTACHMENT15";
		case GL_DEPTH_ATTACHMENT:			return "GL_DEPTH_ATTACHMENT";
		case GL_STENCIL_ATTACHMENT:			return "GL_STENCIL_ATTACHMENT";
		case GL_DEPTH_STENCIL_ATTACHMENT:	return "GL_DEPTH_STENCIL_ATTACHMENT";
		case GL_BACK:						return "GL_BACK";
		case GL_FRONT_LEFT:					return "GL_FRONT_LEFT";
		case GL_FRONT_RIGHT:				return "GL_FRONT_RIGHT";
		case GL_BACK_LEFT:					return "GL_BACK_LEFT";
		case GL_BACK_RIGHT:					return "GL_BACK_RIGHT";
		case GL_DEPTH:						return "GL_DEPTH";
		case GL_STENCIL:					return "GL_STENCIL";
		default:							return DE_NULL;
	}
}

const char* getFramebufferAttachmentParameterName (int value)
{
	switch (value)
	{
		case GL_FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE:				return "GL_FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE";
		case GL_FRAMEBUFFER_ATTACHMENT_OBJECT_NAME:				return "GL_FRAMEBUFFER_ATTACHMENT_OBJECT_NAME";
		case GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LEVEL:			return "GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LEVEL";
		case GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_CUBE_MAP_FACE:	return "GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_CUBE_MAP_FACE";
		case GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LAYER:			return "GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LAYER";
		case GL_FRAMEBUFFER_ATTACHMENT_COMPONENT_TYPE:			return "GL_FRAMEBUFFER_ATTACHMENT_COMPONENT_TYPE";
		case GL_FRAMEBUFFER_ATTACHMENT_COLOR_ENCODING:			return "GL_FRAMEBUFFER_ATTACHMENT_COLOR_ENCODING";
		case GL_FRAMEBUFFER_ATTACHMENT_RED_SIZE:				return "GL_FRAMEBUFFER_ATTACHMENT_RED_SIZE";
		case GL_FRAMEBUFFER_ATTACHMENT_GREEN_SIZE:				return "GL_FRAMEBUFFER_ATTACHMENT_GREEN_SIZE";
		case GL_FRAMEBUFFER_ATTACHMENT_BLUE_SIZE:				return "GL_FRAMEBUFFER_ATTACHMENT_BLUE_SIZE";
		case GL_FRAMEBUFFER_ATTACHMENT_ALPHA_SIZE:				return "GL_FRAMEBUFFER_ATTACHMENT_ALPHA_SIZE";
		case GL_FRAMEBUFFER_ATTACHMENT_DEPTH_SIZE:				return "GL_FRAMEBUFFER_ATTACHMENT_DEPTH_SIZE";
		case GL_FRAMEBUFFER_ATTACHMENT_STENCIL_SIZE:			return "GL_FRAMEBUFFER_ATTACHMENT_STENCIL_SIZE";
		case GL_FRAMEBUFFER_ATTACHMENT_LAYERED:					return "GL_FRAMEBUFFER_ATTACHMENT_LAYERED";
		default:												return DE_NULL;
	}
}

const char* getFramebufferTargetName (int value)
{
	switch (value)
	{
		case GL_FRAMEBUFFER:		return "GL_FRAMEBUFFER";
		case GL_RENDERBUFFER:		return "GL_RENDERBUFFER";
		case GL_DRAW_FRAMEBUFFER:	return "GL_DRAW_FRAMEBUFFER";
		case GL_READ_FRAMEBUFFER:	return "GL_READ_FRAMEBUFFER";
		default:					return DE_NULL;
	}
}

const char* getFramebufferStatusName (int value)
{
	switch (value)
	{
		case GL_FRAMEBUFFER_COMPLETE:						return "GL_FRAMEBUFFER_COMPLETE";
		case GL_FRAMEBUFFER_INCOMPLETE_ATTACHMENT:			return "GL_FRAMEBUFFER_INCOMPLETE_ATTACHMENT";
		case GL_FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT:	return "GL_FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT";
		case GL_FRAMEBUFFER_INCOMPLETE_DIMENSIONS:			return "GL_FRAMEBUFFER_INCOMPLETE_DIMENSIONS";
		case GL_FRAMEBUFFER_UNSUPPORTED:					return "GL_FRAMEBUFFER_UNSUPPORTED";
		case GL_FRAMEBUFFER_INCOMPLETE_MULTISAMPLE:			return "GL_FRAMEBUFFER_INCOMPLETE_MULTISAMPLE";
		case GL_FRAMEBUFFER_INCOMPLETE_LAYER_TARGETS:		return "GL_FRAMEBUFFER_INCOMPLETE_LAYER_TARGETS";
		default:											return DE_NULL;
	}
}

const char* getFramebufferAttachmentTypeName (int value)
{
	switch (value)
	{
		case GL_NONE:					return "GL_NONE";
		case GL_FRAMEBUFFER_DEFAULT:	return "GL_FRAMEBUFFER_DEFAULT";
		case GL_TEXTURE:				return "GL_TEXTURE";
		case GL_RENDERBUFFER:			return "GL_RENDERBUFFER";
		default:						return DE_NULL;
	}
}

const char* getFramebufferColorEncodingName (int value)
{
	switch (value)
	{
		case GL_LINEAR:	return "GL_LINEAR";
		case GL_SRGB:	return "GL_SRGB";
		default:		return DE_NULL;
	}
}

const char* getFramebufferParameterName (int value)
{
	switch (value)
	{
		case GL_FRAMEBUFFER_DEFAULT_WIDTH:					return "GL_FRAMEBUFFER_DEFAULT_WIDTH";
		case GL_FRAMEBUFFER_DEFAULT_HEIGHT:					return "GL_FRAMEBUFFER_DEFAULT_HEIGHT";
		case GL_FRAMEBUFFER_DEFAULT_SAMPLES:				return "GL_FRAMEBUFFER_DEFAULT_SAMPLES";
		case GL_FRAMEBUFFER_DEFAULT_FIXED_SAMPLE_LOCATIONS:	return "GL_FRAMEBUFFER_DEFAULT_FIXED_SAMPLE_LOCATIONS";
		case GL_FRAMEBUFFER_DEFAULT_LAYERS:					return "GL_FRAMEBUFFER_DEFAULT_LAYERS";
		default:											return DE_NULL;
	}
}

const char* getRenderbufferParameterName (int value)
{
	switch (value)
	{
		case GL_RENDERBUFFER_WIDTH:				return "GL_RENDERBUFFER_WIDTH";
		case GL_RENDERBUFFER_HEIGHT:			return "GL_RENDERBUFFER_HEIGHT";
		case GL_RENDERBUFFER_INTERNAL_FORMAT:	return "GL_RENDERBUFFER_INTERNAL_FORMAT";
		case GL_RENDERBUFFER_RED_SIZE:			return "GL_RENDERBUFFER_RED_SIZE";
		case GL_RENDERBUFFER_GREEN_SIZE:		return "GL_RENDERBUFFER_GREEN_SIZE";
		case GL_RENDERBUFFER_BLUE_SIZE:			return "GL_RENDERBUFFER_BLUE_SIZE";
		case GL_RENDERBUFFER_ALPHA_SIZE:		return "GL_RENDERBUFFER_ALPHA_SIZE";
		case GL_RENDERBUFFER_DEPTH_SIZE:		return "GL_RENDERBUFFER_DEPTH_SIZE";
		case GL_RENDERBUFFER_STENCIL_SIZE:		return "GL_RENDERBUFFER_STENCIL_SIZE";
		case GL_RENDERBUFFER_SAMPLES:			return "GL_RENDERBUFFER_SAMPLES";
		default:								return DE_NULL;
	}
}

const char* getPrimitiveTypeName (int value)
{
	switch (value)
	{
		case GL_POINTS:						return "GL_POINTS";
		case GL_LINES:						return "GL_LINES";
		case GL_LINE_STRIP:					return "GL_LINE_STRIP";
		case GL_LINE_LOOP:					return "GL_LINE_LOOP";
		case GL_TRIANGLES:					return "GL_TRIANGLES";
		case GL_TRIANGLE_STRIP:				return "GL_TRIANGLE_STRIP";
		case GL_TRIANGLE_FAN:				return "GL_TRIANGLE_FAN";
		case GL_LINES_ADJACENCY:			return "GL_LINES_ADJACENCY";
		case GL_LINE_STRIP_ADJACENCY:		return "GL_LINE_STRIP_ADJACENCY";
		case GL_TRIANGLES_ADJACENCY:		return "GL_TRIANGLES_ADJACENCY";
		case GL_TRIANGLE_STRIP_ADJACENCY:	return "GL_TRIANGLE_STRIP_ADJACENCY";
		default:							return DE_NULL;
	}
}

const char* getBlendFactorName (int value)
{
	switch (value)
	{
		case GL_ZERO:						return "GL_ZERO";
		case GL_ONE:						return "GL_ONE";
		case GL_SRC_ALPHA_SATURATE:			return "GL_SRC_ALPHA_SATURATE";
		case GL_SRC_COLOR:					return "GL_SRC_COLOR";
		case GL_ONE_MINUS_SRC_COLOR:		return "GL_ONE_MINUS_SRC_COLOR";
		case GL_SRC_ALPHA:					return "GL_SRC_ALPHA";
		case GL_ONE_MINUS_SRC_ALPHA:		return "GL_ONE_MINUS_SRC_ALPHA";
		case GL_SRC1_COLOR:					return "GL_SRC1_COLOR";
		case GL_ONE_MINUS_SRC1_COLOR:		return "GL_ONE_MINUS_SRC1_COLOR";
		case GL_SRC1_ALPHA:					return "GL_SRC1_ALPHA";
		case GL_ONE_MINUS_SRC1_ALPHA:		return "GL_ONE_MINUS_SRC1_ALPHA";
		case GL_DST_COLOR:					return "GL_DST_COLOR";
		case GL_ONE_MINUS_DST_COLOR:		return "GL_ONE_MINUS_DST_COLOR";
		case GL_DST_ALPHA:					return "GL_DST_ALPHA";
		case GL_ONE_MINUS_DST_ALPHA:		return "GL_ONE_MINUS_DST_ALPHA";
		case GL_CONSTANT_COLOR:				return "GL_CONSTANT_COLOR";
		case GL_ONE_MINUS_CONSTANT_COLOR:	return "GL_ONE_MINUS_CONSTANT_COLOR";
		case GL_CONSTANT_ALPHA:				return "GL_CONSTANT_ALPHA";
		case GL_ONE_MINUS_CONSTANT_ALPHA:	return "GL_ONE_MINUS_CONSTANT_ALPHA";
		default:							return DE_NULL;
	}
}

const char* getBlendEquationName (int value)
{
	switch (value)
	{
		case GL_FUNC_ADD:				return "GL_FUNC_ADD";
		case GL_FUNC_SUBTRACT:			return "GL_FUNC_SUBTRACT";
		case GL_FUNC_REVERSE_SUBTRACT:	return "GL_FUNC_REVERSE_SUBTRACT";
		case GL_MIN:					return "GL_MIN";
		case GL_MAX:					return "GL_MAX";
		case GL_MULTIPLY_KHR:			return "GL_MULTIPLY_KHR";
		case GL_SCREEN_KHR:				return "GL_SCREEN_KHR";
		case GL_OVERLAY_KHR:			return "GL_OVERLAY_KHR";
		case GL_DARKEN_KHR:				return "GL_DARKEN_KHR";
		case GL_LIGHTEN_KHR:			return "GL_LIGHTEN_KHR";
		case GL_COLORDODGE_KHR:			return "GL_COLORDODGE_KHR";
		case GL_COLORBURN_KHR:			return "GL_COLORBURN_KHR";
		case GL_HARDLIGHT_KHR:			return "GL_HARDLIGHT_KHR";
		case GL_SOFTLIGHT_KHR:			return "GL_SOFTLIGHT_KHR";
		case GL_DIFFERENCE_KHR:			return "GL_DIFFERENCE_KHR";
		case GL_EXCLUSION_KHR:			return "GL_EXCLUSION_KHR";
		case GL_HSL_HUE_KHR:			return "GL_HSL_HUE_KHR";
		case GL_HSL_SATURATION_KHR:		return "GL_HSL_SATURATION_KHR";
		case GL_HSL_COLOR_KHR:			return "GL_HSL_COLOR_KHR";
		case GL_HSL_LUMINOSITY_KHR:		return "GL_HSL_LUMINOSITY_KHR";
		default:						return DE_NULL;
	}
}

const char* getBufferTargetName (int value)
{
	switch (value)
	{
		case GL_ARRAY_BUFFER:				return "GL_ARRAY_BUFFER";
		case GL_ELEMENT_ARRAY_BUFFER:		return "GL_ELEMENT_ARRAY_BUFFER";
		case GL_COPY_READ_BUFFER:			return "GL_COPY_READ_BUFFER";
		case GL_COPY_WRITE_BUFFER:			return "GL_COPY_WRITE_BUFFER";
		case GL_PIXEL_PACK_BUFFER:			return "GL_PIXEL_PACK_BUFFER";
		case GL_PIXEL_UNPACK_BUFFER:		return "GL_PIXEL_UNPACK_BUFFER";
		case GL_TRANSFORM_FEEDBACK_BUFFER:	return "GL_TRANSFORM_FEEDBACK_BUFFER";
		case GL_UNIFORM_BUFFER:				return "GL_UNIFORM_BUFFER";
		case GL_DRAW_INDIRECT_BUFFER:		return "GL_DRAW_INDIRECT_BUFFER";
		case GL_SHADER_STORAGE_BUFFER:		return "GL_SHADER_STORAGE_BUFFER";
		case GL_TEXTURE_BUFFER:				return "GL_TEXTURE_BUFFER";
		case GL_DISPATCH_INDIRECT_BUFFER:	return "GL_DISPATCH_INDIRECT_BUFFER";
		case GL_ATOMIC_COUNTER_BUFFER:		return "GL_ATOMIC_COUNTER_BUFFER";
		default:							return DE_NULL;
	}
}

const char* getBufferBindingName (int value)
{
	switch (value)
	{
		case GL_ARRAY_BUFFER_BINDING:			return "GL_ARRAY_BUFFER_BINDING";
		case GL_ELEMENT_ARRAY_BUFFER_BINDING:	return "GL_ELEMENT_ARRAY_BUFFER_BINDING";
		default:								return DE_NULL;
	}
}

const char* getUsageName (int value)
{
	switch (value)
	{
		case GL_STREAM_DRAW:	return "GL_STREAM_DRAW";
		case GL_STREAM_READ:	return "GL_STREAM_READ";
		case GL_STREAM_COPY:	return "GL_STREAM_COPY";
		case GL_STATIC_DRAW:	return "GL_STATIC_DRAW";
		case GL_STATIC_READ:	return "GL_STATIC_READ";
		case GL_STATIC_COPY:	return "GL_STATIC_COPY";
		case GL_DYNAMIC_DRAW:	return "GL_DYNAMIC_DRAW";
		case GL_DYNAMIC_READ:	return "GL_DYNAMIC_READ";
		case GL_DYNAMIC_COPY:	return "GL_DYNAMIC_COPY";
		default:				return DE_NULL;
	}
}

const char* getBufferQueryName (int value)
{
	switch (value)
	{
		case GL_BUFFER_SIZE:			return "GL_BUFFER_SIZE";
		case GL_BUFFER_USAGE:			return "GL_BUFFER_USAGE";
		case GL_BUFFER_ACCESS_FLAGS:	return "GL_BUFFER_ACCESS_FLAGS";
		case GL_BUFFER_MAPPED:			return "GL_BUFFER_MAPPED";
		case GL_BUFFER_MAP_OFFSET:		return "GL_BUFFER_MAP_OFFSET";
		case GL_BUFFER_MAP_LENGTH:		return "GL_BUFFER_MAP_LENGTH";
		default:						return DE_NULL;
	}
}

const char* getFaceName (int value)
{
	switch (value)
	{
		case GL_FRONT:			return "GL_FRONT";
		case GL_BACK:			return "GL_BACK";
		case GL_FRONT_AND_BACK:	return "GL_FRONT_AND_BACK";
		default:				return DE_NULL;
	}
}

const char* getCompareFuncName (int value)
{
	switch (value)
	{
		case GL_NEVER:		return "GL_NEVER";
		case GL_LESS:		return "GL_LESS";
		case GL_LEQUAL:		return "GL_LEQUAL";
		case GL_GREATER:	return "GL_GREATER";
		case GL_EQUAL:		return "GL_EQUAL";
		case GL_NOTEQUAL:	return "GL_NOTEQUAL";
		case GL_GEQUAL:		return "GL_GEQUAL";
		case GL_ALWAYS:		return "GL_ALWAYS";
		default:			return DE_NULL;
	}
}

const char* getEnableCapName (int value)
{
	switch (value)
	{
		case GL_TEXTURE_2D:						return "GL_TEXTURE_2D";
		case GL_CULL_FACE:						return "GL_CULL_FACE";
		case GL_BLEND:							return "GL_BLEND";
		case GL_DITHER:							return "GL_DITHER";
		case GL_STENCIL_TEST:					return "GL_STENCIL_TEST";
		case GL_DEPTH_TEST:						return "GL_DEPTH_TEST";
		case GL_SCISSOR_TEST:					return "GL_SCISSOR_TEST";
		case GL_POLYGON_OFFSET_FILL:			return "GL_POLYGON_OFFSET_FILL";
		case GL_SAMPLE_ALPHA_TO_COVERAGE:		return "GL_SAMPLE_ALPHA_TO_COVERAGE";
		case GL_SAMPLE_COVERAGE:				return "GL_SAMPLE_COVERAGE";
		case GL_PRIMITIVE_RESTART_FIXED_INDEX:	return "GL_PRIMITIVE_RESTART_FIXED_INDEX";
		case GL_RASTERIZER_DISCARD:				return "GL_RASTERIZER_DISCARD";
		case GL_FRAMEBUFFER_SRGB:				return "GL_FRAMEBUFFER_SRGB";
		case GL_SAMPLE_SHADING:					return "GL_SAMPLE_SHADING";
		case GL_DEPTH_CLAMP:					return "GL_DEPTH_CLAMP";
		case GL_PRIMITIVE_RESTART:				return "GL_PRIMITIVE_RESTART";
		case GL_SAMPLE_MASK:					return "GL_SAMPLE_MASK";
		case GL_DEBUG_OUTPUT:					return "GL_DEBUG_OUTPUT";
		case GL_DEBUG_OUTPUT_SYNCHRONOUS:		return "GL_DEBUG_OUTPUT_SYNCHRONOUS";
		case GL_BLEND_ADVANCED_COHERENT_KHR:	return "GL_BLEND_ADVANCED_COHERENT_KHR";
		default:								return DE_NULL;
	}
}

const char* getIndexedEnableCapName (int value)
{
	switch (value)
	{
		case GL_BLEND:	return "GL_BLEND";
		default:		return DE_NULL;
	}
}

const char* getWindingName (int value)
{
	switch (value)
	{
		case GL_CW:		return "GL_CW";
		case GL_CCW:	return "GL_CCW";
		default:		return DE_NULL;
	}
}

const char* getHintModeName (int value)
{
	switch (value)
	{
		case GL_DONT_CARE:	return "GL_DONT_CARE";
		case GL_FASTEST:	return "GL_FASTEST";
		case GL_NICEST:		return "GL_NICEST";
		default:			return DE_NULL;
	}
}

const char* getHintName (int value)
{
	switch (value)
	{
		case GL_GENERATE_MIPMAP_HINT:	return "GL_GENERATE_MIPMAP_HINT";
		default:						return DE_NULL;
	}
}

const char* getStencilOpName (int value)
{
	switch (value)
	{
		case GL_ZERO:		return "GL_ZERO";
		case GL_KEEP:		return "GL_KEEP";
		case GL_REPLACE:	return "GL_REPLACE";
		case GL_INCR:		return "GL_INCR";
		case GL_DECR:		return "GL_DECR";
		case GL_INVERT:		return "GL_INVERT";
		case GL_INCR_WRAP:	return "GL_INCR_WRAP";
		case GL_DECR_WRAP:	return "GL_DECR_WRAP";
		default:			return DE_NULL;
	}
}

const char* getShaderTypeName (int value)
{
	switch (value)
	{
		case GL_VERTEX_SHADER:			return "GL_VERTEX_SHADER";
		case GL_FRAGMENT_SHADER:		return "GL_FRAGMENT_SHADER";
		case GL_COMPUTE_SHADER:			return "GL_COMPUTE_SHADER";
		case GL_TESS_CONTROL_SHADER:	return "GL_TESS_CONTROL_SHADER";
		case GL_TESS_EVALUATION_SHADER:	return "GL_TESS_EVALUATION_SHADER";
		case GL_GEOMETRY_SHADER:		return "GL_GEOMETRY_SHADER";
		default:						return DE_NULL;
	}
}

const char* getBufferName (int value)
{
	switch (value)
	{
		case GL_COLOR:			return "GL_COLOR";
		case GL_DEPTH:			return "GL_DEPTH";
		case GL_STENCIL:		return "GL_STENCIL";
		case GL_DEPTH_STENCIL:	return "GL_DEPTH_STENCIL";
		default:				return DE_NULL;
	}
}

const char* getInvalidateAttachmentName (int value)
{
	switch (value)
	{
		case GL_COLOR:						return "GL_COLOR";
		case GL_DEPTH:						return "GL_DEPTH";
		case GL_STENCIL:					return "GL_STENCIL";
		case GL_COLOR_ATTACHMENT0:			return "GL_COLOR_ATTACHMENT0";
		case GL_COLOR_ATTACHMENT1:			return "GL_COLOR_ATTACHMENT1";
		case GL_COLOR_ATTACHMENT2:			return "GL_COLOR_ATTACHMENT2";
		case GL_COLOR_ATTACHMENT3:			return "GL_COLOR_ATTACHMENT3";
		case GL_COLOR_ATTACHMENT4:			return "GL_COLOR_ATTACHMENT4";
		case GL_COLOR_ATTACHMENT5:			return "GL_COLOR_ATTACHMENT5";
		case GL_COLOR_ATTACHMENT6:			return "GL_COLOR_ATTACHMENT6";
		case GL_COLOR_ATTACHMENT7:			return "GL_COLOR_ATTACHMENT7";
		case GL_DEPTH_ATTACHMENT:			return "GL_DEPTH_ATTACHMENT";
		case GL_STENCIL_ATTACHMENT:			return "GL_STENCIL_ATTACHMENT";
		case GL_DEPTH_STENCIL_ATTACHMENT:	return "GL_DEPTH_STENCIL_ATTACHMENT";
		default:							return DE_NULL;
	}
}

const char* getDrawReadBufferName (int value)
{
	switch (value)
	{
		case GL_COLOR:						return "GL_COLOR";
		case GL_DEPTH:						return "GL_DEPTH";
		case GL_STENCIL:					return "GL_STENCIL";
		case GL_BACK:						return "GL_BACK";
		case GL_NONE:						return "GL_NONE";
		case GL_COLOR_ATTACHMENT0:			return "GL_COLOR_ATTACHMENT0";
		case GL_COLOR_ATTACHMENT1:			return "GL_COLOR_ATTACHMENT1";
		case GL_COLOR_ATTACHMENT2:			return "GL_COLOR_ATTACHMENT2";
		case GL_COLOR_ATTACHMENT3:			return "GL_COLOR_ATTACHMENT3";
		case GL_COLOR_ATTACHMENT4:			return "GL_COLOR_ATTACHMENT4";
		case GL_COLOR_ATTACHMENT5:			return "GL_COLOR_ATTACHMENT5";
		case GL_COLOR_ATTACHMENT6:			return "GL_COLOR_ATTACHMENT6";
		case GL_COLOR_ATTACHMENT7:			return "GL_COLOR_ATTACHMENT7";
		case GL_DEPTH_ATTACHMENT:			return "GL_DEPTH_ATTACHMENT";
		case GL_STENCIL_ATTACHMENT:			return "GL_STENCIL_ATTACHMENT";
		case GL_DEPTH_STENCIL_ATTACHMENT:	return "GL_DEPTH_STENCIL_ATTACHMENT";
		default:							return DE_NULL;
	}
}

const char* getTextureTargetName (int value)
{
	switch (value)
	{
		case GL_TEXTURE_1D:						return "GL_TEXTURE_1D";
		case GL_TEXTURE_2D:						return "GL_TEXTURE_2D";
		case GL_TEXTURE_CUBE_MAP:				return "GL_TEXTURE_CUBE_MAP";
		case GL_TEXTURE_CUBE_MAP_POSITIVE_X:	return "GL_TEXTURE_CUBE_MAP_POSITIVE_X";
		case GL_TEXTURE_CUBE_MAP_NEGATIVE_X:	return "GL_TEXTURE_CUBE_MAP_NEGATIVE_X";
		case GL_TEXTURE_CUBE_MAP_POSITIVE_Y:	return "GL_TEXTURE_CUBE_MAP_POSITIVE_Y";
		case GL_TEXTURE_CUBE_MAP_NEGATIVE_Y:	return "GL_TEXTURE_CUBE_MAP_NEGATIVE_Y";
		case GL_TEXTURE_CUBE_MAP_POSITIVE_Z:	return "GL_TEXTURE_CUBE_MAP_POSITIVE_Z";
		case GL_TEXTURE_CUBE_MAP_NEGATIVE_Z:	return "GL_TEXTURE_CUBE_MAP_NEGATIVE_Z";
		case GL_TEXTURE_3D:						return "GL_TEXTURE_3D";
		case GL_TEXTURE_2D_ARRAY:				return "GL_TEXTURE_2D_ARRAY";
		case GL_TEXTURE_2D_MULTISAMPLE:			return "GL_TEXTURE_2D_MULTISAMPLE";
		case GL_TEXTURE_2D_MULTISAMPLE_ARRAY:	return "GL_TEXTURE_2D_MULTISAMPLE_ARRAY";
		case GL_TEXTURE_BUFFER:					return "GL_TEXTURE_BUFFER";
		case GL_TEXTURE_CUBE_MAP_ARRAY:			return "GL_TEXTURE_CUBE_MAP_ARRAY";
		default:								return DE_NULL;
	}
}

const char* getTextureParameterName (int value)
{
	switch (value)
	{
		case GL_TEXTURE_WRAP_S:				return "GL_TEXTURE_WRAP_S";
		case GL_TEXTURE_WRAP_T:				return "GL_TEXTURE_WRAP_T";
		case GL_TEXTURE_WRAP_R:				return "GL_TEXTURE_WRAP_R";
		case GL_TEXTURE_BASE_LEVEL:			return "GL_TEXTURE_BASE_LEVEL";
		case GL_TEXTURE_MAX_LEVEL:			return "GL_TEXTURE_MAX_LEVEL";
		case GL_TEXTURE_COMPARE_MODE:		return "GL_TEXTURE_COMPARE_MODE";
		case GL_TEXTURE_COMPARE_FUNC:		return "GL_TEXTURE_COMPARE_FUNC";
		case GL_TEXTURE_MAX_LOD:			return "GL_TEXTURE_MAX_LOD";
		case GL_TEXTURE_MIN_LOD:			return "GL_TEXTURE_MIN_LOD";
		case GL_TEXTURE_SWIZZLE_R:			return "GL_TEXTURE_SWIZZLE_R";
		case GL_TEXTURE_SWIZZLE_G:			return "GL_TEXTURE_SWIZZLE_G";
		case GL_TEXTURE_SWIZZLE_B:			return "GL_TEXTURE_SWIZZLE_B";
		case GL_TEXTURE_SWIZZLE_A:			return "GL_TEXTURE_SWIZZLE_A";
		case GL_TEXTURE_MIN_FILTER:			return "GL_TEXTURE_MIN_FILTER";
		case GL_TEXTURE_MAG_FILTER:			return "GL_TEXTURE_MAG_FILTER";
		case GL_DEPTH_STENCIL_TEXTURE_MODE:	return "GL_DEPTH_STENCIL_TEXTURE_MODE";
		case GL_TEXTURE_SRGB_DECODE_EXT:	return "GL_TEXTURE_SRGB_DECODE_EXT";
		case GL_TEXTURE_BORDER_COLOR:		return "GL_TEXTURE_BORDER_COLOR";
		case GL_TEXTURE_IMMUTABLE_LEVELS:	return "GL_TEXTURE_IMMUTABLE_LEVELS";
		case GL_TEXTURE_IMMUTABLE_FORMAT:	return "GL_TEXTURE_IMMUTABLE_FORMAT";
		default:							return DE_NULL;
	}
}

const char* getTextureLevelParameterName (int value)
{
	switch (value)
	{
		case GL_TEXTURE_SAMPLES:					return "GL_TEXTURE_SAMPLES";
		case GL_TEXTURE_FIXED_SAMPLE_LOCATIONS:		return "GL_TEXTURE_FIXED_SAMPLE_LOCATIONS";
		case GL_TEXTURE_WIDTH:						return "GL_TEXTURE_WIDTH";
		case GL_TEXTURE_HEIGHT:						return "GL_TEXTURE_HEIGHT";
		case GL_TEXTURE_DEPTH:						return "GL_TEXTURE_DEPTH";
		case GL_TEXTURE_INTERNAL_FORMAT:			return "GL_TEXTURE_INTERNAL_FORMAT";
		case GL_TEXTURE_RED_SIZE:					return "GL_TEXTURE_RED_SIZE";
		case GL_TEXTURE_GREEN_SIZE:					return "GL_TEXTURE_GREEN_SIZE";
		case GL_TEXTURE_BLUE_SIZE:					return "GL_TEXTURE_BLUE_SIZE";
		case GL_TEXTURE_ALPHA_SIZE:					return "GL_TEXTURE_ALPHA_SIZE";
		case GL_TEXTURE_DEPTH_SIZE:					return "GL_TEXTURE_DEPTH_SIZE";
		case GL_TEXTURE_STENCIL_SIZE:				return "GL_TEXTURE_STENCIL_SIZE";
		case GL_TEXTURE_SHARED_SIZE:				return "GL_TEXTURE_SHARED_SIZE";
		case GL_TEXTURE_RED_TYPE:					return "GL_TEXTURE_RED_TYPE";
		case GL_TEXTURE_GREEN_TYPE:					return "GL_TEXTURE_GREEN_TYPE";
		case GL_TEXTURE_BLUE_TYPE:					return "GL_TEXTURE_BLUE_TYPE";
		case GL_TEXTURE_ALPHA_TYPE:					return "GL_TEXTURE_ALPHA_TYPE";
		case GL_TEXTURE_DEPTH_TYPE:					return "GL_TEXTURE_DEPTH_TYPE";
		case GL_TEXTURE_COMPRESSED:					return "GL_TEXTURE_COMPRESSED";
		case GL_TEXTURE_BUFFER_DATA_STORE_BINDING:	return "GL_TEXTURE_BUFFER_DATA_STORE_BINDING";
		case GL_TEXTURE_BUFFER_OFFSET:				return "GL_TEXTURE_BUFFER_OFFSET";
		case GL_TEXTURE_BUFFER_SIZE:				return "GL_TEXTURE_BUFFER_SIZE";
		default:									return DE_NULL;
	}
}

const char* getRepeatModeName (int value)
{
	switch (value)
	{
		case GL_REPEAT:				return "GL_REPEAT";
		case GL_CLAMP_TO_EDGE:		return "GL_CLAMP_TO_EDGE";
		case GL_MIRRORED_REPEAT:	return "GL_MIRRORED_REPEAT";
		case GL_CLAMP_TO_BORDER:	return "GL_CLAMP_TO_BORDER";
		default:					return DE_NULL;
	}
}

const char* getTextureFilterName (int value)
{
	switch (value)
	{
		case GL_NEAREST:				return "GL_NEAREST";
		case GL_LINEAR:					return "GL_LINEAR";
		case GL_NEAREST_MIPMAP_NEAREST:	return "GL_NEAREST_MIPMAP_NEAREST";
		case GL_LINEAR_MIPMAP_NEAREST:	return "GL_LINEAR_MIPMAP_NEAREST";
		case GL_NEAREST_MIPMAP_LINEAR:	return "GL_NEAREST_MIPMAP_LINEAR";
		case GL_LINEAR_MIPMAP_LINEAR:	return "GL_LINEAR_MIPMAP_LINEAR";
		default:						return DE_NULL;
	}
}

const char* getTextureWrapModeName (int value)
{
	switch (value)
	{
		case GL_REPEAT:				return "GL_REPEAT";
		case GL_CLAMP_TO_EDGE:		return "GL_CLAMP_TO_EDGE";
		case GL_MIRRORED_REPEAT:	return "GL_MIRRORED_REPEAT";
		default:					return DE_NULL;
	}
}

const char* getTextureSwizzleName (int value)
{
	switch (value)
	{
		case GL_RED:	return "GL_RED";
		case GL_GREEN:	return "GL_GREEN";
		case GL_BLUE:	return "GL_BLUE";
		case GL_ALPHA:	return "GL_ALPHA";
		case GL_ZERO:	return "GL_ZERO";
		case GL_ONE:	return "GL_ONE";
		default:		return DE_NULL;
	}
}

const char* getTextureCompareModeName (int value)
{
	switch (value)
	{
		case GL_NONE:					return "GL_NONE";
		case GL_COMPARE_REF_TO_TEXTURE:	return "GL_COMPARE_REF_TO_TEXTURE";
		default:						return DE_NULL;
	}
}

const char* getCubeMapFaceName (int value)
{
	switch (value)
	{
		case GL_TEXTURE_CUBE_MAP_POSITIVE_X:	return "GL_TEXTURE_CUBE_MAP_POSITIVE_X";
		case GL_TEXTURE_CUBE_MAP_NEGATIVE_X:	return "GL_TEXTURE_CUBE_MAP_NEGATIVE_X";
		case GL_TEXTURE_CUBE_MAP_POSITIVE_Y:	return "GL_TEXTURE_CUBE_MAP_POSITIVE_Y";
		case GL_TEXTURE_CUBE_MAP_NEGATIVE_Y:	return "GL_TEXTURE_CUBE_MAP_NEGATIVE_Y";
		case GL_TEXTURE_CUBE_MAP_POSITIVE_Z:	return "GL_TEXTURE_CUBE_MAP_POSITIVE_Z";
		case GL_TEXTURE_CUBE_MAP_NEGATIVE_Z:	return "GL_TEXTURE_CUBE_MAP_NEGATIVE_Z";
		default:								return DE_NULL;
	}
}

const char* getTextureDepthStencilModeName (int value)
{
	switch (value)
	{
		case GL_DEPTH_COMPONENT:	return "GL_DEPTH_COMPONENT";
		case GL_STENCIL_INDEX:		return "GL_STENCIL_INDEX";
		default:					return DE_NULL;
	}
}

const char* getPixelStoreParameterName (int value)
{
	switch (value)
	{
		case GL_UNPACK_ALIGNMENT:		return "GL_UNPACK_ALIGNMENT";
		case GL_UNPACK_IMAGE_HEIGHT:	return "GL_UNPACK_IMAGE_HEIGHT";
		case GL_UNPACK_ROW_LENGTH:		return "GL_UNPACK_ROW_LENGTH";
		case GL_UNPACK_SKIP_IMAGES:		return "GL_UNPACK_SKIP_IMAGES";
		case GL_UNPACK_SKIP_ROWS:		return "GL_UNPACK_SKIP_ROWS";
		case GL_UNPACK_SKIP_PIXELS:		return "GL_UNPACK_SKIP_PIXELS";
		case GL_PACK_ROW_LENGTH:		return "GL_PACK_ROW_LENGTH";
		case GL_PACK_SKIP_ROWS:			return "GL_PACK_SKIP_ROWS";
		case GL_PACK_SKIP_PIXELS:		return "GL_PACK_SKIP_PIXELS";
		default:						return DE_NULL;
	}
}

const char* getUncompressedTextureFormatName (int value)
{
	switch (value)
	{
		case GL_LUMINANCE:			return "GL_LUMINANCE";
		case GL_LUMINANCE_ALPHA:	return "GL_LUMINANCE_ALPHA";
		case GL_ALPHA:				return "GL_ALPHA";
		case GL_RGB:				return "GL_RGB";
		case GL_RGBA:				return "GL_RGBA";
		case GL_RGBA4:				return "GL_RGBA4";
		case GL_RGB5_A1:			return "GL_RGB5_A1";
		case GL_RGB565:				return "GL_RGB565";
		case GL_DEPTH_COMPONENT16:	return "GL_DEPTH_COMPONENT16";
		case GL_STENCIL_INDEX8:		return "GL_STENCIL_INDEX8";
		case GL_RG:					return "GL_RG";
		case GL_RED:				return "GL_RED";
		case GL_RGBA_INTEGER:		return "GL_RGBA_INTEGER";
		case GL_RGB_INTEGER:		return "GL_RGB_INTEGER";
		case GL_RG_INTEGER:			return "GL_RG_INTEGER";
		case GL_RED_INTEGER:		return "GL_RED_INTEGER";
		case GL_DEPTH_COMPONENT:	return "GL_DEPTH_COMPONENT";
		case GL_DEPTH_STENCIL:		return "GL_DEPTH_STENCIL";
		case GL_RGBA32F:			return "GL_RGBA32F";
		case GL_RGBA32I:			return "GL_RGBA32I";
		case GL_RGBA32UI:			return "GL_RGBA32UI";
		case GL_RGBA16:				return "GL_RGBA16";
		case GL_RGBA16_SNORM:		return "GL_RGBA16_SNORM";
		case GL_RGBA16F:			return "GL_RGBA16F";
		case GL_RGBA16I:			return "GL_RGBA16I";
		case GL_RGBA16UI:			return "GL_RGBA16UI";
		case GL_RGBA8:				return "GL_RGBA8";
		case GL_RGBA8I:				return "GL_RGBA8I";
		case GL_RGBA8UI:			return "GL_RGBA8UI";
		case GL_SRGB8_ALPHA8:		return "GL_SRGB8_ALPHA8";
		case GL_RGB10_A2:			return "GL_RGB10_A2";
		case GL_RGB10_A2UI:			return "GL_RGB10_A2UI";
		case GL_RGBA8_SNORM:		return "GL_RGBA8_SNORM";
		case GL_RGB8:				return "GL_RGB8";
		case GL_R11F_G11F_B10F:		return "GL_R11F_G11F_B10F";
		case GL_RGB32F:				return "GL_RGB32F";
		case GL_RGB32I:				return "GL_RGB32I";
		case GL_RGB32UI:			return "GL_RGB32UI";
		case GL_RGB16:				return "GL_RGB16";
		case GL_RGB16_SNORM:		return "GL_RGB16_SNORM";
		case GL_RGB16F:				return "GL_RGB16F";
		case GL_RGB16I:				return "GL_RGB16I";
		case GL_RGB16UI:			return "GL_RGB16UI";
		case GL_RGB8_SNORM:			return "GL_RGB8_SNORM";
		case GL_RGB8I:				return "GL_RGB8I";
		case GL_RGB8UI:				return "GL_RGB8UI";
		case GL_SRGB8:				return "GL_SRGB8";
		case GL_RGB9_E5:			return "GL_RGB9_E5";
		case GL_RG32F:				return "GL_RG32F";
		case GL_RG32I:				return "GL_RG32I";
		case GL_RG32UI:				return "GL_RG32UI";
		case GL_RG16:				return "GL_RG16";
		case GL_RG16_SNORM:			return "GL_RG16_SNORM";
		case GL_RG16F:				return "GL_RG16F";
		case GL_RG16I:				return "GL_RG16I";
		case GL_RG16UI:				return "GL_RG16UI";
		case GL_RG8:				return "GL_RG8";
		case GL_RG8I:				return "GL_RG8I";
		case GL_RG8UI:				return "GL_RG8UI";
		case GL_RG8_SNORM:			return "GL_RG8_SNORM";
		case GL_R32F:				return "GL_R32F";
		case GL_R32I:				return "GL_R32I";
		case GL_R32UI:				return "GL_R32UI";
		case GL_R16:				return "GL_R16";
		case GL_R16_SNORM:			return "GL_R16_SNORM";
		case GL_R16F:				return "GL_R16F";
		case GL_R16I:				return "GL_R16I";
		case GL_R16UI:				return "GL_R16UI";
		case GL_R8:					return "GL_R8";
		case GL_R8I:				return "GL_R8I";
		case GL_R8UI:				return "GL_R8UI";
		case GL_R8_SNORM:			return "GL_R8_SNORM";
		case GL_DEPTH_COMPONENT32F:	return "GL_DEPTH_COMPONENT32F";
		case GL_DEPTH_COMPONENT24:	return "GL_DEPTH_COMPONENT24";
		case GL_DEPTH32F_STENCIL8:	return "GL_DEPTH32F_STENCIL8";
		case GL_DEPTH24_STENCIL8:	return "GL_DEPTH24_STENCIL8";
		case GL_RGB10:				return "GL_RGB10";
		case GL_DEPTH_COMPONENT32:	return "GL_DEPTH_COMPONENT32";
		case GL_SRGB:				return "GL_SRGB";
		case GL_SRGB_ALPHA:			return "GL_SRGB_ALPHA";
		case GL_SR8_EXT:			return "GL_SR8_EXT";
		case GL_SRG8_EXT:			return "GL_SRG8_EXT";
		case GL_BGRA:				return "GL_BGRA";
		default:					return DE_NULL;
	}
}

const char* getCompressedTextureFormatName (int value)
{
	switch (value)
	{
		case GL_COMPRESSED_R11_EAC:							return "GL_COMPRESSED_R11_EAC";
		case GL_COMPRESSED_SIGNED_R11_EAC:					return "GL_COMPRESSED_SIGNED_R11_EAC";
		case GL_COMPRESSED_RG11_EAC:						return "GL_COMPRESSED_RG11_EAC";
		case GL_COMPRESSED_SIGNED_RG11_EAC:					return "GL_COMPRESSED_SIGNED_RG11_EAC";
		case GL_COMPRESSED_RGB8_ETC2:						return "GL_COMPRESSED_RGB8_ETC2";
		case GL_COMPRESSED_SRGB8_ETC2:						return "GL_COMPRESSED_SRGB8_ETC2";
		case GL_COMPRESSED_RGB8_PUNCHTHROUGH_ALPHA1_ETC2:	return "GL_COMPRESSED_RGB8_PUNCHTHROUGH_ALPHA1_ETC2";
		case GL_COMPRESSED_SRGB8_PUNCHTHROUGH_ALPHA1_ETC2:	return "GL_COMPRESSED_SRGB8_PUNCHTHROUGH_ALPHA1_ETC2";
		case GL_COMPRESSED_RGBA8_ETC2_EAC:					return "GL_COMPRESSED_RGBA8_ETC2_EAC";
		case GL_COMPRESSED_SRGB8_ALPHA8_ETC2_EAC:			return "GL_COMPRESSED_SRGB8_ALPHA8_ETC2_EAC";
		case GL_COMPRESSED_RGBA_ASTC_4x4_KHR:				return "GL_COMPRESSED_RGBA_ASTC_4x4_KHR";
		case GL_COMPRESSED_RGBA_ASTC_5x4_KHR:				return "GL_COMPRESSED_RGBA_ASTC_5x4_KHR";
		case GL_COMPRESSED_RGBA_ASTC_5x5_KHR:				return "GL_COMPRESSED_RGBA_ASTC_5x5_KHR";
		case GL_COMPRESSED_RGBA_ASTC_6x5_KHR:				return "GL_COMPRESSED_RGBA_ASTC_6x5_KHR";
		case GL_COMPRESSED_RGBA_ASTC_6x6_KHR:				return "GL_COMPRESSED_RGBA_ASTC_6x6_KHR";
		case GL_COMPRESSED_RGBA_ASTC_8x5_KHR:				return "GL_COMPRESSED_RGBA_ASTC_8x5_KHR";
		case GL_COMPRESSED_RGBA_ASTC_8x6_KHR:				return "GL_COMPRESSED_RGBA_ASTC_8x6_KHR";
		case GL_COMPRESSED_RGBA_ASTC_8x8_KHR:				return "GL_COMPRESSED_RGBA_ASTC_8x8_KHR";
		case GL_COMPRESSED_RGBA_ASTC_10x5_KHR:				return "GL_COMPRESSED_RGBA_ASTC_10x5_KHR";
		case GL_COMPRESSED_RGBA_ASTC_10x6_KHR:				return "GL_COMPRESSED_RGBA_ASTC_10x6_KHR";
		case GL_COMPRESSED_RGBA_ASTC_10x8_KHR:				return "GL_COMPRESSED_RGBA_ASTC_10x8_KHR";
		case GL_COMPRESSED_RGBA_ASTC_10x10_KHR:				return "GL_COMPRESSED_RGBA_ASTC_10x10_KHR";
		case GL_COMPRESSED_RGBA_ASTC_12x10_KHR:				return "GL_COMPRESSED_RGBA_ASTC_12x10_KHR";
		case GL_COMPRESSED_RGBA_ASTC_12x12_KHR:				return "GL_COMPRESSED_RGBA_ASTC_12x12_KHR";
		case GL_COMPRESSED_SRGB8_ALPHA8_ASTC_4x4_KHR:		return "GL_COMPRESSED_SRGB8_ALPHA8_ASTC_4x4_KHR";
		case GL_COMPRESSED_SRGB8_ALPHA8_ASTC_5x4_KHR:		return "GL_COMPRESSED_SRGB8_ALPHA8_ASTC_5x4_KHR";
		case GL_COMPRESSED_SRGB8_ALPHA8_ASTC_5x5_KHR:		return "GL_COMPRESSED_SRGB8_ALPHA8_ASTC_5x5_KHR";
		case GL_COMPRESSED_SRGB8_ALPHA8_ASTC_6x5_KHR:		return "GL_COMPRESSED_SRGB8_ALPHA8_ASTC_6x5_KHR";
		case GL_COMPRESSED_SRGB8_ALPHA8_ASTC_6x6_KHR:		return "GL_COMPRESSED_SRGB8_ALPHA8_ASTC_6x6_KHR";
		case GL_COMPRESSED_SRGB8_ALPHA8_ASTC_8x5_KHR:		return "GL_COMPRESSED_SRGB8_ALPHA8_ASTC_8x5_KHR";
		case GL_COMPRESSED_SRGB8_ALPHA8_ASTC_8x6_KHR:		return "GL_COMPRESSED_SRGB8_ALPHA8_ASTC_8x6_KHR";
		case GL_COMPRESSED_SRGB8_ALPHA8_ASTC_8x8_KHR:		return "GL_COMPRESSED_SRGB8_ALPHA8_ASTC_8x8_KHR";
		case GL_COMPRESSED_SRGB8_ALPHA8_ASTC_10x5_KHR:		return "GL_COMPRESSED_SRGB8_ALPHA8_ASTC_10x5_KHR";
		case GL_COMPRESSED_SRGB8_ALPHA8_ASTC_10x6_KHR:		return "GL_COMPRESSED_SRGB8_ALPHA8_ASTC_10x6_KHR";
		case GL_COMPRESSED_SRGB8_ALPHA8_ASTC_10x8_KHR:		return "GL_COMPRESSED_SRGB8_ALPHA8_ASTC_10x8_KHR";
		case GL_COMPRESSED_SRGB8_ALPHA8_ASTC_10x10_KHR:		return "GL_COMPRESSED_SRGB8_ALPHA8_ASTC_10x10_KHR";
		case GL_COMPRESSED_SRGB8_ALPHA8_ASTC_12x10_KHR:		return "GL_COMPRESSED_SRGB8_ALPHA8_ASTC_12x10_KHR";
		case GL_COMPRESSED_SRGB8_ALPHA8_ASTC_12x12_KHR:		return "GL_COMPRESSED_SRGB8_ALPHA8_ASTC_12x12_KHR";
		case GL_COMPRESSED_RGB_S3TC_DXT1_EXT:				return "GL_COMPRESSED_RGB_S3TC_DXT1_EXT";
		case GL_COMPRESSED_RGBA_S3TC_DXT1_EXT:				return "GL_COMPRESSED_RGBA_S3TC_DXT1_EXT";
		case GL_COMPRESSED_RGBA_S3TC_DXT3_EXT:				return "GL_COMPRESSED_RGBA_S3TC_DXT3_EXT";
		case GL_COMPRESSED_RGBA_S3TC_DXT5_EXT:				return "GL_COMPRESSED_RGBA_S3TC_DXT5_EXT";
		case GL_COMPRESSED_RGB_PVRTC_4BPPV1_IMG:			return "GL_COMPRESSED_RGB_PVRTC_4BPPV1_IMG";
		case GL_COMPRESSED_RGB_PVRTC_2BPPV1_IMG:			return "GL_COMPRESSED_RGB_PVRTC_2BPPV1_IMG";
		case GL_COMPRESSED_RGBA_PVRTC_4BPPV1_IMG:			return "GL_COMPRESSED_RGBA_PVRTC_4BPPV1_IMG";
		case GL_COMPRESSED_RGBA_PVRTC_2BPPV1_IMG:			return "GL_COMPRESSED_RGBA_PVRTC_2BPPV1_IMG";
		default:											return DE_NULL;
	}
}

const char* getShaderVarTypeName (int value)
{
	switch (value)
	{
		case GL_FLOAT:										return "GL_FLOAT";
		case GL_FLOAT_VEC2:									return "GL_FLOAT_VEC2";
		case GL_FLOAT_VEC3:									return "GL_FLOAT_VEC3";
		case GL_FLOAT_VEC4:									return "GL_FLOAT_VEC4";
		case GL_INT:										return "GL_INT";
		case GL_INT_VEC2:									return "GL_INT_VEC2";
		case GL_INT_VEC3:									return "GL_INT_VEC3";
		case GL_INT_VEC4:									return "GL_INT_VEC4";
		case GL_UNSIGNED_INT:								return "GL_UNSIGNED_INT";
		case GL_UNSIGNED_INT_VEC2:							return "GL_UNSIGNED_INT_VEC2";
		case GL_UNSIGNED_INT_VEC3:							return "GL_UNSIGNED_INT_VEC3";
		case GL_UNSIGNED_INT_VEC4:							return "GL_UNSIGNED_INT_VEC4";
		case GL_BOOL:										return "GL_BOOL";
		case GL_BOOL_VEC2:									return "GL_BOOL_VEC2";
		case GL_BOOL_VEC3:									return "GL_BOOL_VEC3";
		case GL_BOOL_VEC4:									return "GL_BOOL_VEC4";
		case GL_FLOAT_MAT2:									return "GL_FLOAT_MAT2";
		case GL_FLOAT_MAT3:									return "GL_FLOAT_MAT3";
		case GL_FLOAT_MAT4:									return "GL_FLOAT_MAT4";
		case GL_FLOAT_MAT2x3:								return "GL_FLOAT_MAT2x3";
		case GL_FLOAT_MAT2x4:								return "GL_FLOAT_MAT2x4";
		case GL_FLOAT_MAT3x2:								return "GL_FLOAT_MAT3x2";
		case GL_FLOAT_MAT3x4:								return "GL_FLOAT_MAT3x4";
		case GL_FLOAT_MAT4x2:								return "GL_FLOAT_MAT4x2";
		case GL_FLOAT_MAT4x3:								return "GL_FLOAT_MAT4x3";
		case GL_SAMPLER_2D:									return "GL_SAMPLER_2D";
		case GL_SAMPLER_3D:									return "GL_SAMPLER_3D";
		case GL_SAMPLER_CUBE:								return "GL_SAMPLER_CUBE";
		case GL_SAMPLER_2D_SHADOW:							return "GL_SAMPLER_2D_SHADOW";
		case GL_SAMPLER_2D_ARRAY:							return "GL_SAMPLER_2D_ARRAY";
		case GL_SAMPLER_2D_ARRAY_SHADOW:					return "GL_SAMPLER_2D_ARRAY_SHADOW";
		case GL_SAMPLER_CUBE_SHADOW:						return "GL_SAMPLER_CUBE_SHADOW";
		case GL_INT_SAMPLER_2D:								return "GL_INT_SAMPLER_2D";
		case GL_INT_SAMPLER_3D:								return "GL_INT_SAMPLER_3D";
		case GL_INT_SAMPLER_CUBE:							return "GL_INT_SAMPLER_CUBE";
		case GL_INT_SAMPLER_2D_ARRAY:						return "GL_INT_SAMPLER_2D_ARRAY";
		case GL_UNSIGNED_INT_SAMPLER_2D:					return "GL_UNSIGNED_INT_SAMPLER_2D";
		case GL_UNSIGNED_INT_SAMPLER_3D:					return "GL_UNSIGNED_INT_SAMPLER_3D";
		case GL_UNSIGNED_INT_SAMPLER_CUBE:					return "GL_UNSIGNED_INT_SAMPLER_CUBE";
		case GL_UNSIGNED_INT_SAMPLER_2D_ARRAY:				return "GL_UNSIGNED_INT_SAMPLER_2D_ARRAY";
		case GL_SAMPLER_2D_MULTISAMPLE:						return "GL_SAMPLER_2D_MULTISAMPLE";
		case GL_INT_SAMPLER_2D_MULTISAMPLE:					return "GL_INT_SAMPLER_2D_MULTISAMPLE";
		case GL_UNSIGNED_INT_SAMPLER_2D_MULTISAMPLE:		return "GL_UNSIGNED_INT_SAMPLER_2D_MULTISAMPLE";
		case GL_IMAGE_2D:									return "GL_IMAGE_2D";
		case GL_IMAGE_3D:									return "GL_IMAGE_3D";
		case GL_IMAGE_CUBE:									return "GL_IMAGE_CUBE";
		case GL_IMAGE_2D_ARRAY:								return "GL_IMAGE_2D_ARRAY";
		case GL_INT_IMAGE_2D:								return "GL_INT_IMAGE_2D";
		case GL_INT_IMAGE_3D:								return "GL_INT_IMAGE_3D";
		case GL_INT_IMAGE_CUBE:								return "GL_INT_IMAGE_CUBE";
		case GL_INT_IMAGE_2D_ARRAY:							return "GL_INT_IMAGE_2D_ARRAY";
		case GL_UNSIGNED_INT_IMAGE_2D:						return "GL_UNSIGNED_INT_IMAGE_2D";
		case GL_UNSIGNED_INT_IMAGE_3D:						return "GL_UNSIGNED_INT_IMAGE_3D";
		case GL_UNSIGNED_INT_IMAGE_CUBE:					return "GL_UNSIGNED_INT_IMAGE_CUBE";
		case GL_UNSIGNED_INT_IMAGE_2D_ARRAY:				return "GL_UNSIGNED_INT_IMAGE_2D_ARRAY";
		case GL_UNSIGNED_INT_ATOMIC_COUNTER:				return "GL_UNSIGNED_INT_ATOMIC_COUNTER";
		case GL_SAMPLER_2D_MULTISAMPLE_ARRAY:				return "GL_SAMPLER_2D_MULTISAMPLE_ARRAY";
		case GL_INT_SAMPLER_2D_MULTISAMPLE_ARRAY:			return "GL_INT_SAMPLER_2D_MULTISAMPLE_ARRAY";
		case GL_UNSIGNED_INT_SAMPLER_2D_MULTISAMPLE_ARRAY:	return "GL_UNSIGNED_INT_SAMPLER_2D_MULTISAMPLE_ARRAY";
		case GL_SAMPLER_BUFFER:								return "GL_SAMPLER_BUFFER";
		case GL_INT_SAMPLER_BUFFER:							return "GL_INT_SAMPLER_BUFFER";
		case GL_UNSIGNED_INT_SAMPLER_BUFFER:				return "GL_UNSIGNED_INT_SAMPLER_BUFFER";
		case GL_IMAGE_BUFFER:								return "GL_IMAGE_BUFFER";
		case GL_INT_IMAGE_BUFFER:							return "GL_INT_IMAGE_BUFFER";
		case GL_UNSIGNED_INT_IMAGE_BUFFER:					return "GL_UNSIGNED_INT_IMAGE_BUFFER";
		case GL_SAMPLER_CUBE_MAP_ARRAY:						return "GL_SAMPLER_CUBE_MAP_ARRAY";
		case GL_SAMPLER_CUBE_MAP_ARRAY_SHADOW:				return "GL_SAMPLER_CUBE_MAP_ARRAY_SHADOW";
		case GL_INT_SAMPLER_CUBE_MAP_ARRAY:					return "GL_INT_SAMPLER_CUBE_MAP_ARRAY";
		case GL_UNSIGNED_INT_SAMPLER_CUBE_MAP_ARRAY:		return "GL_UNSIGNED_INT_SAMPLER_CUBE_MAP_ARRAY";
		case GL_IMAGE_CUBE_MAP_ARRAY:						return "GL_IMAGE_CUBE_MAP_ARRAY";
		case GL_INT_IMAGE_CUBE_MAP_ARRAY:					return "GL_INT_IMAGE_CUBE_MAP_ARRAY";
		case GL_UNSIGNED_INT_IMAGE_CUBE_MAP_ARRAY:			return "GL_UNSIGNED_INT_IMAGE_CUBE_MAP_ARRAY";
		default:											return DE_NULL;
	}
}

const char* getShaderParamName (int value)
{
	switch (value)
	{
		case GL_SHADER_TYPE:			return "GL_SHADER_TYPE";
		case GL_DELETE_STATUS:			return "GL_DELETE_STATUS";
		case GL_COMPILE_STATUS:			return "GL_COMPILE_STATUS";
		case GL_INFO_LOG_LENGTH:		return "GL_INFO_LOG_LENGTH";
		case GL_SHADER_SOURCE_LENGTH:	return "GL_SHADER_SOURCE_LENGTH";
		default:						return DE_NULL;
	}
}

const char* getVertexAttribParameterNameName (int value)
{
	switch (value)
	{
		case GL_VERTEX_ATTRIB_ARRAY_BUFFER_BINDING:	return "GL_VERTEX_ATTRIB_ARRAY_BUFFER_BINDING";
		case GL_VERTEX_ATTRIB_ARRAY_ENABLED:		return "GL_VERTEX_ATTRIB_ARRAY_ENABLED";
		case GL_VERTEX_ATTRIB_ARRAY_SIZE:			return "GL_VERTEX_ATTRIB_ARRAY_SIZE";
		case GL_VERTEX_ATTRIB_ARRAY_STRIDE:			return "GL_VERTEX_ATTRIB_ARRAY_STRIDE";
		case GL_VERTEX_ATTRIB_ARRAY_TYPE:			return "GL_VERTEX_ATTRIB_ARRAY_TYPE";
		case GL_VERTEX_ATTRIB_ARRAY_NORMALIZED:		return "GL_VERTEX_ATTRIB_ARRAY_NORMALIZED";
		case GL_VERTEX_ATTRIB_ARRAY_INTEGER:		return "GL_VERTEX_ATTRIB_ARRAY_INTEGER";
		case GL_VERTEX_ATTRIB_ARRAY_DIVISOR:		return "GL_VERTEX_ATTRIB_ARRAY_DIVISOR";
		case GL_CURRENT_VERTEX_ATTRIB:				return "GL_CURRENT_VERTEX_ATTRIB";
		case GL_VERTEX_ATTRIB_BINDING:				return "GL_VERTEX_ATTRIB_BINDING";
		case GL_VERTEX_ATTRIB_RELATIVE_OFFSET:		return "GL_VERTEX_ATTRIB_RELATIVE_OFFSET";
		default:									return DE_NULL;
	}
}

const char* getBooleanName (int value)
{
	switch (value)
	{
		case GL_FALSE:	return "GL_FALSE";
		case GL_TRUE:	return "GL_TRUE";
		default:		return DE_NULL;
	}
}

const char* getGettableStateName (int value)
{
	switch (value)
	{
		case GL_ELEMENT_ARRAY_BUFFER_BINDING:						return "GL_ELEMENT_ARRAY_BUFFER_BINDING";
		case GL_ARRAY_BUFFER_BINDING:								return "GL_ARRAY_BUFFER_BINDING";
		case GL_VERTEX_ARRAY_BINDING:								return "GL_VERTEX_ARRAY_BINDING";
		case GL_VIEWPORT:											return "GL_VIEWPORT";
		case GL_DEPTH_RANGE:										return "GL_DEPTH_RANGE";
		case GL_TRANSFORM_FEEDBACK_BINDING:							return "GL_TRANSFORM_FEEDBACK_BINDING";
		case GL_LINE_WIDTH:											return "GL_LINE_WIDTH";
		case GL_CULL_FACE_MODE:										return "GL_CULL_FACE_MODE";
		case GL_FRONT_FACE:											return "GL_FRONT_FACE";
		case GL_POLYGON_OFFSET_FACTOR:								return "GL_POLYGON_OFFSET_FACTOR";
		case GL_POLYGON_OFFSET_UNITS:								return "GL_POLYGON_OFFSET_UNITS";
		case GL_SAMPLE_COVERAGE_VALUE:								return "GL_SAMPLE_COVERAGE_VALUE";
		case GL_SAMPLE_COVERAGE_INVERT:								return "GL_SAMPLE_COVERAGE_INVERT";
		case GL_ACTIVE_TEXTURE:										return "GL_ACTIVE_TEXTURE";
		case GL_TEXTURE_BINDING_1D:									return "GL_TEXTURE_BINDING_1D";
		case GL_TEXTURE_BINDING_2D:									return "GL_TEXTURE_BINDING_2D";
		case GL_TEXTURE_BINDING_3D:									return "GL_TEXTURE_BINDING_3D";
		case GL_TEXTURE_BINDING_2D_ARRAY:							return "GL_TEXTURE_BINDING_2D_ARRAY";
		case GL_TEXTURE_BINDING_CUBE_MAP:							return "GL_TEXTURE_BINDING_CUBE_MAP";
		case GL_SAMPLER_BINDING:									return "GL_SAMPLER_BINDING";
		case GL_SCISSOR_BOX:										return "GL_SCISSOR_BOX";
		case GL_STENCIL_FUNC:										return "GL_STENCIL_FUNC";
		case GL_STENCIL_VALUE_MASK:									return "GL_STENCIL_VALUE_MASK";
		case GL_STENCIL_REF:										return "GL_STENCIL_REF";
		case GL_STENCIL_FAIL:										return "GL_STENCIL_FAIL";
		case GL_STENCIL_PASS_DEPTH_FAIL:							return "GL_STENCIL_PASS_DEPTH_FAIL";
		case GL_STENCIL_PASS_DEPTH_PASS:							return "GL_STENCIL_PASS_DEPTH_PASS";
		case GL_STENCIL_BACK_FUNC:									return "GL_STENCIL_BACK_FUNC";
		case GL_STENCIL_BACK_VALUE_MASK:							return "GL_STENCIL_BACK_VALUE_MASK";
		case GL_STENCIL_BACK_REF:									return "GL_STENCIL_BACK_REF";
		case GL_STENCIL_BACK_FAIL:									return "GL_STENCIL_BACK_FAIL";
		case GL_STENCIL_BACK_PASS_DEPTH_FAIL:						return "GL_STENCIL_BACK_PASS_DEPTH_FAIL";
		case GL_STENCIL_BACK_PASS_DEPTH_PASS:						return "GL_STENCIL_BACK_PASS_DEPTH_PASS";
		case GL_DEPTH_FUNC:											return "GL_DEPTH_FUNC";
		case GL_BLEND_SRC_RGB:										return "GL_BLEND_SRC_RGB";
		case GL_BLEND_SRC_ALPHA:									return "GL_BLEND_SRC_ALPHA";
		case GL_BLEND_DST_RGB:										return "GL_BLEND_DST_RGB";
		case GL_BLEND_DST_ALPHA:									return "GL_BLEND_DST_ALPHA";
		case GL_BLEND_EQUATION_RGB:									return "GL_BLEND_EQUATION_RGB";
		case GL_BLEND_EQUATION_ALPHA:								return "GL_BLEND_EQUATION_ALPHA";
		case GL_BLEND_COLOR:										return "GL_BLEND_COLOR";
		case GL_COLOR_WRITEMASK:									return "GL_COLOR_WRITEMASK";
		case GL_DEPTH_WRITEMASK:									return "GL_DEPTH_WRITEMASK";
		case GL_STENCIL_WRITEMASK:									return "GL_STENCIL_WRITEMASK";
		case GL_STENCIL_BACK_WRITEMASK:								return "GL_STENCIL_BACK_WRITEMASK";
		case GL_COLOR_CLEAR_VALUE:									return "GL_COLOR_CLEAR_VALUE";
		case GL_DEPTH_CLEAR_VALUE:									return "GL_DEPTH_CLEAR_VALUE";
		case GL_STENCIL_CLEAR_VALUE:								return "GL_STENCIL_CLEAR_VALUE";
		case GL_DRAW_FRAMEBUFFER_BINDING:							return "GL_DRAW_FRAMEBUFFER_BINDING";
		case GL_READ_FRAMEBUFFER_BINDING:							return "GL_READ_FRAMEBUFFER_BINDING";
		case GL_RENDERBUFFER_BINDING:								return "GL_RENDERBUFFER_BINDING";
		case GL_DRAW_BUFFER0:										return "GL_DRAW_BUFFER0";
		case GL_DRAW_BUFFER1:										return "GL_DRAW_BUFFER1";
		case GL_DRAW_BUFFER2:										return "GL_DRAW_BUFFER2";
		case GL_DRAW_BUFFER3:										return "GL_DRAW_BUFFER3";
		case GL_DRAW_BUFFER4:										return "GL_DRAW_BUFFER4";
		case GL_DRAW_BUFFER5:										return "GL_DRAW_BUFFER5";
		case GL_DRAW_BUFFER6:										return "GL_DRAW_BUFFER6";
		case GL_DRAW_BUFFER7:										return "GL_DRAW_BUFFER7";
		case GL_DRAW_BUFFER8:										return "GL_DRAW_BUFFER8";
		case GL_DRAW_BUFFER9:										return "GL_DRAW_BUFFER9";
		case GL_DRAW_BUFFER10:										return "GL_DRAW_BUFFER10";
		case GL_DRAW_BUFFER11:										return "GL_DRAW_BUFFER11";
		case GL_DRAW_BUFFER12:										return "GL_DRAW_BUFFER12";
		case GL_DRAW_BUFFER13:										return "GL_DRAW_BUFFER13";
		case GL_DRAW_BUFFER14:										return "GL_DRAW_BUFFER14";
		case GL_DRAW_BUFFER15:										return "GL_DRAW_BUFFER15";
		case GL_READ_BUFFER:										return "GL_READ_BUFFER";
		case GL_UNPACK_IMAGE_HEIGHT:								return "GL_UNPACK_IMAGE_HEIGHT";
		case GL_UNPACK_SKIP_IMAGES:									return "GL_UNPACK_SKIP_IMAGES";
		case GL_UNPACK_ROW_LENGTH:									return "GL_UNPACK_ROW_LENGTH";
		case GL_UNPACK_SKIP_ROWS:									return "GL_UNPACK_SKIP_ROWS";
		case GL_UNPACK_SKIP_PIXELS:									return "GL_UNPACK_SKIP_PIXELS";
		case GL_UNPACK_ALIGNMENT:									return "GL_UNPACK_ALIGNMENT";
		case GL_PACK_ROW_LENGTH:									return "GL_PACK_ROW_LENGTH";
		case GL_PACK_SKIP_ROWS:										return "GL_PACK_SKIP_ROWS";
		case GL_PACK_SKIP_PIXELS:									return "GL_PACK_SKIP_PIXELS";
		case GL_PACK_ALIGNMENT:										return "GL_PACK_ALIGNMENT";
		case GL_PIXEL_PACK_BUFFER_BINDING:							return "GL_PIXEL_PACK_BUFFER_BINDING";
		case GL_PIXEL_UNPACK_BUFFER_BINDING:						return "GL_PIXEL_UNPACK_BUFFER_BINDING";
		case GL_CURRENT_PROGRAM:									return "GL_CURRENT_PROGRAM";
		case GL_TRANSFORM_FEEDBACK_BUFFER_BINDING:					return "GL_TRANSFORM_FEEDBACK_BUFFER_BINDING";
		case GL_TRANSFORM_FEEDBACK_PAUSED:							return "GL_TRANSFORM_FEEDBACK_PAUSED";
		case GL_TRANSFORM_FEEDBACK_ACTIVE:							return "GL_TRANSFORM_FEEDBACK_ACTIVE";
		case GL_UNIFORM_BUFFER_BINDING:								return "GL_UNIFORM_BUFFER_BINDING";
		case GL_GENERATE_MIPMAP_HINT:								return "GL_GENERATE_MIPMAP_HINT";
		case GL_FRAGMENT_SHADER_DERIVATIVE_HINT:					return "GL_FRAGMENT_SHADER_DERIVATIVE_HINT";
		case GL_MAX_ELEMENT_INDEX:									return "GL_MAX_ELEMENT_INDEX";
		case GL_SUBPIXEL_BITS:										return "GL_SUBPIXEL_BITS";
		case GL_MAX_3D_TEXTURE_SIZE:								return "GL_MAX_3D_TEXTURE_SIZE";
		case GL_MAX_TEXTURE_SIZE:									return "GL_MAX_TEXTURE_SIZE";
		case GL_MAX_ARRAY_TEXTURE_LAYERS:							return "GL_MAX_ARRAY_TEXTURE_LAYERS";
		case GL_MAX_TEXTURE_LOD_BIAS:								return "GL_MAX_TEXTURE_LOD_BIAS";
		case GL_MAX_CUBE_MAP_TEXTURE_SIZE:							return "GL_MAX_CUBE_MAP_TEXTURE_SIZE";
		case GL_MAX_RENDERBUFFER_SIZE:								return "GL_MAX_RENDERBUFFER_SIZE";
		case GL_MAX_DRAW_BUFFERS:									return "GL_MAX_DRAW_BUFFERS";
		case GL_MAX_COLOR_ATTACHMENTS:								return "GL_MAX_COLOR_ATTACHMENTS";
		case GL_MAX_VIEWPORT_DIMS:									return "GL_MAX_VIEWPORT_DIMS";
		case GL_ALIASED_POINT_SIZE_RANGE:							return "GL_ALIASED_POINT_SIZE_RANGE";
		case GL_ALIASED_LINE_WIDTH_RANGE:							return "GL_ALIASED_LINE_WIDTH_RANGE";
		case GL_MAX_ELEMENTS_INDICES:								return "GL_MAX_ELEMENTS_INDICES";
		case GL_MAX_ELEMENTS_VERTICES:								return "GL_MAX_ELEMENTS_VERTICES";
		case GL_COMPRESSED_TEXTURE_FORMATS:							return "GL_COMPRESSED_TEXTURE_FORMATS";
		case GL_NUM_COMPRESSED_TEXTURE_FORMATS:						return "GL_NUM_COMPRESSED_TEXTURE_FORMATS";
		case GL_PROGRAM_BINARY_FORMATS:								return "GL_PROGRAM_BINARY_FORMATS";
		case GL_NUM_PROGRAM_BINARY_FORMATS:							return "GL_NUM_PROGRAM_BINARY_FORMATS";
		case GL_SHADER_BINARY_FORMATS:								return "GL_SHADER_BINARY_FORMATS";
		case GL_NUM_SHADER_BINARY_FORMATS:							return "GL_NUM_SHADER_BINARY_FORMATS";
		case GL_SHADER_COMPILER:									return "GL_SHADER_COMPILER";
		case GL_MAX_SERVER_WAIT_TIMEOUT:							return "GL_MAX_SERVER_WAIT_TIMEOUT";
		case GL_NUM_EXTENSIONS:										return "GL_NUM_EXTENSIONS";
		case GL_MAJOR_VERSION:										return "GL_MAJOR_VERSION";
		case GL_MINOR_VERSION:										return "GL_MINOR_VERSION";
		case GL_MAX_VERTEX_ATTRIBS:									return "GL_MAX_VERTEX_ATTRIBS";
		case GL_MAX_VERTEX_UNIFORM_COMPONENTS:						return "GL_MAX_VERTEX_UNIFORM_COMPONENTS";
		case GL_MAX_VERTEX_UNIFORM_VECTORS:							return "GL_MAX_VERTEX_UNIFORM_VECTORS";
		case GL_MAX_VERTEX_UNIFORM_BLOCKS:							return "GL_MAX_VERTEX_UNIFORM_BLOCKS";
		case GL_MAX_VERTEX_OUTPUT_COMPONENTS:						return "GL_MAX_VERTEX_OUTPUT_COMPONENTS";
		case GL_MAX_VERTEX_TEXTURE_IMAGE_UNITS:						return "GL_MAX_VERTEX_TEXTURE_IMAGE_UNITS";
		case GL_MAX_FRAGMENT_UNIFORM_COMPONENTS:					return "GL_MAX_FRAGMENT_UNIFORM_COMPONENTS";
		case GL_MAX_FRAGMENT_UNIFORM_VECTORS:						return "GL_MAX_FRAGMENT_UNIFORM_VECTORS";
		case GL_MAX_FRAGMENT_UNIFORM_BLOCKS:						return "GL_MAX_FRAGMENT_UNIFORM_BLOCKS";
		case GL_MAX_FRAGMENT_INPUT_COMPONENTS:						return "GL_MAX_FRAGMENT_INPUT_COMPONENTS";
		case GL_MAX_TEXTURE_IMAGE_UNITS:							return "GL_MAX_TEXTURE_IMAGE_UNITS";
		case GL_MIN_PROGRAM_TEXEL_OFFSET:							return "GL_MIN_PROGRAM_TEXEL_OFFSET";
		case GL_MAX_PROGRAM_TEXEL_OFFSET:							return "GL_MAX_PROGRAM_TEXEL_OFFSET";
		case GL_MAX_UNIFORM_BUFFER_BINDINGS:						return "GL_MAX_UNIFORM_BUFFER_BINDINGS";
		case GL_MAX_UNIFORM_BLOCK_SIZE:								return "GL_MAX_UNIFORM_BLOCK_SIZE";
		case GL_UNIFORM_BUFFER_OFFSET_ALIGNMENT:					return "GL_UNIFORM_BUFFER_OFFSET_ALIGNMENT";
		case GL_MAX_COMBINED_UNIFORM_BLOCKS:						return "GL_MAX_COMBINED_UNIFORM_BLOCKS";
		case GL_MAX_COMBINED_VERTEX_UNIFORM_COMPONENTS:				return "GL_MAX_COMBINED_VERTEX_UNIFORM_COMPONENTS";
		case GL_MAX_COMBINED_FRAGMENT_UNIFORM_COMPONENTS:			return "GL_MAX_COMBINED_FRAGMENT_UNIFORM_COMPONENTS";
		case GL_MAX_VARYING_COMPONENTS:								return "GL_MAX_VARYING_COMPONENTS";
		case GL_MAX_VARYING_VECTORS:								return "GL_MAX_VARYING_VECTORS";
		case GL_MAX_COMBINED_TEXTURE_IMAGE_UNITS:					return "GL_MAX_COMBINED_TEXTURE_IMAGE_UNITS";
		case GL_MAX_TRANSFORM_FEEDBACK_INTERLEAVED_COMPONENTS:		return "GL_MAX_TRANSFORM_FEEDBACK_INTERLEAVED_COMPONENTS";
		case GL_MAX_TRANSFORM_FEEDBACK_SEPARATE_ATTRIBS:			return "GL_MAX_TRANSFORM_FEEDBACK_SEPARATE_ATTRIBS";
		case GL_MAX_TRANSFORM_FEEDBACK_SEPARATE_COMPONENTS:			return "GL_MAX_TRANSFORM_FEEDBACK_SEPARATE_COMPONENTS";
		case GL_SAMPLE_BUFFERS:										return "GL_SAMPLE_BUFFERS";
		case GL_SAMPLES:											return "GL_SAMPLES";
		case GL_MAX_SAMPLES:										return "GL_MAX_SAMPLES";
		case GL_DEPTH_BITS:											return "GL_DEPTH_BITS";
		case GL_STENCIL_BITS:										return "GL_STENCIL_BITS";
		case GL_IMPLEMENTATION_COLOR_READ_TYPE:						return "GL_IMPLEMENTATION_COLOR_READ_TYPE";
		case GL_IMPLEMENTATION_COLOR_READ_FORMAT:					return "GL_IMPLEMENTATION_COLOR_READ_FORMAT";
		case GL_COPY_READ_BUFFER_BINDING:							return "GL_COPY_READ_BUFFER_BINDING";
		case GL_COPY_WRITE_BUFFER_BINDING:							return "GL_COPY_WRITE_BUFFER_BINDING";
		case GL_RED_BITS:											return "GL_RED_BITS";
		case GL_GREEN_BITS:											return "GL_GREEN_BITS";
		case GL_BLUE_BITS:											return "GL_BLUE_BITS";
		case GL_ALPHA_BITS:											return "GL_ALPHA_BITS";
		case GL_MAX_COLOR_TEXTURE_SAMPLES:							return "GL_MAX_COLOR_TEXTURE_SAMPLES";
		case GL_TIMESTAMP:											return "GL_TIMESTAMP";
		case GL_MAX_DEPTH_TEXTURE_SAMPLES:							return "GL_MAX_DEPTH_TEXTURE_SAMPLES";
		case GL_MAX_INTEGER_SAMPLES:								return "GL_MAX_INTEGER_SAMPLES";
		case GL_TEXTURE_BINDING_2D_MULTISAMPLE:						return "GL_TEXTURE_BINDING_2D_MULTISAMPLE";
		case GL_TEXTURE_BINDING_2D_MULTISAMPLE_ARRAY:				return "GL_TEXTURE_BINDING_2D_MULTISAMPLE_ARRAY";
		case GL_MAX_VERTEX_ATTRIB_STRIDE:							return "GL_MAX_VERTEX_ATTRIB_STRIDE";
		case GL_MAX_VERTEX_ATTRIB_BINDINGS:							return "GL_MAX_VERTEX_ATTRIB_BINDINGS";
		case GL_MAX_VERTEX_ATTRIB_RELATIVE_OFFSET:					return "GL_MAX_VERTEX_ATTRIB_RELATIVE_OFFSET";
		case GL_MIN_SAMPLE_SHADING_VALUE:							return "GL_MIN_SAMPLE_SHADING_VALUE";
		case GL_FRAGMENT_INTERPOLATION_OFFSET_BITS:					return "GL_FRAGMENT_INTERPOLATION_OFFSET_BITS";
		case GL_MAX_FRAGMENT_INTERPOLATION_OFFSET:					return "GL_MAX_FRAGMENT_INTERPOLATION_OFFSET";
		case GL_MIN_FRAGMENT_INTERPOLATION_OFFSET:					return "GL_MIN_FRAGMENT_INTERPOLATION_OFFSET";
		case GL_MAX_GEOMETRY_SHADER_INVOCATIONS:					return "GL_MAX_GEOMETRY_SHADER_INVOCATIONS";
		case GL_LAYER_PROVOKING_VERTEX:								return "GL_LAYER_PROVOKING_VERTEX";
		case GL_MAX_GEOMETRY_UNIFORM_COMPONENTS:					return "GL_MAX_GEOMETRY_UNIFORM_COMPONENTS";
		case GL_MAX_GEOMETRY_SHADER_STORAGE_BLOCKS:					return "GL_MAX_GEOMETRY_SHADER_STORAGE_BLOCKS";
		case GL_MAX_GEOMETRY_UNIFORM_BLOCKS:						return "GL_MAX_GEOMETRY_UNIFORM_BLOCKS";
		case GL_MAX_GEOMETRY_INPUT_COMPONENTS:						return "GL_MAX_GEOMETRY_INPUT_COMPONENTS";
		case GL_MAX_GEOMETRY_OUTPUT_COMPONENTS:						return "GL_MAX_GEOMETRY_OUTPUT_COMPONENTS";
		case GL_MAX_GEOMETRY_IMAGE_UNIFORMS:						return "GL_MAX_GEOMETRY_IMAGE_UNIFORMS";
		case GL_MAX_GEOMETRY_TEXTURE_IMAGE_UNITS:					return "GL_MAX_GEOMETRY_TEXTURE_IMAGE_UNITS";
		case GL_MAX_GEOMETRY_OUTPUT_VERTICES:						return "GL_MAX_GEOMETRY_OUTPUT_VERTICES";
		case GL_MAX_GEOMETRY_ATOMIC_COUNTERS:						return "GL_MAX_GEOMETRY_ATOMIC_COUNTERS";
		case GL_MAX_GEOMETRY_ATOMIC_COUNTER_BUFFERS:				return "GL_MAX_GEOMETRY_ATOMIC_COUNTER_BUFFERS";
		case GL_MAX_GEOMETRY_TOTAL_OUTPUT_COMPONENTS:				return "GL_MAX_GEOMETRY_TOTAL_OUTPUT_COMPONENTS";
		case GL_MAX_FRAMEBUFFER_LAYERS:								return "GL_MAX_FRAMEBUFFER_LAYERS";
		case GL_PROVOKING_VERTEX:									return "GL_PROVOKING_VERTEX";
		case GL_PRIMITIVE_RESTART_INDEX:							return "GL_PRIMITIVE_RESTART_INDEX";
		case GL_MAX_FRAGMENT_ATOMIC_COUNTER_BUFFERS:				return "GL_MAX_FRAGMENT_ATOMIC_COUNTER_BUFFERS";
		case GL_MAX_FRAGMENT_ATOMIC_COUNTERS:						return "GL_MAX_FRAGMENT_ATOMIC_COUNTERS";
		case GL_MAX_FRAGMENT_IMAGE_UNIFORMS:						return "GL_MAX_FRAGMENT_IMAGE_UNIFORMS";
		case GL_MAX_COMPUTE_UNIFORM_BLOCKS:							return "GL_MAX_COMPUTE_UNIFORM_BLOCKS";
		case GL_MAX_COMPUTE_TEXTURE_IMAGE_UNITS:					return "GL_MAX_COMPUTE_TEXTURE_IMAGE_UNITS";
		case GL_MAX_COMPUTE_UNIFORM_COMPONENTS:						return "GL_MAX_COMPUTE_UNIFORM_COMPONENTS";
		case GL_MAX_COMPUTE_ATOMIC_COUNTER_BUFFERS:					return "GL_MAX_COMPUTE_ATOMIC_COUNTER_BUFFERS";
		case GL_MAX_COMPUTE_ATOMIC_COUNTERS:						return "GL_MAX_COMPUTE_ATOMIC_COUNTERS";
		case GL_MAX_COMPUTE_IMAGE_UNIFORMS:							return "GL_MAX_COMPUTE_IMAGE_UNIFORMS";
		case GL_MAX_COMPUTE_SHADER_STORAGE_BLOCKS:					return "GL_MAX_COMPUTE_SHADER_STORAGE_BLOCKS";
		case GL_MAX_FRAGMENT_SHADER_STORAGE_BLOCKS:					return "GL_MAX_FRAGMENT_SHADER_STORAGE_BLOCKS";
		case GL_MAX_COMBINED_COMPUTE_UNIFORM_COMPONENTS:			return "GL_MAX_COMBINED_COMPUTE_UNIFORM_COMPONENTS";
		case GL_MAX_VERTEX_ATOMIC_COUNTER_BUFFERS:					return "GL_MAX_VERTEX_ATOMIC_COUNTER_BUFFERS";
		case GL_MAX_VERTEX_ATOMIC_COUNTERS:							return "GL_MAX_VERTEX_ATOMIC_COUNTERS";
		case GL_MAX_VERTEX_IMAGE_UNIFORMS:							return "GL_MAX_VERTEX_IMAGE_UNIFORMS";
		case GL_MAX_VERTEX_SHADER_STORAGE_BLOCKS:					return "GL_MAX_VERTEX_SHADER_STORAGE_BLOCKS";
		case GL_MAX_COMBINED_SHADER_OUTPUT_RESOURCES:				return "GL_MAX_COMBINED_SHADER_OUTPUT_RESOURCES";
		case GL_MAX_ATOMIC_COUNTER_BUFFER_BINDINGS:					return "GL_MAX_ATOMIC_COUNTER_BUFFER_BINDINGS";
		case GL_MAX_ATOMIC_COUNTER_BUFFER_SIZE:						return "GL_MAX_ATOMIC_COUNTER_BUFFER_SIZE";
		case GL_MAX_IMAGE_UNITS:									return "GL_MAX_IMAGE_UNITS";
		case GL_MAX_COMBINED_ATOMIC_COUNTER_BUFFERS:				return "GL_MAX_COMBINED_ATOMIC_COUNTER_BUFFERS";
		case GL_MAX_COMBINED_IMAGE_UNIFORMS:						return "GL_MAX_COMBINED_IMAGE_UNIFORMS";
		case GL_MAX_SHADER_STORAGE_BUFFER_BINDINGS:					return "GL_MAX_SHADER_STORAGE_BUFFER_BINDINGS";
		case GL_MAX_SHADER_STORAGE_BLOCK_SIZE:						return "GL_MAX_SHADER_STORAGE_BLOCK_SIZE";
		case GL_MAX_COMBINED_ATOMIC_COUNTERS:						return "GL_MAX_COMBINED_ATOMIC_COUNTERS";
		case GL_MAX_COMBINED_SHADER_STORAGE_BLOCKS:					return "GL_MAX_COMBINED_SHADER_STORAGE_BLOCKS";
		case GL_SHADER_STORAGE_BUFFER_OFFSET_ALIGNMENT:				return "GL_SHADER_STORAGE_BUFFER_OFFSET_ALIGNMENT";
		case GL_PRIMITIVE_BOUNDING_BOX_EXT:							return "GL_PRIMITIVE_BOUNDING_BOX_EXT";
		case GL_DRAW_INDIRECT_BUFFER_BINDING:						return "GL_DRAW_INDIRECT_BUFFER_BINDING";
		case GL_MAX_SAMPLE_MASK_WORDS:								return "GL_MAX_SAMPLE_MASK_WORDS";
		case GL_PROGRAM_PIPELINE_BINDING:							return "GL_PROGRAM_PIPELINE_BINDING";
		case GL_ATOMIC_COUNTER_BUFFER_BINDING:						return "GL_ATOMIC_COUNTER_BUFFER_BINDING";
		case GL_SHADER_STORAGE_BUFFER_BINDING:						return "GL_SHADER_STORAGE_BUFFER_BINDING";
		case GL_DISPATCH_INDIRECT_BUFFER_BINDING:					return "GL_DISPATCH_INDIRECT_BUFFER_BINDING";
		case GL_MAX_FRAMEBUFFER_WIDTH:								return "GL_MAX_FRAMEBUFFER_WIDTH";
		case GL_MAX_FRAMEBUFFER_HEIGHT:								return "GL_MAX_FRAMEBUFFER_HEIGHT";
		case GL_MAX_FRAMEBUFFER_SAMPLES:							return "GL_MAX_FRAMEBUFFER_SAMPLES";
		case GL_MAX_COMPUTE_SHARED_MEMORY_SIZE:						return "GL_MAX_COMPUTE_SHARED_MEMORY_SIZE";
		case GL_MIN_PROGRAM_TEXTURE_GATHER_OFFSET:					return "GL_MIN_PROGRAM_TEXTURE_GATHER_OFFSET";
		case GL_MAX_PROGRAM_TEXTURE_GATHER_OFFSET:					return "GL_MAX_PROGRAM_TEXTURE_GATHER_OFFSET";
		case GL_MAX_COMPUTE_WORK_GROUP_INVOCATIONS:					return "GL_MAX_COMPUTE_WORK_GROUP_INVOCATIONS";
		case GL_MAX_UNIFORM_LOCATIONS:								return "GL_MAX_UNIFORM_LOCATIONS";
		case GL_MAX_DEBUG_MESSAGE_LENGTH:							return "GL_MAX_DEBUG_MESSAGE_LENGTH";
		case GL_MAX_DEBUG_LOGGED_MESSAGES:							return "GL_MAX_DEBUG_LOGGED_MESSAGES";
		case GL_MAX_DEBUG_GROUP_STACK_DEPTH:						return "GL_MAX_DEBUG_GROUP_STACK_DEPTH";
		case GL_MAX_LABEL_LENGTH:									return "GL_MAX_LABEL_LENGTH";
		case GL_CONTEXT_FLAGS:										return "GL_CONTEXT_FLAGS";
		case GL_DEBUG_LOGGED_MESSAGES:								return "GL_DEBUG_LOGGED_MESSAGES";
		case GL_DEBUG_NEXT_LOGGED_MESSAGE_LENGTH:					return "GL_DEBUG_NEXT_LOGGED_MESSAGE_LENGTH";
		case GL_DEBUG_GROUP_STACK_DEPTH:							return "GL_DEBUG_GROUP_STACK_DEPTH";
		case GL_MAX_COMBINED_GEOMETRY_UNIFORM_COMPONENTS:			return "GL_MAX_COMBINED_GEOMETRY_UNIFORM_COMPONENTS";
		case GL_TEXTURE_BUFFER_OFFSET_ALIGNMENT:					return "GL_TEXTURE_BUFFER_OFFSET_ALIGNMENT";
		case GL_TEXTURE_BUFFER_BINDING:								return "GL_TEXTURE_BUFFER_BINDING";
		case GL_TEXTURE_BINDING_BUFFER:								return "GL_TEXTURE_BINDING_BUFFER";
		case GL_MAX_TEXTURE_BUFFER_SIZE:							return "GL_MAX_TEXTURE_BUFFER_SIZE";
		case GL_MAX_PATCH_VERTICES:									return "GL_MAX_PATCH_VERTICES";
		case GL_MAX_TESS_GEN_LEVEL:									return "GL_MAX_TESS_GEN_LEVEL";
		case GL_MAX_TESS_CONTROL_UNIFORM_COMPONENTS:				return "GL_MAX_TESS_CONTROL_UNIFORM_COMPONENTS";
		case GL_MAX_TESS_EVALUATION_UNIFORM_COMPONENTS:				return "GL_MAX_TESS_EVALUATION_UNIFORM_COMPONENTS";
		case GL_MAX_TESS_CONTROL_TEXTURE_IMAGE_UNITS:				return "GL_MAX_TESS_CONTROL_TEXTURE_IMAGE_UNITS";
		case GL_MAX_TESS_EVALUATION_TEXTURE_IMAGE_UNITS:			return "GL_MAX_TESS_EVALUATION_TEXTURE_IMAGE_UNITS";
		case GL_MAX_TESS_CONTROL_OUTPUT_COMPONENTS:					return "GL_MAX_TESS_CONTROL_OUTPUT_COMPONENTS";
		case GL_MAX_TESS_PATCH_COMPONENTS:							return "GL_MAX_TESS_PATCH_COMPONENTS";
		case GL_MAX_TESS_CONTROL_TOTAL_OUTPUT_COMPONENTS:			return "GL_MAX_TESS_CONTROL_TOTAL_OUTPUT_COMPONENTS";
		case GL_MAX_TESS_EVALUATION_OUTPUT_COMPONENTS:				return "GL_MAX_TESS_EVALUATION_OUTPUT_COMPONENTS";
		case GL_MAX_TESS_CONTROL_UNIFORM_BLOCKS:					return "GL_MAX_TESS_CONTROL_UNIFORM_BLOCKS";
		case GL_MAX_TESS_EVALUATION_UNIFORM_BLOCKS:					return "GL_MAX_TESS_EVALUATION_UNIFORM_BLOCKS";
		case GL_MAX_TESS_CONTROL_INPUT_COMPONENTS:					return "GL_MAX_TESS_CONTROL_INPUT_COMPONENTS";
		case GL_MAX_TESS_EVALUATION_INPUT_COMPONENTS:				return "GL_MAX_TESS_EVALUATION_INPUT_COMPONENTS";
		case GL_MAX_TESS_CONTROL_ATOMIC_COUNTER_BUFFERS:			return "GL_MAX_TESS_CONTROL_ATOMIC_COUNTER_BUFFERS";
		case GL_MAX_TESS_EVALUATION_ATOMIC_COUNTER_BUFFERS:			return "GL_MAX_TESS_EVALUATION_ATOMIC_COUNTER_BUFFERS";
		case GL_MAX_TESS_CONTROL_ATOMIC_COUNTERS:					return "GL_MAX_TESS_CONTROL_ATOMIC_COUNTERS";
		case GL_MAX_TESS_EVALUATION_ATOMIC_COUNTERS:				return "GL_MAX_TESS_EVALUATION_ATOMIC_COUNTERS";
		case GL_MAX_TESS_CONTROL_IMAGE_UNIFORMS:					return "GL_MAX_TESS_CONTROL_IMAGE_UNIFORMS";
		case GL_MAX_TESS_EVALUATION_IMAGE_UNIFORMS:					return "GL_MAX_TESS_EVALUATION_IMAGE_UNIFORMS";
		case GL_MAX_COMBINED_TESS_EVALUATION_UNIFORM_COMPONENTS:	return "GL_MAX_COMBINED_TESS_EVALUATION_UNIFORM_COMPONENTS";
		case GL_MAX_TESS_EVALUATION_SHADER_STORAGE_BLOCKS:			return "GL_MAX_TESS_EVALUATION_SHADER_STORAGE_BLOCKS";
		case GL_MAX_COMBINED_TESS_CONTROL_UNIFORM_COMPONENTS:		return "GL_MAX_COMBINED_TESS_CONTROL_UNIFORM_COMPONENTS";
		case GL_MAX_TESS_CONTROL_SHADER_STORAGE_BLOCKS:				return "GL_MAX_TESS_CONTROL_SHADER_STORAGE_BLOCKS";
		case GL_PATCH_VERTICES:										return "GL_PATCH_VERTICES";
		case GL_PRIMITIVE_RESTART_FOR_PATCHES_SUPPORTED:			return "GL_PRIMITIVE_RESTART_FOR_PATCHES_SUPPORTED";
		case GL_TEXTURE_2D:											return "GL_TEXTURE_2D";
		case GL_CULL_FACE:											return "GL_CULL_FACE";
		case GL_BLEND:												return "GL_BLEND";
		case GL_DITHER:												return "GL_DITHER";
		case GL_STENCIL_TEST:										return "GL_STENCIL_TEST";
		case GL_DEPTH_TEST:											return "GL_DEPTH_TEST";
		case GL_SCISSOR_TEST:										return "GL_SCISSOR_TEST";
		case GL_POLYGON_OFFSET_FILL:								return "GL_POLYGON_OFFSET_FILL";
		case GL_SAMPLE_ALPHA_TO_COVERAGE:							return "GL_SAMPLE_ALPHA_TO_COVERAGE";
		case GL_SAMPLE_COVERAGE:									return "GL_SAMPLE_COVERAGE";
		case GL_PRIMITIVE_RESTART_FIXED_INDEX:						return "GL_PRIMITIVE_RESTART_FIXED_INDEX";
		case GL_RASTERIZER_DISCARD:									return "GL_RASTERIZER_DISCARD";
		case GL_FRAMEBUFFER_SRGB:									return "GL_FRAMEBUFFER_SRGB";
		case GL_SAMPLE_SHADING:										return "GL_SAMPLE_SHADING";
		case GL_DEPTH_CLAMP:										return "GL_DEPTH_CLAMP";
		case GL_PRIMITIVE_RESTART:									return "GL_PRIMITIVE_RESTART";
		case GL_SAMPLE_MASK:										return "GL_SAMPLE_MASK";
		case GL_DEBUG_OUTPUT:										return "GL_DEBUG_OUTPUT";
		case GL_DEBUG_OUTPUT_SYNCHRONOUS:							return "GL_DEBUG_OUTPUT_SYNCHRONOUS";
		case GL_BLEND_ADVANCED_COHERENT_KHR:						return "GL_BLEND_ADVANCED_COHERENT_KHR";
		default:													return DE_NULL;
	}
}

const char* getGettableIndexedStateName (int value)
{
	switch (value)
	{
		case GL_TRANSFORM_FEEDBACK_BUFFER_BINDING:	return "GL_TRANSFORM_FEEDBACK_BUFFER_BINDING";
		case GL_UNIFORM_BUFFER_BINDING:				return "GL_UNIFORM_BUFFER_BINDING";
		case GL_TRANSFORM_FEEDBACK_BUFFER_START:	return "GL_TRANSFORM_FEEDBACK_BUFFER_START";
		case GL_TRANSFORM_FEEDBACK_BUFFER_SIZE:		return "GL_TRANSFORM_FEEDBACK_BUFFER_SIZE";
		case GL_UNIFORM_BUFFER_START:				return "GL_UNIFORM_BUFFER_START";
		case GL_UNIFORM_BUFFER_SIZE:				return "GL_UNIFORM_BUFFER_SIZE";
		case GL_SAMPLE_MASK_VALUE:					return "GL_SAMPLE_MASK_VALUE";
		case GL_VERTEX_BINDING_OFFSET:				return "GL_VERTEX_BINDING_OFFSET";
		case GL_VERTEX_BINDING_STRIDE:				return "GL_VERTEX_BINDING_STRIDE";
		case GL_VERTEX_BINDING_DIVISOR:				return "GL_VERTEX_BINDING_DIVISOR";
		case GL_VERTEX_BINDING_BUFFER:				return "GL_VERTEX_BINDING_BUFFER";
		case GL_MAX_COMPUTE_WORK_GROUP_COUNT:		return "GL_MAX_COMPUTE_WORK_GROUP_COUNT";
		case GL_MAX_COMPUTE_WORK_GROUP_SIZE:		return "GL_MAX_COMPUTE_WORK_GROUP_SIZE";
		case GL_ATOMIC_COUNTER_BUFFER_BINDING:		return "GL_ATOMIC_COUNTER_BUFFER_BINDING";
		case GL_ATOMIC_COUNTER_BUFFER_START:		return "GL_ATOMIC_COUNTER_BUFFER_START";
		case GL_ATOMIC_COUNTER_BUFFER_SIZE:			return "GL_ATOMIC_COUNTER_BUFFER_SIZE";
		case GL_SHADER_STORAGE_BUFFER_BINDING:		return "GL_SHADER_STORAGE_BUFFER_BINDING";
		case GL_SHADER_STORAGE_BUFFER_START:		return "GL_SHADER_STORAGE_BUFFER_START";
		case GL_SHADER_STORAGE_BUFFER_SIZE:			return "GL_SHADER_STORAGE_BUFFER_SIZE";
		case GL_IMAGE_BINDING_NAME:					return "GL_IMAGE_BINDING_NAME";
		case GL_IMAGE_BINDING_LEVEL:				return "GL_IMAGE_BINDING_LEVEL";
		case GL_IMAGE_BINDING_LAYERED:				return "GL_IMAGE_BINDING_LAYERED";
		case GL_IMAGE_BINDING_LAYER:				return "GL_IMAGE_BINDING_LAYER";
		case GL_IMAGE_BINDING_ACCESS:				return "GL_IMAGE_BINDING_ACCESS";
		case GL_IMAGE_BINDING_FORMAT:				return "GL_IMAGE_BINDING_FORMAT";
		case GL_BLEND_EQUATION_RGB:					return "GL_BLEND_EQUATION_RGB";
		case GL_BLEND_EQUATION_ALPHA:				return "GL_BLEND_EQUATION_ALPHA";
		case GL_BLEND_SRC_RGB:						return "GL_BLEND_SRC_RGB";
		case GL_BLEND_SRC_ALPHA:					return "GL_BLEND_SRC_ALPHA";
		case GL_BLEND_DST_RGB:						return "GL_BLEND_DST_RGB";
		case GL_BLEND_DST_ALPHA:					return "GL_BLEND_DST_ALPHA";
		case GL_COLOR_WRITEMASK:					return "GL_COLOR_WRITEMASK";
		default:									return DE_NULL;
	}
}

const char* getGettableStringName (int value)
{
	switch (value)
	{
		case GL_EXTENSIONS:					return "GL_EXTENSIONS";
		case GL_RENDERER:					return "GL_RENDERER";
		case GL_SHADING_LANGUAGE_VERSION:	return "GL_SHADING_LANGUAGE_VERSION";
		case GL_VENDOR:						return "GL_VENDOR";
		case GL_VERSION:					return "GL_VERSION";
		default:							return DE_NULL;
	}
}

const char* getPointerStateName (int value)
{
	switch (value)
	{
		case GL_DEBUG_CALLBACK_FUNCTION:	return "GL_DEBUG_CALLBACK_FUNCTION";
		case GL_DEBUG_CALLBACK_USER_PARAM:	return "GL_DEBUG_CALLBACK_USER_PARAM";
		default:							return DE_NULL;
	}
}

const char* getInternalFormatParameterName (int value)
{
	switch (value)
	{
		case GL_NUM_SAMPLE_COUNTS:	return "GL_NUM_SAMPLE_COUNTS";
		case GL_SAMPLES:			return "GL_SAMPLES";
		default:					return DE_NULL;
	}
}

const char* getInternalFormatTargetName (int value)
{
	switch (value)
	{
		case GL_RENDERBUFFER:					return "GL_RENDERBUFFER";
		case GL_TEXTURE_2D_MULTISAMPLE:			return "GL_TEXTURE_2D_MULTISAMPLE";
		case GL_TEXTURE_2D_MULTISAMPLE_ARRAY:	return "GL_TEXTURE_2D_MULTISAMPLE_ARRAY";
		case GL_TEXTURE_2D:						return "GL_TEXTURE_2D";
		case GL_TEXTURE_3D:						return "GL_TEXTURE_3D";
		case GL_TEXTURE_2D_ARRAY:				return "GL_TEXTURE_2D_ARRAY";
		case GL_TEXTURE_CUBE_MAP:				return "GL_TEXTURE_CUBE_MAP";
		default:								return DE_NULL;
	}
}

const char* getMultisampleParameterName (int value)
{
	switch (value)
	{
		case GL_SAMPLE_POSITION:	return "GL_SAMPLE_POSITION";
		default:					return DE_NULL;
	}
}

const char* getQueryTargetName (int value)
{
	switch (value)
	{
		case GL_SAMPLES_PASSED:							return "GL_SAMPLES_PASSED";
		case GL_ANY_SAMPLES_PASSED:						return "GL_ANY_SAMPLES_PASSED";
		case GL_PRIMITIVES_GENERATED:					return "GL_PRIMITIVES_GENERATED";
		case GL_TRANSFORM_FEEDBACK_PRIMITIVES_WRITTEN:	return "GL_TRANSFORM_FEEDBACK_PRIMITIVES_WRITTEN";
		case GL_TIME_ELAPSED:							return "GL_TIME_ELAPSED";
		default:										return DE_NULL;
	}
}

const char* getQueryParamName (int value)
{
	switch (value)
	{
		case GL_CURRENT_QUERY:		return "GL_CURRENT_QUERY";
		case GL_QUERY_COUNTER_BITS:	return "GL_QUERY_COUNTER_BITS";
		default:					return DE_NULL;
	}
}

const char* getQueryObjectParamName (int value)
{
	switch (value)
	{
		case GL_QUERY_RESULT:			return "GL_QUERY_RESULT";
		case GL_QUERY_RESULT_AVAILABLE:	return "GL_QUERY_RESULT_AVAILABLE";
		default:						return DE_NULL;
	}
}

const char* getImageAccessName (int value)
{
	switch (value)
	{
		case GL_READ_ONLY:	return "GL_READ_ONLY";
		case GL_WRITE_ONLY:	return "GL_WRITE_ONLY";
		case GL_READ_WRITE:	return "GL_READ_WRITE";
		default:			return DE_NULL;
	}
}

const char* getProgramInterfaceName (int value)
{
	switch (value)
	{
		case GL_UNIFORM:					return "GL_UNIFORM";
		case GL_UNIFORM_BLOCK:				return "GL_UNIFORM_BLOCK";
		case GL_ATOMIC_COUNTER_BUFFER:		return "GL_ATOMIC_COUNTER_BUFFER";
		case GL_PROGRAM_INPUT:				return "GL_PROGRAM_INPUT";
		case GL_PROGRAM_OUTPUT:				return "GL_PROGRAM_OUTPUT";
		case GL_TRANSFORM_FEEDBACK_VARYING:	return "GL_TRANSFORM_FEEDBACK_VARYING";
		case GL_BUFFER_VARIABLE:			return "GL_BUFFER_VARIABLE";
		case GL_SHADER_STORAGE_BLOCK:		return "GL_SHADER_STORAGE_BLOCK";
		default:							return DE_NULL;
	}
}

const char* getProgramResourcePropertyName (int value)
{
	switch (value)
	{
		case GL_ACTIVE_VARIABLES:						return "GL_ACTIVE_VARIABLES";
		case GL_BUFFER_BINDING:							return "GL_BUFFER_BINDING";
		case GL_NUM_ACTIVE_VARIABLES:					return "GL_NUM_ACTIVE_VARIABLES";
		case GL_ARRAY_SIZE:								return "GL_ARRAY_SIZE";
		case GL_ARRAY_STRIDE:							return "GL_ARRAY_STRIDE";
		case GL_BLOCK_INDEX:							return "GL_BLOCK_INDEX";
		case GL_IS_ROW_MAJOR:							return "GL_IS_ROW_MAJOR";
		case GL_MATRIX_STRIDE:							return "GL_MATRIX_STRIDE";
		case GL_ATOMIC_COUNTER_BUFFER_INDEX:			return "GL_ATOMIC_COUNTER_BUFFER_INDEX";
		case GL_BUFFER_DATA_SIZE:						return "GL_BUFFER_DATA_SIZE";
		case GL_LOCATION:								return "GL_LOCATION";
		case GL_NAME_LENGTH:							return "GL_NAME_LENGTH";
		case GL_OFFSET:									return "GL_OFFSET";
		case GL_REFERENCED_BY_VERTEX_SHADER:			return "GL_REFERENCED_BY_VERTEX_SHADER";
		case GL_REFERENCED_BY_FRAGMENT_SHADER:			return "GL_REFERENCED_BY_FRAGMENT_SHADER";
		case GL_REFERENCED_BY_COMPUTE_SHADER:			return "GL_REFERENCED_BY_COMPUTE_SHADER";
		case GL_REFERENCED_BY_GEOMETRY_SHADER:			return "GL_REFERENCED_BY_GEOMETRY_SHADER";
		case GL_REFERENCED_BY_TESS_CONTROL_SHADER:		return "GL_REFERENCED_BY_TESS_CONTROL_SHADER";
		case GL_REFERENCED_BY_TESS_EVALUATION_SHADER:	return "GL_REFERENCED_BY_TESS_EVALUATION_SHADER";
		case GL_TOP_LEVEL_ARRAY_SIZE:					return "GL_TOP_LEVEL_ARRAY_SIZE";
		case GL_TOP_LEVEL_ARRAY_STRIDE:					return "GL_TOP_LEVEL_ARRAY_STRIDE";
		case GL_TYPE:									return "GL_TYPE";
		case GL_IS_PER_PATCH:							return "GL_IS_PER_PATCH";
		default:										return DE_NULL;
	}
}

const char* getPrecisionFormatTypeName (int value)
{
	switch (value)
	{
		case GL_LOW_FLOAT:		return "GL_LOW_FLOAT";
		case GL_MEDIUM_FLOAT:	return "GL_MEDIUM_FLOAT";
		case GL_HIGH_FLOAT:		return "GL_HIGH_FLOAT";
		case GL_LOW_INT:		return "GL_LOW_INT";
		case GL_MEDIUM_INT:		return "GL_MEDIUM_INT";
		case GL_HIGH_INT:		return "GL_HIGH_INT";
		default:				return DE_NULL;
	}
}

const char* getTransformFeedbackTargetName (int value)
{
	switch (value)
	{
		case GL_TRANSFORM_FEEDBACK:	return "GL_TRANSFORM_FEEDBACK";
		default:					return DE_NULL;
	}
}

const char* getProvokingVertexName (int value)
{
	switch (value)
	{
		case GL_FIRST_VERTEX_CONVENTION:	return "GL_FIRST_VERTEX_CONVENTION";
		case GL_LAST_VERTEX_CONVENTION:		return "GL_LAST_VERTEX_CONVENTION";
		case GL_UNDEFINED_VERTEX:			return "GL_UNDEFINED_VERTEX";
		default:							return DE_NULL;
	}
}

const char* getDebugMessageSourceName (int value)
{
	switch (value)
	{
		case GL_DEBUG_SOURCE_API:				return "GL_DEBUG_SOURCE_API";
		case GL_DEBUG_SOURCE_WINDOW_SYSTEM:		return "GL_DEBUG_SOURCE_WINDOW_SYSTEM";
		case GL_DEBUG_SOURCE_SHADER_COMPILER:	return "GL_DEBUG_SOURCE_SHADER_COMPILER";
		case GL_DEBUG_SOURCE_THIRD_PARTY:		return "GL_DEBUG_SOURCE_THIRD_PARTY";
		case GL_DEBUG_SOURCE_APPLICATION:		return "GL_DEBUG_SOURCE_APPLICATION";
		case GL_DEBUG_SOURCE_OTHER:				return "GL_DEBUG_SOURCE_OTHER";
		case GL_DONT_CARE:						return "GL_DONT_CARE";
		default:								return DE_NULL;
	}
}

const char* getDebugMessageTypeName (int value)
{
	switch (value)
	{
		case GL_DEBUG_TYPE_ERROR:				return "GL_DEBUG_TYPE_ERROR";
		case GL_DEBUG_TYPE_DEPRECATED_BEHAVIOR:	return "GL_DEBUG_TYPE_DEPRECATED_BEHAVIOR";
		case GL_DEBUG_TYPE_UNDEFINED_BEHAVIOR:	return "GL_DEBUG_TYPE_UNDEFINED_BEHAVIOR";
		case GL_DEBUG_TYPE_PORTABILITY:			return "GL_DEBUG_TYPE_PORTABILITY";
		case GL_DEBUG_TYPE_PERFORMANCE:			return "GL_DEBUG_TYPE_PERFORMANCE";
		case GL_DEBUG_TYPE_OTHER:				return "GL_DEBUG_TYPE_OTHER";
		case GL_DEBUG_TYPE_MARKER:				return "GL_DEBUG_TYPE_MARKER";
		case GL_DEBUG_TYPE_PUSH_GROUP:			return "GL_DEBUG_TYPE_PUSH_GROUP";
		case GL_DEBUG_TYPE_POP_GROUP:			return "GL_DEBUG_TYPE_POP_GROUP";
		case GL_DONT_CARE:						return "GL_DONT_CARE";
		default:								return DE_NULL;
	}
}

const char* getDebugMessageSeverityName (int value)
{
	switch (value)
	{
		case GL_DEBUG_SEVERITY_HIGH:			return "GL_DEBUG_SEVERITY_HIGH";
		case GL_DEBUG_SEVERITY_MEDIUM:			return "GL_DEBUG_SEVERITY_MEDIUM";
		case GL_DEBUG_SEVERITY_LOW:				return "GL_DEBUG_SEVERITY_LOW";
		case GL_DEBUG_SEVERITY_NOTIFICATION:	return "GL_DEBUG_SEVERITY_NOTIFICATION";
		case GL_DONT_CARE:						return "GL_DONT_CARE";
		default:								return DE_NULL;
	}
}

const char* getPipelineParamName (int value)
{
	switch (value)
	{
		case GL_ACTIVE_PROGRAM:			return "GL_ACTIVE_PROGRAM";
		case GL_INFO_LOG_LENGTH:		return "GL_INFO_LOG_LENGTH";
		case GL_VALIDATE_STATUS:		return "GL_VALIDATE_STATUS";
		case GL_VERTEX_SHADER:			return "GL_VERTEX_SHADER";
		case GL_FRAGMENT_SHADER:		return "GL_FRAGMENT_SHADER";
		case GL_COMPUTE_SHADER:			return "GL_COMPUTE_SHADER";
		case GL_GEOMETRY_SHADER:		return "GL_GEOMETRY_SHADER";
		case GL_TESS_CONTROL_SHADER:	return "GL_TESS_CONTROL_SHADER";
		case GL_TESS_EVALUATION_SHADER:	return "GL_TESS_EVALUATION_SHADER";
		default:						return DE_NULL;
	}
}

const char* getPatchParamName (int value)
{
	switch (value)
	{
		case GL_PATCH_VERTICES:	return "GL_PATCH_VERTICES";
		default:				return DE_NULL;
	}
}

const char* getTextureFormatName (int value)
{
	switch (value)
	{
		case GL_LUMINANCE:									return "GL_LUMINANCE";
		case GL_LUMINANCE_ALPHA:							return "GL_LUMINANCE_ALPHA";
		case GL_ALPHA:										return "GL_ALPHA";
		case GL_RGB:										return "GL_RGB";
		case GL_RGBA:										return "GL_RGBA";
		case GL_RGBA4:										return "GL_RGBA4";
		case GL_RGB5_A1:									return "GL_RGB5_A1";
		case GL_RGB565:										return "GL_RGB565";
		case GL_DEPTH_COMPONENT16:							return "GL_DEPTH_COMPONENT16";
		case GL_STENCIL_INDEX8:								return "GL_STENCIL_INDEX8";
		case GL_RG:											return "GL_RG";
		case GL_RED:										return "GL_RED";
		case GL_RGBA_INTEGER:								return "GL_RGBA_INTEGER";
		case GL_RGB_INTEGER:								return "GL_RGB_INTEGER";
		case GL_RG_INTEGER:									return "GL_RG_INTEGER";
		case GL_RED_INTEGER:								return "GL_RED_INTEGER";
		case GL_DEPTH_COMPONENT:							return "GL_DEPTH_COMPONENT";
		case GL_DEPTH_STENCIL:								return "GL_DEPTH_STENCIL";
		case GL_RGBA32F:									return "GL_RGBA32F";
		case GL_RGBA32I:									return "GL_RGBA32I";
		case GL_RGBA32UI:									return "GL_RGBA32UI";
		case GL_RGBA16:										return "GL_RGBA16";
		case GL_RGBA16_SNORM:								return "GL_RGBA16_SNORM";
		case GL_RGBA16F:									return "GL_RGBA16F";
		case GL_RGBA16I:									return "GL_RGBA16I";
		case GL_RGBA16UI:									return "GL_RGBA16UI";
		case GL_RGBA8:										return "GL_RGBA8";
		case GL_RGBA8I:										return "GL_RGBA8I";
		case GL_RGBA8UI:									return "GL_RGBA8UI";
		case GL_SRGB8_ALPHA8:								return "GL_SRGB8_ALPHA8";
		case GL_RGB10_A2:									return "GL_RGB10_A2";
		case GL_RGB10_A2UI:									return "GL_RGB10_A2UI";
		case GL_RGBA8_SNORM:								return "GL_RGBA8_SNORM";
		case GL_RGB8:										return "GL_RGB8";
		case GL_R11F_G11F_B10F:								return "GL_R11F_G11F_B10F";
		case GL_RGB32F:										return "GL_RGB32F";
		case GL_RGB32I:										return "GL_RGB32I";
		case GL_RGB32UI:									return "GL_RGB32UI";
		case GL_RGB16:										return "GL_RGB16";
		case GL_RGB16_SNORM:								return "GL_RGB16_SNORM";
		case GL_RGB16F:										return "GL_RGB16F";
		case GL_RGB16I:										return "GL_RGB16I";
		case GL_RGB16UI:									return "GL_RGB16UI";
		case GL_RGB8_SNORM:									return "GL_RGB8_SNORM";
		case GL_RGB8I:										return "GL_RGB8I";
		case GL_RGB8UI:										return "GL_RGB8UI";
		case GL_SRGB8:										return "GL_SRGB8";
		case GL_RGB9_E5:									return "GL_RGB9_E5";
		case GL_RG32F:										return "GL_RG32F";
		case GL_RG32I:										return "GL_RG32I";
		case GL_RG32UI:										return "GL_RG32UI";
		case GL_RG16:										return "GL_RG16";
		case GL_RG16_SNORM:									return "GL_RG16_SNORM";
		case GL_RG16F:										return "GL_RG16F";
		case GL_RG16I:										return "GL_RG16I";
		case GL_RG16UI:										return "GL_RG16UI";
		case GL_RG8:										return "GL_RG8";
		case GL_RG8I:										return "GL_RG8I";
		case GL_RG8UI:										return "GL_RG8UI";
		case GL_RG8_SNORM:									return "GL_RG8_SNORM";
		case GL_R32F:										return "GL_R32F";
		case GL_R32I:										return "GL_R32I";
		case GL_R32UI:										return "GL_R32UI";
		case GL_R16:										return "GL_R16";
		case GL_R16_SNORM:									return "GL_R16_SNORM";
		case GL_R16F:										return "GL_R16F";
		case GL_R16I:										return "GL_R16I";
		case GL_R16UI:										return "GL_R16UI";
		case GL_R8:											return "GL_R8";
		case GL_R8I:										return "GL_R8I";
		case GL_R8UI:										return "GL_R8UI";
		case GL_R8_SNORM:									return "GL_R8_SNORM";
		case GL_DEPTH_COMPONENT32F:							return "GL_DEPTH_COMPONENT32F";
		case GL_DEPTH_COMPONENT24:							return "GL_DEPTH_COMPONENT24";
		case GL_DEPTH32F_STENCIL8:							return "GL_DEPTH32F_STENCIL8";
		case GL_DEPTH24_STENCIL8:							return "GL_DEPTH24_STENCIL8";
		case GL_RGB10:										return "GL_RGB10";
		case GL_DEPTH_COMPONENT32:							return "GL_DEPTH_COMPONENT32";
		case GL_SRGB:										return "GL_SRGB";
		case GL_SRGB_ALPHA:									return "GL_SRGB_ALPHA";
		case GL_SR8_EXT:									return "GL_SR8_EXT";
		case GL_SRG8_EXT:									return "GL_SRG8_EXT";
		case GL_BGRA:										return "GL_BGRA";
		case GL_COMPRESSED_R11_EAC:							return "GL_COMPRESSED_R11_EAC";
		case GL_COMPRESSED_SIGNED_R11_EAC:					return "GL_COMPRESSED_SIGNED_R11_EAC";
		case GL_COMPRESSED_RG11_EAC:						return "GL_COMPRESSED_RG11_EAC";
		case GL_COMPRESSED_SIGNED_RG11_EAC:					return "GL_COMPRESSED_SIGNED_RG11_EAC";
		case GL_COMPRESSED_RGB8_ETC2:						return "GL_COMPRESSED_RGB8_ETC2";
		case GL_COMPRESSED_SRGB8_ETC2:						return "GL_COMPRESSED_SRGB8_ETC2";
		case GL_COMPRESSED_RGB8_PUNCHTHROUGH_ALPHA1_ETC2:	return "GL_COMPRESSED_RGB8_PUNCHTHROUGH_ALPHA1_ETC2";
		case GL_COMPRESSED_SRGB8_PUNCHTHROUGH_ALPHA1_ETC2:	return "GL_COMPRESSED_SRGB8_PUNCHTHROUGH_ALPHA1_ETC2";
		case GL_COMPRESSED_RGBA8_ETC2_EAC:					return "GL_COMPRESSED_RGBA8_ETC2_EAC";
		case GL_COMPRESSED_SRGB8_ALPHA8_ETC2_EAC:			return "GL_COMPRESSED_SRGB8_ALPHA8_ETC2_EAC";
		case GL_COMPRESSED_RGBA_ASTC_4x4_KHR:				return "GL_COMPRESSED_RGBA_ASTC_4x4_KHR";
		case GL_COMPRESSED_RGBA_ASTC_5x4_KHR:				return "GL_COMPRESSED_RGBA_ASTC_5x4_KHR";
		case GL_COMPRESSED_RGBA_ASTC_5x5_KHR:				return "GL_COMPRESSED_RGBA_ASTC_5x5_KHR";
		case GL_COMPRESSED_RGBA_ASTC_6x5_KHR:				return "GL_COMPRESSED_RGBA_ASTC_6x5_KHR";
		case GL_COMPRESSED_RGBA_ASTC_6x6_KHR:				return "GL_COMPRESSED_RGBA_ASTC_6x6_KHR";
		case GL_COMPRESSED_RGBA_ASTC_8x5_KHR:				return "GL_COMPRESSED_RGBA_ASTC_8x5_KHR";
		case GL_COMPRESSED_RGBA_ASTC_8x6_KHR:				return "GL_COMPRESSED_RGBA_ASTC_8x6_KHR";
		case GL_COMPRESSED_RGBA_ASTC_8x8_KHR:				return "GL_COMPRESSED_RGBA_ASTC_8x8_KHR";
		case GL_COMPRESSED_RGBA_ASTC_10x5_KHR:				return "GL_COMPRESSED_RGBA_ASTC_10x5_KHR";
		case GL_COMPRESSED_RGBA_ASTC_10x6_KHR:				return "GL_COMPRESSED_RGBA_ASTC_10x6_KHR";
		case GL_COMPRESSED_RGBA_ASTC_10x8_KHR:				return "GL_COMPRESSED_RGBA_ASTC_10x8_KHR";
		case GL_COMPRESSED_RGBA_ASTC_10x10_KHR:				return "GL_COMPRESSED_RGBA_ASTC_10x10_KHR";
		case GL_COMPRESSED_RGBA_ASTC_12x10_KHR:				return "GL_COMPRESSED_RGBA_ASTC_12x10_KHR";
		case GL_COMPRESSED_RGBA_ASTC_12x12_KHR:				return "GL_COMPRESSED_RGBA_ASTC_12x12_KHR";
		case GL_COMPRESSED_SRGB8_ALPHA8_ASTC_4x4_KHR:		return "GL_COMPRESSED_SRGB8_ALPHA8_ASTC_4x4_KHR";
		case GL_COMPRESSED_SRGB8_ALPHA8_ASTC_5x4_KHR:		return "GL_COMPRESSED_SRGB8_ALPHA8_ASTC_5x4_KHR";
		case GL_COMPRESSED_SRGB8_ALPHA8_ASTC_5x5_KHR:		return "GL_COMPRESSED_SRGB8_ALPHA8_ASTC_5x5_KHR";
		case GL_COMPRESSED_SRGB8_ALPHA8_ASTC_6x5_KHR:		return "GL_COMPRESSED_SRGB8_ALPHA8_ASTC_6x5_KHR";
		case GL_COMPRESSED_SRGB8_ALPHA8_ASTC_6x6_KHR:		return "GL_COMPRESSED_SRGB8_ALPHA8_ASTC_6x6_KHR";
		case GL_COMPRESSED_SRGB8_ALPHA8_ASTC_8x5_KHR:		return "GL_COMPRESSED_SRGB8_ALPHA8_ASTC_8x5_KHR";
		case GL_COMPRESSED_SRGB8_ALPHA8_ASTC_8x6_KHR:		return "GL_COMPRESSED_SRGB8_ALPHA8_ASTC_8x6_KHR";
		case GL_COMPRESSED_SRGB8_ALPHA8_ASTC_8x8_KHR:		return "GL_COMPRESSED_SRGB8_ALPHA8_ASTC_8x8_KHR";
		case GL_COMPRESSED_SRGB8_ALPHA8_ASTC_10x5_KHR:		return "GL_COMPRESSED_SRGB8_ALPHA8_ASTC_10x5_KHR";
		case GL_COMPRESSED_SRGB8_ALPHA8_ASTC_10x6_KHR:		return "GL_COMPRESSED_SRGB8_ALPHA8_ASTC_10x6_KHR";
		case GL_COMPRESSED_SRGB8_ALPHA8_ASTC_10x8_KHR:		return "GL_COMPRESSED_SRGB8_ALPHA8_ASTC_10x8_KHR";
		case GL_COMPRESSED_SRGB8_ALPHA8_ASTC_10x10_KHR:		return "GL_COMPRESSED_SRGB8_ALPHA8_ASTC_10x10_KHR";
		case GL_COMPRESSED_SRGB8_ALPHA8_ASTC_12x10_KHR:		return "GL_COMPRESSED_SRGB8_ALPHA8_ASTC_12x10_KHR";
		case GL_COMPRESSED_SRGB8_ALPHA8_ASTC_12x12_KHR:		return "GL_COMPRESSED_SRGB8_ALPHA8_ASTC_12x12_KHR";
		case GL_COMPRESSED_RGB_S3TC_DXT1_EXT:				return "GL_COMPRESSED_RGB_S3TC_DXT1_EXT";
		case GL_COMPRESSED_RGBA_S3TC_DXT1_EXT:				return "GL_COMPRESSED_RGBA_S3TC_DXT1_EXT";
		case GL_COMPRESSED_RGBA_S3TC_DXT3_EXT:				return "GL_COMPRESSED_RGBA_S3TC_DXT3_EXT";
		case GL_COMPRESSED_RGBA_S3TC_DXT5_EXT:				return "GL_COMPRESSED_RGBA_S3TC_DXT5_EXT";
		case GL_COMPRESSED_RGB_PVRTC_4BPPV1_IMG:			return "GL_COMPRESSED_RGB_PVRTC_4BPPV1_IMG";
		case GL_COMPRESSED_RGB_PVRTC_2BPPV1_IMG:			return "GL_COMPRESSED_RGB_PVRTC_2BPPV1_IMG";
		case GL_COMPRESSED_RGBA_PVRTC_4BPPV1_IMG:			return "GL_COMPRESSED_RGBA_PVRTC_4BPPV1_IMG";
		case GL_COMPRESSED_RGBA_PVRTC_2BPPV1_IMG:			return "GL_COMPRESSED_RGBA_PVRTC_2BPPV1_IMG";
		default:											return DE_NULL;
	}
}

tcu::Format::Bitfield<16> getBufferMaskStr (int value)
{
	static const tcu::Format::BitDesc s_desc[] =
	{
		tcu::Format::BitDesc(GL_DEPTH_BUFFER_BIT,	"GL_DEPTH_BUFFER_BIT"),
		tcu::Format::BitDesc(GL_STENCIL_BUFFER_BIT,	"GL_STENCIL_BUFFER_BIT"),
		tcu::Format::BitDesc(GL_COLOR_BUFFER_BIT,	"GL_COLOR_BUFFER_BIT"),
	};
	return tcu::Format::Bitfield<16>(value, &s_desc[0], &s_desc[DE_LENGTH_OF_ARRAY(s_desc)]);
}

tcu::Format::Bitfield<16> getBufferMapFlagsStr (int value)
{
	static const tcu::Format::BitDesc s_desc[] =
	{
		tcu::Format::BitDesc(GL_MAP_READ_BIT,				"GL_MAP_READ_BIT"),
		tcu::Format::BitDesc(GL_MAP_WRITE_BIT,				"GL_MAP_WRITE_BIT"),
		tcu::Format::BitDesc(GL_MAP_INVALIDATE_RANGE_BIT,	"GL_MAP_INVALIDATE_RANGE_BIT"),
		tcu::Format::BitDesc(GL_MAP_INVALIDATE_BUFFER_BIT,	"GL_MAP_INVALIDATE_BUFFER_BIT"),
		tcu::Format::BitDesc(GL_MAP_FLUSH_EXPLICIT_BIT,		"GL_MAP_FLUSH_EXPLICIT_BIT"),
		tcu::Format::BitDesc(GL_MAP_UNSYNCHRONIZED_BIT,		"GL_MAP_UNSYNCHRONIZED_BIT"),
	};
	return tcu::Format::Bitfield<16>(value, &s_desc[0], &s_desc[DE_LENGTH_OF_ARRAY(s_desc)]);
}

tcu::Format::Bitfield<16> getMemoryBarrierFlagsStr (int value)
{
	static const tcu::Format::BitDesc s_desc[] =
	{
		tcu::Format::BitDesc(GL_VERTEX_ATTRIB_ARRAY_BARRIER_BIT,	"GL_VERTEX_ATTRIB_ARRAY_BARRIER_BIT"),
		tcu::Format::BitDesc(GL_ELEMENT_ARRAY_BARRIER_BIT,			"GL_ELEMENT_ARRAY_BARRIER_BIT"),
		tcu::Format::BitDesc(GL_UNIFORM_BARRIER_BIT,				"GL_UNIFORM_BARRIER_BIT"),
		tcu::Format::BitDesc(GL_TEXTURE_FETCH_BARRIER_BIT,			"GL_TEXTURE_FETCH_BARRIER_BIT"),
		tcu::Format::BitDesc(GL_SHADER_IMAGE_ACCESS_BARRIER_BIT,	"GL_SHADER_IMAGE_ACCESS_BARRIER_BIT"),
		tcu::Format::BitDesc(GL_COMMAND_BARRIER_BIT,				"GL_COMMAND_BARRIER_BIT"),
		tcu::Format::BitDesc(GL_PIXEL_BUFFER_BARRIER_BIT,			"GL_PIXEL_BUFFER_BARRIER_BIT"),
		tcu::Format::BitDesc(GL_TEXTURE_UPDATE_BARRIER_BIT,			"GL_TEXTURE_UPDATE_BARRIER_BIT"),
		tcu::Format::BitDesc(GL_BUFFER_UPDATE_BARRIER_BIT,			"GL_BUFFER_UPDATE_BARRIER_BIT"),
		tcu::Format::BitDesc(GL_FRAMEBUFFER_BARRIER_BIT,			"GL_FRAMEBUFFER_BARRIER_BIT"),
		tcu::Format::BitDesc(GL_TRANSFORM_FEEDBACK_BARRIER_BIT,		"GL_TRANSFORM_FEEDBACK_BARRIER_BIT"),
		tcu::Format::BitDesc(GL_ATOMIC_COUNTER_BARRIER_BIT,			"GL_ATOMIC_COUNTER_BARRIER_BIT"),
	};
	return tcu::Format::Bitfield<16>(value, &s_desc[0], &s_desc[DE_LENGTH_OF_ARRAY(s_desc)]);
}

tcu::Format::Bitfield<16> getShaderTypeMaskStr (int value)
{
	static const tcu::Format::BitDesc s_desc[] =
	{
		tcu::Format::BitDesc(GL_VERTEX_SHADER_BIT,			"GL_VERTEX_SHADER_BIT"),
		tcu::Format::BitDesc(GL_FRAGMENT_SHADER_BIT,		"GL_FRAGMENT_SHADER_BIT"),
		tcu::Format::BitDesc(GL_COMPUTE_SHADER_BIT,			"GL_COMPUTE_SHADER_BIT"),
		tcu::Format::BitDesc(GL_GEOMETRY_SHADER_BIT,		"GL_GEOMETRY_SHADER_BIT"),
		tcu::Format::BitDesc(GL_TESS_CONTROL_SHADER_BIT,	"GL_TESS_CONTROL_SHADER_BIT"),
		tcu::Format::BitDesc(GL_TESS_EVALUATION_SHADER_BIT,	"GL_TESS_EVALUATION_SHADER_BIT"),
	};
	return tcu::Format::Bitfield<16>(value, &s_desc[0], &s_desc[DE_LENGTH_OF_ARRAY(s_desc)]);
}
