// // 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 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__ if (MG_Global::Common::LogTarget & MG_Constants::Common::LOG_TARGET_ANDROID) { __android_log_vprint(androidLevel, MG_Constants::RenderName, full_format.c_str(), args); } #endif if (MG_Global::Common::LogTarget & MG_Constants::Common::LOG_TARGET_CONSOLE) { vprintf(full_format.c_str(), args); } if ((MG_Global::Common::LogTarget & MG_Constants::Common::LOG_TARGET_FILE) && MG_Global::Common::LOG_FILE_PATH != nullptr) { va_list args_copy; va_copy(args_copy, args); LogWrite(full_format.c_str(), args_copy); 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, va_list args) { if (!MG_Global::Common::LOG_FILE_PATH || logFile == nullptr) return; 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) /* framebuffer_status */ CASE(GL_FRAMEBUFFER_COMPLETE) CASE(GL_FRAMEBUFFER_INCOMPLETE_ATTACHMENT) CASE(GL_FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT) CASE(GL_FRAMEBUFFER_INCOMPLETE_DIMENSIONS) CASE(GL_FRAMEBUFFER_UNSUPPORTED) CASE(GL_COLOR_ATTACHMENT0) CASE(GL_DEPTH_ATTACHMENT) CASE(GL_STENCIL_ATTACHMENT) /* * Miscellaneous */ default: sprintf(str, "0x%x", value); return str; } #undef CASE } }