25 #ifndef SFML_GRAPHICSCONTEXT_HPP 26 #define SFML_GRAPHICSCONTEXT_HPP 31 #include <SFML/Config.hpp> 32 #include <SFML/System/NonCopyable.hpp> 52 class GraphicsContext : NonCopyable
88 #define GLCheck(Func) ((Func), GLCheckError(__FILE__, __LINE__)) 93 #define GLCheck(Func) (Func) 102 inline void GLCheckError(
const std::string& File,
unsigned int Line)
105 GLenum ErrorCode = glGetError();
107 if (ErrorCode != GL_NO_ERROR)
109 std::string Error =
"unknown error";
110 std::string Desc =
"no description";
115 case GL_INVALID_ENUM :
117 Error =
"GL_INVALID_ENUM";
118 Desc =
"an unacceptable value has been specified for an enumerated argument";
122 case GL_INVALID_VALUE :
124 Error =
"GL_INVALID_VALUE";
125 Desc =
"a numeric argument is out of range";
129 case GL_INVALID_OPERATION :
131 Error =
"GL_INVALID_OPERATION";
132 Desc =
"the specified operation is not allowed in the current state";
136 case GL_STACK_OVERFLOW :
138 Error =
"GL_STACK_OVERFLOW";
139 Desc =
"this command would cause a stack overflow";
143 case GL_STACK_UNDERFLOW :
145 Error =
"GL_STACK_UNDERFLOW";
146 Desc =
"this command would cause a stack underflow";
150 case GL_OUT_OF_MEMORY :
152 Error =
"GL_OUT_OF_MEMORY";
153 Desc =
"there is not enough memory left to execute the command";
157 case GL_INVALID_FRAMEBUFFER_OPERATION_EXT :
159 Error =
"GL_INVALID_FRAMEBUFFER_OPERATION_EXT";
160 Desc =
"the object bound to FRAMEBUFFER_BINDING_EXT is not \"framebuffer complete\"";
166 std::cerr <<
"An internal OpenGL call failed in " 167 << File.substr(File.find_last_of(
"\\/") + 1) <<
" (" << Line <<
") : " 168 << Error <<
", " << Desc
176 #endif // SFML_GRAPHICSCONTEXT_HPP