Files
MobileGL/MG/MG_UTIL/Debug/Debug.cpp
T

1223 lines
44 KiB
C++

//
// Created by BZLZHH on 2025/3/15.
//
#include "Debug.h"
#include "../../Includes.h"
namespace MG_Util::Debug {
static FILE* logFile;
const char* GetOSName() {
#ifdef _WIN32
return "Windows";
#elif __ANDROID__
return "Android";
#elif __APPLE__
return "macOS";
#elif __linux__
return "Linux";
#else
return "Unknown";
#endif
}
std::string GetCurrentThreadName() {
char buffer[256] = {0};
#ifdef _WIN32
PWSTR description = nullptr;
if (SUCCEEDED(GetThreadDescription(GetCurrentThread(), &description)) {
WideCharToMultiByte(CP_UTF8, 0, description, -1, buffer, sizeof(buffer), nullptr, nullptr);
LocalFree(description);
}
#elif defined(__ANDROID__) || defined(__linux__)
pthread_getname_np(pthread_self(), buffer, sizeof(buffer));
#elif defined(__APPLE__)
pthread_getname_np(buffer, sizeof(buffer));
#endif
return buffer[0] ? buffer : "Unknown Thread";
}
std::string GetCurrentTime() {
auto now = std::chrono::system_clock::now();
time_t tt = std::chrono::system_clock::to_time_t(now);
struct tm tm{};
#ifdef _WIN32
localtime_s(&tm, &tt);
#else
localtime_r(&tt, &tm);
#endif
char buffer[9]; // HH:MM:SS
strftime(buffer, sizeof(buffer), "%T", &tm);
return buffer;
}
template <typename LevelType>
void LogImpl(LevelType logLevel,
const char* levelTag,
const char* format,
int androidLevel,
va_list args) {
if (MG_Global::Common::LogLevel > logLevel) return;
std::string header = "[" + GetCurrentTime() + "] [" +
GetOSName() + " " +
GetCurrentThreadName() + "/" + levelTag + "]: ";
std::string full_format = header + format + "\n";
#ifdef __ANDROID__
__android_log_vprint(androidLevel, MG_Constants::RenderName, full_format.c_str(), args);
#endif
vprintf(full_format.c_str(), args);
va_list args_copy;
va_copy(args_copy, args);
LogWrite(full_format.c_str(), args);
va_end(args_copy);
}
#define DECLARE_LOG_FUNCTION(name, level) \
void Log##name(const char* format, ...) { \
va_list args; \
va_start(args, format); \
LogImpl(MG_Constants::Common::LOG_LEVEL_##level, \
#level, \
format, \
ANDROID_LOG_##level, \
args); \
va_end(args); \
}
DECLARE_LOG_FUNCTION(D, DEBUG)
DECLARE_LOG_FUNCTION(W, WARN)
DECLARE_LOG_FUNCTION(E, ERROR)
DECLARE_LOG_FUNCTION(I, INFO)
DECLARE_LOG_FUNCTION(F, FATAL)
#undef DECLARE_LOG_FUNCTION
void LogClear() {
if (!MG_Global::Common::LOG_FILE_PATH)
return;
logFile = fopen(MG_Global::Common::LOG_FILE_PATH, "w");
if (logFile == nullptr) {
return;
}
fclose(logFile);
}
void LogInit() {
if (!MG_Global::Common::LOG_FILE_PATH)
return;
LogClear();
logFile = fopen(MG_Global::Common::LOG_FILE_PATH, "a");
}
void LogWrite(const char* format, ...) {
if (!MG_Global::Common::LOG_FILE_PATH || logFile == nullptr)
return;
va_list args;
va_start(args, format);
vfprintf(logFile, format, args);
va_end(args);
fflush(logFile);
#if FORCE_SYNC_WITH_LOG_FILE == 1
int fd = fileno(logFile);
fsync(fd);
#endif
}
const char* GLEnumToString(::GLenum value) {
static char str[128];
switch (value) {
/* Boolean values */
/* Data types */
#define CASE(value) \
case value: return #value;
CASE(GL_BYTE)
CASE(GL_UNSIGNED_BYTE)
CASE(GL_SHORT)
CASE(GL_UNSIGNED_SHORT)
CASE(GL_INT)
CASE(GL_UNSIGNED_INT)
CASE(GL_FLOAT)
CASE(GL_2_BYTES)
CASE(GL_3_BYTES)
CASE(GL_4_BYTES)
CASE(GL_DOUBLE)
CASE(GL_UNSIGNED_BYTE_3_3_2)
CASE(GL_UNSIGNED_BYTE_2_3_3_REV)
CASE(GL_UNSIGNED_SHORT_5_6_5)
CASE(GL_UNSIGNED_SHORT_5_6_5_REV)
CASE(GL_UNSIGNED_SHORT_4_4_4_4)
CASE(GL_UNSIGNED_SHORT_4_4_4_4_REV)
CASE(GL_UNSIGNED_SHORT_5_5_5_1)
CASE(GL_UNSIGNED_SHORT_1_5_5_5_REV)
CASE(GL_UNSIGNED_INT_8_8_8_8)
CASE(GL_UNSIGNED_INT_8_8_8_8_REV)
CASE(GL_UNSIGNED_INT_10_10_10_2)
/* Primitives */
CASE(GL_LINE_LOOP)
CASE(GL_LINE_STRIP)
CASE(GL_TRIANGLES)
CASE(GL_TRIANGLE_STRIP)
CASE(GL_TRIANGLE_FAN)
CASE(GL_QUADS)
CASE(GL_QUAD_STRIP)
CASE(GL_POLYGON)
/* Vertex Arrays */
CASE(GL_VERTEX_ARRAY)
CASE(GL_NORMAL_ARRAY)
CASE(GL_COLOR_ARRAY)
CASE(GL_INDEX_ARRAY)
CASE(GL_TEXTURE_COORD_ARRAY)
CASE(GL_EDGE_FLAG_ARRAY)
CASE(GL_VERTEX_ARRAY_SIZE)
CASE(GL_VERTEX_ARRAY_TYPE)
CASE(GL_VERTEX_ARRAY_STRIDE)
CASE(GL_NORMAL_ARRAY_TYPE)
CASE(GL_NORMAL_ARRAY_STRIDE)
CASE(GL_COLOR_ARRAY_SIZE)
CASE(GL_COLOR_ARRAY_TYPE)
CASE(GL_COLOR_ARRAY_STRIDE)
CASE(GL_INDEX_ARRAY_TYPE)
CASE(GL_INDEX_ARRAY_STRIDE)
CASE(GL_TEXTURE_COORD_ARRAY_SIZE)
CASE(GL_TEXTURE_COORD_ARRAY_TYPE)
CASE(GL_TEXTURE_COORD_ARRAY_STRIDE)
CASE(GL_EDGE_FLAG_ARRAY_STRIDE)
CASE(GL_VERTEX_ARRAY_POINTER)
CASE(GL_NORMAL_ARRAY_POINTER)
CASE(GL_COLOR_ARRAY_POINTER)
CASE(GL_INDEX_ARRAY_POINTER)
CASE(GL_TEXTURE_COORD_ARRAY_POINTER)
CASE(GL_EDGE_FLAG_ARRAY_POINTER)
CASE(GL_V2F)
CASE(GL_V3F)
CASE(GL_C4UB_V2F)
CASE(GL_C4UB_V3F)
CASE(GL_C3F_V3F)
CASE(GL_N3F_V3F)
CASE(GL_C4F_N3F_V3F)
CASE(GL_T2F_V3F)
CASE(GL_T4F_V4F)
CASE(GL_T2F_C4UB_V3F)
CASE(GL_T2F_C3F_V3F)
CASE(GL_T2F_N3F_V3F)
CASE(GL_T2F_C4F_N3F_V3F)
CASE(GL_T4F_C4F_N3F_V4F)
/* Matrix Mode */
CASE(GL_MATRIX_MODE)
CASE(GL_MODELVIEW)
CASE(GL_PROJECTION)
CASE(GL_TEXTURE)
/* Points */
CASE(GL_POINT_SMOOTH)
CASE(GL_POINT_SIZE)
CASE(GL_POINT_SIZE_GRANULARITY)
CASE(GL_POINT_SIZE_RANGE)
/* Lines */
CASE(GL_LINE_SMOOTH)
CASE(GL_LINE_STIPPLE)
CASE(GL_LINE_STIPPLE_PATTERN)
CASE(GL_LINE_STIPPLE_REPEAT)
CASE(GL_LINE_WIDTH)
CASE(GL_LINE_WIDTH_GRANULARITY)
CASE(GL_LINE_WIDTH_RANGE)
/* Polygons */
CASE(GL_POINT)
CASE(GL_LINE)
CASE(GL_FILL)
CASE(GL_CW)
CASE(GL_CCW)
CASE(GL_FRONT)
CASE(GL_BACK)
CASE(GL_POLYGON_MODE)
CASE(GL_POLYGON_SMOOTH)
CASE(GL_POLYGON_STIPPLE)
CASE(GL_EDGE_FLAG)
CASE(GL_CULL_FACE)
CASE(GL_CULL_FACE_MODE)
CASE(GL_FRONT_FACE)
CASE(GL_POLYGON_OFFSET_FACTOR)
CASE(GL_POLYGON_OFFSET_UNITS)
CASE(GL_POLYGON_OFFSET_POINT)
CASE(GL_POLYGON_OFFSET_LINE)
CASE(GL_POLYGON_OFFSET_FILL)
/* Display Lists */
CASE(GL_COMPILE)
CASE(GL_COMPILE_AND_EXECUTE)
CASE(GL_LIST_BASE)
CASE(GL_LIST_INDEX)
CASE(GL_LIST_MODE)
/* Common buffer */
CASE(GL_NEVER)
CASE(GL_LESS)
CASE(GL_EQUAL)
CASE(GL_LEQUAL)
CASE(GL_GREATER)
CASE(GL_NOTEQUAL)
CASE(GL_GEQUAL)
CASE(GL_ALWAYS)
CASE(GL_DEPTH_TEST)
CASE(GL_DEPTH_BITS)
CASE(GL_DEPTH_CLEAR_VALUE)
CASE(GL_DEPTH_FUNC)
CASE(GL_DEPTH_RANGE)
CASE(GL_DEPTH_WRITEMASK)
CASE(GL_DEPTH_COMPONENT)
/* Lighting */
CASE(GL_LIGHTING)
CASE(GL_LIGHT0)
CASE(GL_LIGHT1)
CASE(GL_LIGHT2)
CASE(GL_LIGHT3)
CASE(GL_LIGHT4)
CASE(GL_LIGHT5)
CASE(GL_LIGHT6)
CASE(GL_LIGHT7)
CASE(GL_SPOT_EXPONENT)
CASE(GL_SPOT_CUTOFF)
CASE(GL_CONSTANT_ATTENUATION)
CASE(GL_LINEAR_ATTENUATION)
CASE(GL_QUADRATIC_ATTENUATION)
CASE(GL_AMBIENT)
CASE(GL_DIFFUSE)
CASE(GL_SPECULAR)
CASE(GL_SHININESS)
CASE(GL_EMISSION)
CASE(GL_POSITION)
CASE(GL_SPOT_DIRECTION)
CASE(GL_AMBIENT_AND_DIFFUSE)
CASE(GL_COLOR_INDEXES)
CASE(GL_LIGHT_MODEL_TWO_SIDE)
CASE(GL_LIGHT_MODEL_LOCAL_VIEWER)
CASE(GL_LIGHT_MODEL_AMBIENT)
CASE(GL_FRONT_AND_BACK)
CASE(GL_SHADE_MODEL)
CASE(GL_FLAT)
CASE(GL_SMOOTH)
CASE(GL_COLOR_MATERIAL)
CASE(GL_COLOR_MATERIAL_FACE)
CASE(GL_COLOR_MATERIAL_PARAMETER)
CASE(GL_NORMALIZE)
/* User clipping planes */
CASE(GL_CLIP_PLANE0)
CASE(GL_CLIP_PLANE1)
CASE(GL_CLIP_PLANE2)
CASE(GL_CLIP_PLANE3)
CASE(GL_CLIP_PLANE4)
CASE(GL_CLIP_PLANE5)
/* Accumulation buffer */
CASE(GL_ACCUM_RED_BITS)
CASE(GL_ACCUM_GREEN_BITS)
CASE(GL_ACCUM_BLUE_BITS)
CASE(GL_ACCUM_ALPHA_BITS)
CASE(GL_ACCUM_CLEAR_VALUE)
CASE(GL_ACCUM)
CASE(GL_ADD)
CASE(GL_LOAD)
CASE(GL_MULT)
CASE(GL_RETURN)
/* Alpha testing */
CASE(GL_ALPHA_TEST)
CASE(GL_ALPHA_TEST_REF)
CASE(GL_ALPHA_TEST_FUNC)
/* Blending */
CASE(GL_BLEND)
CASE(GL_BLEND_SRC)
CASE(GL_BLEND_DST)
CASE(GL_ZERO)
CASE(GL_ONE)
CASE(GL_SRC_COLOR)
CASE(GL_ONE_MINUS_SRC_COLOR)
CASE(GL_SRC_ALPHA)
CASE(GL_ONE_MINUS_SRC_ALPHA)
CASE(GL_DST_ALPHA)
CASE(GL_ONE_MINUS_DST_ALPHA)
CASE(GL_DST_COLOR)
CASE(GL_ONE_MINUS_DST_COLOR)
CASE(GL_SRC_ALPHA_SATURATE)
/* Render Mode */
CASE(GL_FEEDBACK)
CASE(GL_RENDER)
CASE(GL_SELECT)
/* Feedback */
CASE(GL_2D)
CASE(GL_3D)
CASE(GL_3D_COLOR)
CASE(GL_3D_COLOR_TEXTURE)
CASE(GL_4D_COLOR_TEXTURE)
CASE(GL_POINT_TOKEN)
CASE(GL_LINE_TOKEN)
CASE(GL_LINE_RESET_TOKEN)
CASE(GL_POLYGON_TOKEN)
CASE(GL_BITMAP_TOKEN)
CASE(GL_DRAW_PIXEL_TOKEN)
CASE(GL_COPY_PIXEL_TOKEN)
CASE(GL_PASS_THROUGH_TOKEN)
CASE(GL_FEEDBACK_BUFFER_POINTER)
CASE(GL_FEEDBACK_BUFFER_SIZE)
CASE(GL_FEEDBACK_BUFFER_TYPE)
/* Selection */
CASE(GL_SELECTION_BUFFER_POINTER)
CASE(GL_SELECTION_BUFFER_SIZE)
/* Fog */
CASE(GL_FOG)
CASE(GL_FOG_MODE)
CASE(GL_FOG_DENSITY)
CASE(GL_FOG_COLOR)
CASE(GL_FOG_INDEX)
CASE(GL_FOG_START)
CASE(GL_FOG_END)
CASE(GL_LINEAR)
CASE(GL_EXP)
CASE(GL_EXP2)
/* Logic Ops */
CASE(GL_INDEX_LOGIC_OP)
CASE(GL_COLOR_LOGIC_OP)
CASE(GL_LOGIC_OP_MODE)
CASE(GL_CLEAR)
CASE(GL_SET)
CASE(GL_COPY)
CASE(GL_COPY_INVERTED)
CASE(GL_NOOP)
CASE(GL_INVERT)
CASE(GL_AND)
CASE(GL_NAND)
CASE(GL_OR)
CASE(GL_NOR)
CASE(GL_XOR)
CASE(GL_EQUIV)
CASE(GL_AND_REVERSE)
CASE(GL_AND_INVERTED)
CASE(GL_OR_REVERSE)
CASE(GL_OR_INVERTED)
/* Stencil */
CASE(GL_STENCIL_BITS)
CASE(GL_STENCIL_TEST)
CASE(GL_STENCIL_CLEAR_VALUE)
CASE(GL_STENCIL_FUNC)
CASE(GL_STENCIL_VALUE_MASK)
CASE(GL_STENCIL_FAIL)
CASE(GL_STENCIL_PASS_DEPTH_FAIL)
CASE(GL_STENCIL_PASS_DEPTH_PASS)
CASE(GL_STENCIL_REF)
CASE(GL_STENCIL_WRITEMASK)
CASE(GL_STENCIL_INDEX)
CASE(GL_KEEP)
CASE(GL_REPLACE)
CASE(GL_INCR)
CASE(GL_DECR)
/* Buffers, Pixel Drawing/Reading */
CASE(GL_LEFT)
CASE(GL_RIGHT)
CASE(GL_FRONT_LEFT)
CASE(GL_FRONT_RIGHT)
CASE(GL_BACK_LEFT)
CASE(GL_BACK_RIGHT)
CASE(GL_AUX0)
CASE(GL_AUX1)
CASE(GL_AUX2)
CASE(GL_AUX3)
CASE(GL_COLOR_INDEX)
CASE(GL_RED)
CASE(GL_GREEN)
CASE(GL_BLUE)
CASE(GL_ALPHA)
CASE(GL_LUMINANCE)
CASE(GL_LUMINANCE_ALPHA)
CASE(GL_ALPHA_BITS)
CASE(GL_RED_BITS)
CASE(GL_GREEN_BITS)
CASE(GL_BLUE_BITS)
CASE(GL_INDEX_BITS)
CASE(GL_SUBPIXEL_BITS)
CASE(GL_AUX_BUFFERS)
CASE(GL_READ_BUFFER)
CASE(GL_DRAW_BUFFER)
CASE(GL_DOUBLEBUFFER)
CASE(GL_STEREO)
CASE(GL_BITMAP)
CASE(GL_COLOR)
CASE(GL_DEPTH)
CASE(GL_STENCIL)
CASE(GL_DITHER)
CASE(GL_RGB)
CASE(GL_RGBA)
/* Implementation limits */
CASE(GL_MAX_LIST_NESTING)
CASE(GL_MAX_EVAL_ORDER)
CASE(GL_MAX_LIGHTS)
CASE(GL_MAX_CLIP_PLANES)
CASE(GL_MAX_TEXTURE_SIZE)
CASE(GL_MAX_PIXEL_MAP_TABLE)
CASE(GL_MAX_ATTRIB_STACK_DEPTH)
CASE(GL_MAX_MODELVIEW_STACK_DEPTH)
CASE(GL_MAX_NAME_STACK_DEPTH)
CASE(GL_MAX_PROJECTION_STACK_DEPTH)
CASE(GL_MAX_TEXTURE_STACK_DEPTH)
CASE(GL_MAX_VIEWPORT_DIMS)
CASE(GL_MAX_CLIENT_ATTRIB_STACK_DEPTH)
/* Gets */
CASE(GL_ATTRIB_STACK_DEPTH)
CASE(GL_CLIENT_ATTRIB_STACK_DEPTH)
CASE(GL_COLOR_CLEAR_VALUE)
CASE(GL_COLOR_WRITEMASK)
CASE(GL_CURRENT_INDEX)
CASE(GL_CURRENT_COLOR)
CASE(GL_CURRENT_NORMAL)
CASE(GL_CURRENT_RASTER_COLOR)
CASE(GL_CURRENT_RASTER_DISTANCE)
CASE(GL_CURRENT_RASTER_INDEX)
CASE(GL_CURRENT_RASTER_POSITION)
CASE(GL_CURRENT_RASTER_TEXTURE_COORDS)
CASE(GL_CURRENT_RASTER_POSITION_VALID)
CASE(GL_CURRENT_TEXTURE_COORDS)
CASE(GL_INDEX_CLEAR_VALUE)
CASE(GL_INDEX_MODE)
CASE(GL_INDEX_WRITEMASK)
CASE(GL_MODELVIEW_MATRIX)
CASE(GL_MODELVIEW_STACK_DEPTH)
CASE(GL_NAME_STACK_DEPTH)
CASE(GL_PROJECTION_MATRIX)
CASE(GL_PROJECTION_STACK_DEPTH)
CASE(GL_RENDER_MODE)
CASE(GL_RGBA_MODE)
CASE(GL_TEXTURE_MATRIX)
CASE(GL_TEXTURE_STACK_DEPTH)
CASE(GL_VIEWPORT)
/* Evaluators */
CASE(GL_AUTO_NORMAL)
CASE(GL_MAP1_COLOR_4)
CASE(GL_MAP1_INDEX)
CASE(GL_MAP1_NORMAL)
CASE(GL_MAP1_TEXTURE_COORD_1)
CASE(GL_MAP1_TEXTURE_COORD_2)
CASE(GL_MAP1_TEXTURE_COORD_3)
CASE(GL_MAP1_TEXTURE_COORD_4)
CASE(GL_MAP1_VERTEX_3)
CASE(GL_MAP1_VERTEX_4)
CASE(GL_MAP2_COLOR_4)
CASE(GL_MAP2_INDEX)
CASE(GL_MAP2_NORMAL)
CASE(GL_MAP2_TEXTURE_COORD_1)
CASE(GL_MAP2_TEXTURE_COORD_2)
CASE(GL_MAP2_TEXTURE_COORD_3)
CASE(GL_MAP2_TEXTURE_COORD_4)
CASE(GL_MAP2_VERTEX_3)
CASE(GL_MAP2_VERTEX_4)
CASE(GL_MAP1_GRID_DOMAIN)
CASE(GL_MAP1_GRID_SEGMENTS)
CASE(GL_MAP2_GRID_DOMAIN)
CASE(GL_MAP2_GRID_SEGMENTS)
CASE(GL_COEFF)
CASE(GL_ORDER)
CASE(GL_DOMAIN)
/* Hints */
CASE(GL_PERSPECTIVE_CORRECTION_HINT)
CASE(GL_POINT_SMOOTH_HINT)
CASE(GL_LINE_SMOOTH_HINT)
CASE(GL_POLYGON_SMOOTH_HINT)
CASE(GL_FOG_HINT)
CASE(GL_DONT_CARE)
CASE(GL_FASTEST)
CASE(GL_NICEST)
/* Scissor box */
CASE(GL_SCISSOR_BOX)
CASE(GL_SCISSOR_TEST)
/* Pixel Mode / Transfer */
CASE(GL_MAP_COLOR)
CASE(GL_MAP_STENCIL)
CASE(GL_INDEX_SHIFT)
CASE(GL_INDEX_OFFSET)
CASE(GL_RED_SCALE)
CASE(GL_RED_BIAS)
CASE(GL_GREEN_SCALE)
CASE(GL_GREEN_BIAS)
CASE(GL_BLUE_SCALE)
CASE(GL_BLUE_BIAS)
CASE(GL_ALPHA_SCALE)
CASE(GL_ALPHA_BIAS)
CASE(GL_DEPTH_SCALE)
CASE(GL_DEPTH_BIAS)
CASE(GL_PIXEL_MAP_S_TO_S_SIZE)
CASE(GL_PIXEL_MAP_I_TO_I_SIZE)
CASE(GL_PIXEL_MAP_I_TO_R_SIZE)
CASE(GL_PIXEL_MAP_I_TO_G_SIZE)
CASE(GL_PIXEL_MAP_I_TO_B_SIZE)
CASE(GL_PIXEL_MAP_I_TO_A_SIZE)
CASE(GL_PIXEL_MAP_R_TO_R_SIZE)
CASE(GL_PIXEL_MAP_G_TO_G_SIZE)
CASE(GL_PIXEL_MAP_B_TO_B_SIZE)
CASE(GL_PIXEL_MAP_A_TO_A_SIZE)
CASE(GL_PIXEL_MAP_S_TO_S)
CASE(GL_PIXEL_MAP_I_TO_I)
CASE(GL_PIXEL_MAP_I_TO_R)
CASE(GL_PIXEL_MAP_I_TO_G)
CASE(GL_PIXEL_MAP_I_TO_B)
CASE(GL_PIXEL_MAP_I_TO_A)
CASE(GL_PIXEL_MAP_R_TO_R)
CASE(GL_PIXEL_MAP_G_TO_G)
CASE(GL_PIXEL_MAP_B_TO_B)
CASE(GL_PIXEL_MAP_A_TO_A)
CASE(GL_PACK_ALIGNMENT)
CASE(GL_PACK_LSB_FIRST)
CASE(GL_PACK_ROW_LENGTH)
CASE(GL_PACK_SKIP_PIXELS)
CASE(GL_PACK_SKIP_ROWS)
CASE(GL_PACK_SWAP_BYTES)
CASE(GL_UNPACK_ALIGNMENT)
CASE(GL_UNPACK_LSB_FIRST)
CASE(GL_UNPACK_ROW_LENGTH)
CASE(GL_UNPACK_SKIP_PIXELS)
CASE(GL_UNPACK_SKIP_ROWS)
CASE(GL_UNPACK_SWAP_BYTES)
CASE(GL_ZOOM_X)
CASE(GL_ZOOM_Y)
/* Texture mapping */
CASE(GL_TEXTURE_ENV)
CASE(GL_TEXTURE_ENV_MODE)
CASE(GL_TEXTURE_1D)
CASE(GL_TEXTURE_2D)
CASE(GL_TEXTURE_WRAP_S)
CASE(GL_TEXTURE_WRAP_T)
CASE(GL_TEXTURE_MAG_FILTER)
CASE(GL_TEXTURE_MIN_FILTER)
CASE(GL_TEXTURE_ENV_COLOR)
CASE(GL_TEXTURE_GEN_S)
CASE(GL_TEXTURE_GEN_T)
CASE(GL_TEXTURE_GEN_R)
CASE(GL_TEXTURE_GEN_Q)
CASE(GL_TEXTURE_GEN_MODE)
CASE(GL_TEXTURE_BORDER_COLOR)
CASE(GL_TEXTURE_WIDTH)
CASE(GL_TEXTURE_HEIGHT)
CASE(GL_TEXTURE_BORDER)
CASE(GL_TEXTURE_COMPONENTS)
CASE(GL_TEXTURE_RED_SIZE)
CASE(GL_TEXTURE_GREEN_SIZE)
CASE(GL_TEXTURE_BLUE_SIZE)
CASE(GL_TEXTURE_ALPHA_SIZE)
CASE(GL_TEXTURE_LUMINANCE_SIZE)
CASE(GL_TEXTURE_INTENSITY_SIZE)
CASE(GL_NEAREST_MIPMAP_NEAREST)
CASE(GL_NEAREST_MIPMAP_LINEAR)
CASE(GL_LINEAR_MIPMAP_NEAREST)
CASE(GL_LINEAR_MIPMAP_LINEAR)
CASE(GL_OBJECT_LINEAR)
CASE(GL_OBJECT_PLANE)
CASE(GL_EYE_LINEAR)
CASE(GL_EYE_PLANE)
CASE(GL_SPHERE_MAP)
CASE(GL_DECAL)
CASE(GL_MODULATE)
CASE(GL_NEAREST)
CASE(GL_REPEAT)
CASE(GL_CLAMP)
CASE(GL_S)
CASE(GL_T)
CASE(GL_R)
CASE(GL_Q)
/* Utility */
CASE(GL_VENDOR)
CASE(GL_RENDERER)
CASE(GL_VERSION)
CASE(GL_EXTENSIONS)
/* Errors */
CASE(GL_INVALID_ENUM)
CASE(GL_INVALID_VALUE)
CASE(GL_INVALID_OPERATION)
CASE(GL_STACK_OVERFLOW)
CASE(GL_STACK_UNDERFLOW)
CASE(GL_OUT_OF_MEMORY)
/* OpenGL 1.1 */
CASE(GL_PROXY_TEXTURE_1D)
CASE(GL_PROXY_TEXTURE_2D)
CASE(GL_TEXTURE_PRIORITY)
CASE(GL_TEXTURE_RESIDENT)
CASE(GL_TEXTURE_BINDING_1D)
CASE(GL_TEXTURE_BINDING_2D)
CASE(GL_ALPHA4)
CASE(GL_ALPHA8)
CASE(GL_ALPHA12)
CASE(GL_ALPHA16)
CASE(GL_LUMINANCE4)
CASE(GL_LUMINANCE8)
CASE(GL_LUMINANCE12)
CASE(GL_LUMINANCE16)
CASE(GL_LUMINANCE4_ALPHA4)
CASE(GL_LUMINANCE6_ALPHA2)
CASE(GL_LUMINANCE8_ALPHA8)
CASE(GL_LUMINANCE12_ALPHA4)
CASE(GL_LUMINANCE12_ALPHA12)
CASE(GL_LUMINANCE16_ALPHA16)
CASE(GL_INTENSITY)
CASE(GL_INTENSITY4)
CASE(GL_INTENSITY8)
CASE(GL_INTENSITY12)
CASE(GL_INTENSITY16)
CASE(GL_R3_G3_B2)
CASE(GL_RGB4)
CASE(GL_RGB5)
CASE(GL_RGB8)
CASE(GL_RGB10)
CASE(GL_RGB12)
CASE(GL_RGB16)
CASE(GL_RGBA2)
CASE(GL_RGBA4)
CASE(GL_RGB5_A1)
CASE(GL_RGBA8)
CASE(GL_RGB10_A2)
CASE(GL_RGBA12)
CASE(GL_RGBA16)
/* Buffers Array */
CASE(GL_BUFFER_SIZE)
CASE(GL_BUFFER_USAGE)
CASE(GL_QUERY_COUNTER_BITS)
CASE(GL_CURRENT_QUERY)
CASE(GL_QUERY_RESULT)
CASE(GL_QUERY_RESULT_AVAILABLE)
CASE(GL_ARRAY_BUFFER)
CASE(GL_ELEMENT_ARRAY_BUFFER)
CASE(GL_ARRAY_BUFFER_BINDING)
CASE(GL_ELEMENT_ARRAY_BUFFER_BINDING)
CASE(GL_VERTEX_ATTRIB_ARRAY_BUFFER_BINDING)
CASE(GL_READ_ONLY)
CASE(GL_WRITE_ONLY)
CASE(GL_READ_WRITE)
CASE(GL_BUFFER_ACCESS)
CASE(GL_BUFFER_MAPPED)
CASE(GL_BUFFER_MAP_POINTER)
CASE(GL_STREAM_DRAW)
CASE(GL_STREAM_READ)
CASE(GL_STREAM_COPY)
CASE(GL_STATIC_DRAW)
CASE(GL_STATIC_READ)
CASE(GL_STATIC_COPY)
CASE(GL_DYNAMIC_DRAW)
CASE(GL_DYNAMIC_READ)
CASE(GL_DYNAMIC_COPY)
CASE(GL_VERTEX_ARRAY_BUFFER_BINDING)
CASE(GL_NORMAL_ARRAY_BUFFER_BINDING)
CASE(GL_COLOR_ARRAY_BUFFER_BINDING)
CASE(GL_INDEX_ARRAY_BUFFER_BINDING)
CASE(GL_TEXTURE_COORD_ARRAY_BUFFER_BINDING)
CASE(GL_EDGE_FLAG_ARRAY_BUFFER_BINDING)
CASE(GL_SECONDARY_COLOR_ARRAY_BUFFER_BINDING)
CASE(GL_FOG_COORDINATE_ARRAY_BUFFER_BINDING)
CASE(GL_WEIGHT_ARRAY_BUFFER_BINDING)
// CASE(GL_MAP_READ_BIT)
// CASE(GL_MAP_WRITE_BIT)
CASE(GL_BUFFER_ACCESS_FLAGS)
CASE(GL_BUFFER_MAP_LENGTH)
CASE(GL_BUFFER_MAP_OFFSET)
// CASE(GL_READ_ONLY)
// CASE(GL_WRITE_ONLY)
// CASE(GL_READ_WRITE)
CASE(GL_PIXEL_PACK_BUFFER)
CASE(GL_PIXEL_UNPACK_BUFFER)
CASE(GL_PIXEL_UNPACK_BUFFER_BINDING)
CASE(GL_PIXEL_PACK_BUFFER_BINDING)
CASE(GL_CURRENT_VERTEX_ATTRIB)
CASE(GL_MAP_PERSISTENT_BIT)
CASE(GL_QUERY_BUFFER_BINDING_AMD)
CASE(GL_COPY_READ_BUFFER)
CASE(GL_COPY_WRITE_BUFFER)
// CASE(GL_READ_BUFFER)
// CASE(GL_UNPACK_ROW_LENGTH)
// CASE(GL_UNPACK_SKIP_ROWS)
// CASE(GL_UNPACK_SKIP_PIXELS)
// CASE(GL_PACK_ROW_LENGTH)
// CASE(GL_PACK_SKIP_ROWS)
// CASE(GL_PACK_SKIP_PIXELS)
// CASE(GL_COLOR)
// CASE(GL_DEPTH)
// CASE(GL_STENCIL)
// CASE(GL_RED)
// CASE(GL_RGB8)
// CASE(GL_RGBA8)
// CASE(GL_RGB10_A2)
CASE(GL_TEXTURE_BINDING_3D)
CASE(GL_UNPACK_SKIP_IMAGES)
CASE(GL_UNPACK_IMAGE_HEIGHT)
CASE(GL_TEXTURE_3D)
CASE(GL_TEXTURE_WRAP_R)
CASE(GL_MAX_3D_TEXTURE_SIZE)
CASE(GL_UNSIGNED_INT_2_10_10_10_REV)
CASE(GL_MAX_ELEMENTS_VERTICES)
CASE(GL_MAX_ELEMENTS_INDICES)
CASE(GL_TEXTURE_MIN_LOD)
CASE(GL_TEXTURE_MAX_LOD)
CASE(GL_TEXTURE_BASE_LEVEL)
CASE(GL_TEXTURE_MAX_LEVEL)
CASE(GL_MIN)
CASE(GL_MAX)
CASE(GL_DEPTH_COMPONENT24)
CASE(GL_MAX_TEXTURE_LOD_BIAS)
CASE(GL_TEXTURE_COMPARE_MODE)
CASE(GL_TEXTURE_COMPARE_FUNC)
// CASE(GL_CURRENT_QUERY)
// CASE(GL_QUERY_RESULT)
// CASE(GL_QUERY_RESULT_AVAILABLE)
// CASE(GL_BUFFER_MAPPED)
// CASE(GL_BUFFER_MAP_POINTER)
// CASE(GL_STREAM_READ)
// CASE(GL_STREAM_COPY)
// CASE(GL_STATIC_READ)
// CASE(GL_STATIC_COPY)
// CASE(GL_DYNAMIC_READ)
// CASE(GL_DYNAMIC_COPY)
CASE(GL_MAX_DRAW_BUFFERS)
CASE(GL_DRAW_BUFFER0)
CASE(GL_DRAW_BUFFER1)
CASE(GL_DRAW_BUFFER2)
CASE(GL_DRAW_BUFFER3)
CASE(GL_DRAW_BUFFER4)
CASE(GL_DRAW_BUFFER5)
CASE(GL_DRAW_BUFFER6)
CASE(GL_DRAW_BUFFER7)
CASE(GL_DRAW_BUFFER8)
CASE(GL_DRAW_BUFFER9)
CASE(GL_DRAW_BUFFER10)
CASE(GL_DRAW_BUFFER11)
CASE(GL_DRAW_BUFFER12)
CASE(GL_DRAW_BUFFER13)
CASE(GL_DRAW_BUFFER14)
CASE(GL_DRAW_BUFFER15)
CASE(GL_MAX_FRAGMENT_UNIFORM_COMPONENTS)
CASE(GL_MAX_VERTEX_UNIFORM_COMPONENTS)
CASE(GL_SAMPLER_3D)
CASE(GL_SAMPLER_2D_SHADOW)
CASE(GL_FRAGMENT_SHADER_DERIVATIVE_HINT)
// CASE(GL_PIXEL_PACK_BUFFER)
// CASE(GL_PIXEL_UNPACK_BUFFER)
// CASE(GL_PIXEL_PACK_BUFFER_BINDING)
// CASE(GL_PIXEL_UNPACK_BUFFER_BINDING)
CASE(GL_FLOAT_MAT2x3)
CASE(GL_FLOAT_MAT2x4)
CASE(GL_FLOAT_MAT3x2)
CASE(GL_FLOAT_MAT3x4)
CASE(GL_FLOAT_MAT4x2)
CASE(GL_FLOAT_MAT4x3)
CASE(GL_SRGB)
CASE(GL_SRGB8)
CASE(GL_SRGB8_ALPHA8)
CASE(GL_COMPARE_REF_TO_TEXTURE)
CASE(GL_MAJOR_VERSION)
CASE(GL_MINOR_VERSION)
CASE(GL_NUM_EXTENSIONS)
CASE(GL_RGBA32F)
CASE(GL_RGB32F)
CASE(GL_RGBA16F)
CASE(GL_RGB16F)
CASE(GL_VERTEX_ATTRIB_ARRAY_INTEGER)
CASE(GL_MAX_ARRAY_TEXTURE_LAYERS)
CASE(GL_MIN_PROGRAM_TEXEL_OFFSET)
CASE(GL_MAX_PROGRAM_TEXEL_OFFSET)
CASE(GL_MAX_VARYING_COMPONENTS)
CASE(GL_TEXTURE_2D_ARRAY)
CASE(GL_TEXTURE_BINDING_2D_ARRAY)
CASE(GL_R11F_G11F_B10F)
CASE(GL_UNSIGNED_INT_10F_11F_11F_REV)
CASE(GL_RGB9_E5)
CASE(GL_UNSIGNED_INT_5_9_9_9_REV)
CASE(GL_TRANSFORM_FEEDBACK_VARYING_MAX_LENGTH)
CASE(GL_TRANSFORM_FEEDBACK_BUFFER_MODE)
CASE(GL_MAX_TRANSFORM_FEEDBACK_SEPARATE_COMPONENTS)
CASE(GL_TRANSFORM_FEEDBACK_VARYINGS)
CASE(GL_TRANSFORM_FEEDBACK_BUFFER_START)
CASE(GL_TRANSFORM_FEEDBACK_BUFFER_SIZE)
CASE(GL_TRANSFORM_FEEDBACK_PRIMITIVES_WRITTEN)
CASE(GL_RASTERIZER_DISCARD)
CASE(GL_MAX_TRANSFORM_FEEDBACK_INTERLEAVED_COMPONENTS)
CASE(GL_MAX_TRANSFORM_FEEDBACK_SEPARATE_ATTRIBS)
CASE(GL_INTERLEAVED_ATTRIBS)
CASE(GL_SEPARATE_ATTRIBS)
CASE(GL_TRANSFORM_FEEDBACK_BUFFER)
CASE(GL_TRANSFORM_FEEDBACK_BUFFER_BINDING)
CASE(GL_RGBA32UI)
CASE(GL_RGB32UI)
CASE(GL_RGBA16UI)
CASE(GL_RGB16UI)
CASE(GL_RGBA8UI)
CASE(GL_RGB8UI)
CASE(GL_RGBA32I)
CASE(GL_RGB32I)
CASE(GL_RGBA16I)
CASE(GL_RGB16I)
CASE(GL_RGBA8I)
CASE(GL_RGB8I)
CASE(GL_RED_INTEGER)
CASE(GL_RGB_INTEGER)
CASE(GL_RGBA_INTEGER)
CASE(GL_SAMPLER_2D_ARRAY)
CASE(GL_SAMPLER_2D_ARRAY_SHADOW)
CASE(GL_SAMPLER_CUBE_SHADOW)
CASE(GL_UNSIGNED_INT_VEC2)
CASE(GL_UNSIGNED_INT_VEC3)
CASE(GL_UNSIGNED_INT_VEC4)
CASE(GL_INT_SAMPLER_2D)
CASE(GL_INT_SAMPLER_3D)
CASE(GL_INT_SAMPLER_CUBE)
CASE(GL_INT_SAMPLER_2D_ARRAY)
CASE(GL_UNSIGNED_INT_SAMPLER_2D)
CASE(GL_UNSIGNED_INT_SAMPLER_3D)
CASE(GL_UNSIGNED_INT_SAMPLER_CUBE)
CASE(GL_UNSIGNED_INT_SAMPLER_2D_ARRAY)
// CASE(GL_BUFFER_ACCESS_FLAGS)
// CASE(GL_BUFFER_MAP_LENGTH)
// CASE(GL_BUFFER_MAP_OFFSET)
CASE(GL_DEPTH_COMPONENT32F)
CASE(GL_DEPTH32F_STENCIL8)
CASE(GL_FLOAT_32_UNSIGNED_INT_24_8_REV)
CASE(GL_FRAMEBUFFER_ATTACHMENT_COLOR_ENCODING)
CASE(GL_FRAMEBUFFER_ATTACHMENT_COMPONENT_TYPE)
CASE(GL_FRAMEBUFFER_ATTACHMENT_RED_SIZE)
CASE(GL_FRAMEBUFFER_ATTACHMENT_GREEN_SIZE)
CASE(GL_FRAMEBUFFER_ATTACHMENT_BLUE_SIZE)
CASE(GL_FRAMEBUFFER_ATTACHMENT_ALPHA_SIZE)
CASE(GL_FRAMEBUFFER_ATTACHMENT_DEPTH_SIZE)
CASE(GL_FRAMEBUFFER_ATTACHMENT_STENCIL_SIZE)
CASE(GL_FRAMEBUFFER_DEFAULT)
CASE(GL_FRAMEBUFFER_UNDEFINED)
CASE(GL_DEPTH_STENCIL_ATTACHMENT)
CASE(GL_DEPTH_STENCIL)
CASE(GL_UNSIGNED_INT_24_8)
CASE(GL_DEPTH24_STENCIL8)
CASE(GL_UNSIGNED_NORMALIZED)
CASE(GL_DRAW_FRAMEBUFFER_BINDING)
CASE(GL_READ_FRAMEBUFFER)
CASE(GL_DRAW_FRAMEBUFFER)
CASE(GL_READ_FRAMEBUFFER_BINDING)
CASE(GL_RENDERBUFFER_SAMPLES)
CASE(GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LAYER)
CASE(GL_MAX_COLOR_ATTACHMENTS)
CASE(GL_COLOR_ATTACHMENT1)
CASE(GL_COLOR_ATTACHMENT2)
CASE(GL_COLOR_ATTACHMENT3)
CASE(GL_COLOR_ATTACHMENT4)
CASE(GL_COLOR_ATTACHMENT5)
CASE(GL_COLOR_ATTACHMENT6)
CASE(GL_COLOR_ATTACHMENT7)
CASE(GL_COLOR_ATTACHMENT8)
CASE(GL_COLOR_ATTACHMENT9)
CASE(GL_COLOR_ATTACHMENT10)
CASE(GL_COLOR_ATTACHMENT11)
CASE(GL_COLOR_ATTACHMENT12)
CASE(GL_COLOR_ATTACHMENT13)
CASE(GL_COLOR_ATTACHMENT14)
CASE(GL_COLOR_ATTACHMENT15)
CASE(GL_COLOR_ATTACHMENT16)
CASE(GL_COLOR_ATTACHMENT17)
CASE(GL_COLOR_ATTACHMENT18)
CASE(GL_COLOR_ATTACHMENT19)
CASE(GL_COLOR_ATTACHMENT20)
CASE(GL_COLOR_ATTACHMENT21)
CASE(GL_COLOR_ATTACHMENT22)
CASE(GL_COLOR_ATTACHMENT23)
CASE(GL_COLOR_ATTACHMENT24)
CASE(GL_COLOR_ATTACHMENT25)
CASE(GL_COLOR_ATTACHMENT26)
CASE(GL_COLOR_ATTACHMENT27)
CASE(GL_COLOR_ATTACHMENT28)
CASE(GL_COLOR_ATTACHMENT29)
CASE(GL_COLOR_ATTACHMENT30)
CASE(GL_COLOR_ATTACHMENT31)
CASE(GL_FRAMEBUFFER_INCOMPLETE_MULTISAMPLE)
CASE(GL_MAX_SAMPLES)
CASE(GL_HALF_FLOAT)
// CASE(GL_MAP_READ_BIT)
// CASE(GL_MAP_WRITE_BIT)
// CASE(GL_MAP_INVALIDATE_RANGE_BIT)
// CASE(GL_MAP_INVALIDATE_BUFFER_BIT)
CASE(GL_MAP_FLUSH_EXPLICIT_BIT)
CASE(GL_MAP_UNSYNCHRONIZED_BIT)
CASE(GL_RG)
CASE(GL_RG_INTEGER)
CASE(GL_R8)
CASE(GL_RG8)
CASE(GL_R16F)
CASE(GL_R32F)
CASE(GL_RG16F)
CASE(GL_RG32F)
CASE(GL_R8I)
CASE(GL_R8UI)
CASE(GL_R16I)
CASE(GL_R16UI)
CASE(GL_R32I)
CASE(GL_R32UI)
CASE(GL_RG8I)
CASE(GL_RG8UI)
CASE(GL_RG16I)
CASE(GL_RG16UI)
CASE(GL_RG32I)
CASE(GL_RG32UI)
CASE(GL_VERTEX_ARRAY_BINDING)
CASE(GL_R8_SNORM)
CASE(GL_RG8_SNORM)
CASE(GL_RGB8_SNORM)
CASE(GL_RGBA8_SNORM)
CASE(GL_SIGNED_NORMALIZED)
CASE(GL_PRIMITIVE_RESTART_FIXED_INDEX)
// CASE(GL_COPY_READ_BUFFER)
// CASE(GL_COPY_WRITE_BUFFER)
// CASE(GL_COPY_READ_BUFFER_BINDING)
// CASE(GL_COPY_WRITE_BUFFER_BINDING)
CASE(GL_UNIFORM_BUFFER)
CASE(GL_UNIFORM_BUFFER_BINDING)
CASE(GL_UNIFORM_BUFFER_START)
CASE(GL_UNIFORM_BUFFER_SIZE)
CASE(GL_MAX_VERTEX_UNIFORM_BLOCKS)
CASE(GL_MAX_FRAGMENT_UNIFORM_BLOCKS)
CASE(GL_MAX_COMBINED_UNIFORM_BLOCKS)
CASE(GL_MAX_UNIFORM_BUFFER_BINDINGS)
CASE(GL_MAX_UNIFORM_BLOCK_SIZE)
CASE(GL_MAX_COMBINED_VERTEX_UNIFORM_COMPONENTS)
CASE(GL_MAX_COMBINED_FRAGMENT_UNIFORM_COMPONENTS)
CASE(GL_UNIFORM_BUFFER_OFFSET_ALIGNMENT)
CASE(GL_ACTIVE_UNIFORM_BLOCK_MAX_NAME_LENGTH)
CASE(GL_ACTIVE_UNIFORM_BLOCKS)
CASE(GL_UNIFORM_TYPE)
CASE(GL_UNIFORM_SIZE)
CASE(GL_UNIFORM_NAME_LENGTH)
CASE(GL_UNIFORM_BLOCK_INDEX)
CASE(GL_UNIFORM_OFFSET)
CASE(GL_UNIFORM_ARRAY_STRIDE)
CASE(GL_UNIFORM_MATRIX_STRIDE)
CASE(GL_UNIFORM_IS_ROW_MAJOR)
CASE(GL_UNIFORM_BLOCK_BINDING)
CASE(GL_UNIFORM_BLOCK_DATA_SIZE)
CASE(GL_UNIFORM_BLOCK_NAME_LENGTH)
CASE(GL_UNIFORM_BLOCK_ACTIVE_UNIFORMS)
CASE(GL_UNIFORM_BLOCK_ACTIVE_UNIFORM_INDICES)
CASE(GL_UNIFORM_BLOCK_REFERENCED_BY_VERTEX_SHADER)
CASE(GL_UNIFORM_BLOCK_REFERENCED_BY_FRAGMENT_SHADER)
CASE(GL_INVALID_INDEX)
CASE(GL_MAX_VERTEX_OUTPUT_COMPONENTS)
CASE(GL_MAX_FRAGMENT_INPUT_COMPONENTS)
CASE(GL_MAX_SERVER_WAIT_TIMEOUT)
CASE(GL_OBJECT_TYPE)
CASE(GL_SYNC_CONDITION)
CASE(GL_SYNC_STATUS)
CASE(GL_SYNC_FLAGS)
CASE(GL_SYNC_FENCE)
CASE(GL_SYNC_GPU_COMMANDS_COMPLETE)
CASE(GL_UNSIGNALED)
CASE(GL_SIGNALED)
CASE(GL_ALREADY_SIGNALED)
CASE(GL_TIMEOUT_EXPIRED)
CASE(GL_CONDITION_SATISFIED)
CASE(GL_WAIT_FAILED)
// CASE(GL_SYNC_FLUSH_COMMANDS_BIT)
// CASE(GL_TIMEOUT_IGNORED)
CASE(GL_VERTEX_ATTRIB_ARRAY_DIVISOR)
CASE(GL_ANY_SAMPLES_PASSED)
CASE(GL_ANY_SAMPLES_PASSED_CONSERVATIVE)
CASE(GL_SAMPLER_BINDING)
CASE(GL_RGB10_A2UI)
CASE(GL_TEXTURE_SWIZZLE_R)
CASE(GL_TEXTURE_SWIZZLE_G)
CASE(GL_TEXTURE_SWIZZLE_B)
CASE(GL_TEXTURE_SWIZZLE_A)
// CASE(GL_GREEN)
// CASE(GL_BLUE)
CASE(GL_INT_2_10_10_10_REV)
CASE(GL_TRANSFORM_FEEDBACK)
CASE(GL_TRANSFORM_FEEDBACK_PAUSED)
CASE(GL_TRANSFORM_FEEDBACK_ACTIVE)
CASE(GL_TRANSFORM_FEEDBACK_BINDING)
CASE(GL_PROGRAM_BINARY_RETRIEVABLE_HINT)
CASE(GL_PROGRAM_BINARY_LENGTH)
CASE(GL_NUM_PROGRAM_BINARY_FORMATS)
CASE(GL_PROGRAM_BINARY_FORMATS)
CASE(GL_COMPRESSED_R11_EAC)
CASE(GL_COMPRESSED_SIGNED_R11_EAC)
CASE(GL_COMPRESSED_RG11_EAC)
CASE(GL_COMPRESSED_SIGNED_RG11_EAC)
CASE(GL_COMPRESSED_RGB8_ETC2)
CASE(GL_COMPRESSED_SRGB8_ETC2)
CASE(GL_COMPRESSED_RGB8_PUNCHTHROUGH_ALPHA1_ETC2)
CASE(GL_COMPRESSED_SRGB8_PUNCHTHROUGH_ALPHA1_ETC2)
CASE(GL_COMPRESSED_RGBA8_ETC2_EAC)
CASE(GL_COMPRESSED_SRGB8_ALPHA8_ETC2_EAC)
CASE(GL_TEXTURE_IMMUTABLE_FORMAT)
CASE(GL_MAX_ELEMENT_INDEX)
CASE(GL_NUM_SAMPLE_COUNTS)
CASE(GL_TEXTURE_IMMUTABLE_LEVELS)
CASE(GL_TEXTURE_RECTANGLE)
CASE(GL_TEXTURE_CUBE_MAP_ARRAY)
CASE(GL_BGR)
CASE(GL_BGRA)
CASE(GL_GREEN_INTEGER)
CASE(GL_BLUE_INTEGER)
CASE(GL_BGR_INTEGER)
CASE(GL_BGRA_INTEGER)
/*
* OpenGL 1.3
*/
/* multitexture */
CASE(GL_TEXTURE0)
CASE(GL_TEXTURE1)
CASE(GL_TEXTURE2)
CASE(GL_TEXTURE3)
CASE(GL_TEXTURE4)
CASE(GL_TEXTURE5)
CASE(GL_TEXTURE6)
CASE(GL_TEXTURE7)
CASE(GL_TEXTURE8)
CASE(GL_TEXTURE9)
CASE(GL_TEXTURE10)
CASE(GL_TEXTURE11)
CASE(GL_TEXTURE12)
CASE(GL_TEXTURE13)
CASE(GL_TEXTURE14)
CASE(GL_TEXTURE15)
CASE(GL_TEXTURE16)
CASE(GL_TEXTURE17)
CASE(GL_TEXTURE18)
CASE(GL_TEXTURE19)
CASE(GL_TEXTURE20)
CASE(GL_TEXTURE21)
CASE(GL_TEXTURE22)
CASE(GL_TEXTURE23)
CASE(GL_TEXTURE24)
CASE(GL_TEXTURE25)
CASE(GL_TEXTURE26)
CASE(GL_TEXTURE27)
CASE(GL_TEXTURE28)
CASE(GL_TEXTURE29)
CASE(GL_TEXTURE30)
CASE(GL_TEXTURE31)
CASE(GL_ACTIVE_TEXTURE)
CASE(GL_CLIENT_ACTIVE_TEXTURE)
CASE(GL_MAX_TEXTURE_UNITS)
/* texture_cube_map */
CASE(GL_NORMAL_MAP)
CASE(GL_REFLECTION_MAP)
CASE(GL_TEXTURE_CUBE_MAP)
CASE(GL_TEXTURE_BINDING_CUBE_MAP)
CASE(GL_TEXTURE_CUBE_MAP_POSITIVE_X)
CASE(GL_TEXTURE_CUBE_MAP_NEGATIVE_X)
CASE(GL_TEXTURE_CUBE_MAP_POSITIVE_Y)
CASE(GL_TEXTURE_CUBE_MAP_NEGATIVE_Y)
CASE(GL_TEXTURE_CUBE_MAP_POSITIVE_Z)
CASE(GL_TEXTURE_CUBE_MAP_NEGATIVE_Z)
CASE(GL_PROXY_TEXTURE_CUBE_MAP)
CASE(GL_MAX_CUBE_MAP_TEXTURE_SIZE)
/* texture_compression */
CASE(GL_COMPRESSED_ALPHA)
CASE(GL_COMPRESSED_LUMINANCE)
CASE(GL_COMPRESSED_LUMINANCE_ALPHA)
CASE(GL_COMPRESSED_INTENSITY)
CASE(GL_COMPRESSED_RGB)
CASE(GL_COMPRESSED_RGBA)
CASE(GL_TEXTURE_COMPRESSION_HINT)
CASE(GL_TEXTURE_COMPRESSED_IMAGE_SIZE)
CASE(GL_TEXTURE_COMPRESSED)
CASE(GL_NUM_COMPRESSED_TEXTURE_FORMATS)
CASE(GL_COMPRESSED_TEXTURE_FORMATS)
/* multisample */
CASE(GL_MULTISAMPLE)
CASE(GL_SAMPLE_ALPHA_TO_COVERAGE)
CASE(GL_SAMPLE_ALPHA_TO_ONE)
CASE(GL_SAMPLE_COVERAGE)
CASE(GL_SAMPLE_BUFFERS)
CASE(GL_SAMPLES)
CASE(GL_SAMPLE_COVERAGE_VALUE)
CASE(GL_SAMPLE_COVERAGE_INVERT)
CASE(GL_MULTISAMPLE_BIT)
/* transpose_matrix */
CASE(GL_TRANSPOSE_MODELVIEW_MATRIX)
CASE(GL_TRANSPOSE_PROJECTION_MATRIX)
CASE(GL_TRANSPOSE_TEXTURE_MATRIX)
CASE(GL_TRANSPOSE_COLOR_MATRIX)
/* texture_env_combine */
CASE(GL_COMBINE)
CASE(GL_COMBINE_RGB)
CASE(GL_COMBINE_ALPHA)
CASE(GL_SOURCE0_RGB)
CASE(GL_SOURCE1_RGB)
CASE(GL_SOURCE2_RGB)
CASE(GL_SOURCE0_ALPHA)
CASE(GL_SOURCE1_ALPHA)
CASE(GL_SOURCE2_ALPHA)
CASE(GL_OPERAND0_RGB)
CASE(GL_OPERAND1_RGB)
CASE(GL_OPERAND2_RGB)
CASE(GL_OPERAND0_ALPHA)
CASE(GL_OPERAND1_ALPHA)
CASE(GL_OPERAND2_ALPHA)
CASE(GL_RGB_SCALE)
CASE(GL_ADD_SIGNED)
CASE(GL_INTERPOLATE)
CASE(GL_SUBTRACT)
CASE(GL_CONSTANT)
CASE(GL_PRIMARY_COLOR)
CASE(GL_PREVIOUS)
/* texture_env_dot3 */
CASE(GL_DOT3_RGB)
CASE(GL_DOT3_RGBA)
/* texture_border_clamp */
CASE(GL_CLAMP_TO_BORDER)
/*
* Miscellaneous
*/
default:
sprintf(str, "0x%x", value);
return str;
}
#undef CASE
}
}