File indexing completed on 2026-04-09 07:49:37
0001 #pragma once
0002
0003
0004
0005
0006
0007
0008 #include "ssys.h"
0009
0010 struct SGLFW_check
0011 {
0012 static constexpr const char* _level = "SGLFW_check__level" ;
0013 static int level ;
0014 };
0015
0016 int SGLFW_check::level = ssys::getenvint(_level,0);
0017
0018
0019 inline void SGLFW__check(const char* path, int line, const char* ctx=nullptr, int id=-99, const char* act=nullptr )
0020 {
0021 GLenum err = glGetError() ;
0022 bool ok = err == GL_NO_ERROR ;
0023 const char* s = NULL ;
0024 switch(err)
0025 {
0026 case GL_INVALID_ENUM: s = "GL_INVALID_ENUM" ; break ;
0027 case GL_INVALID_VALUE: s = "GL_INVALID_VALUE" ; break ;
0028 case GL_INVALID_OPERATION: s = "GL_INVALID_OPERATION" ; break ;
0029 case GL_STACK_OVERFLOW: s = "GL_STACK_OVERFLOW" ; break ;
0030 case GL_STACK_UNDERFLOW: s = "GL_STACK_UNDERFLOW" ; break ;
0031 case GL_OUT_OF_MEMORY: s = "GL_OUT_OF_MEMORY" ; break ;
0032 #ifdef GL_VERSION_4_5
0033 case GL_CONTEXT_LOST: s = "GL_CONTEXT_LOST" ; break ;
0034 #endif
0035 case GL_INVALID_FRAMEBUFFER_OPERATION: s = "GL_INVALID_FRAMEBUFFER_OPERATION" ; break ;
0036 }
0037
0038 const char* delim = ok ? "" : "\n" ;
0039
0040 if(!ok || SGLFW_check::level > 0) std::cerr
0041 << "SGLFW__check " << delim
0042
0043 << "( vi " << std::setw(55) << path << " " << std::showpos << std::setw(4) << line << std::noshowpos << " ) " << delim
0044 << " ctx " << std::setw(20) << ( ctx ? ctx : "-" ) << delim
0045 << " id " << std::setw(4) << id << delim
0046 << " act " << std::setw(30) << ( act ? act : "-" ) << delim
0047 << " err " << std::hex << err << std::dec << delim
0048 << " errstr " << " : " << ( s ? s : "-" ) << delim
0049 << " [" << SGLFW_check::_level << "] " << SGLFW_check::level << delim
0050 << "\n"
0051 ;
0052
0053 assert( ok );
0054 if(!ok) std::raise(SIGINT);
0055 }
0056
0057
0058
0059
0060
0061
0062
0063
0064