00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00024
00025 #ifndef SFML_OPENGL_HPP
00026 #define SFML_OPENGL_HPP
00027
00029
00031 #include <SFML/Graphics/glew/glew.h>
00032 #include <GL/gl.h>
00033 #include <iostream>
00034 #include <string>
00035
00036
00037 namespace sf_private
00038 {
00044 #ifdef SFML_DEBUG
00045
00046
00047 #define sfGLCheck(Func) ((Func), sf_private::sfGLCheckError())
00048
00049 #else
00050
00051
00052 #define sfGLCheck(Func) (Func)
00053
00054 #endif
00055
00056
00061 inline void sfGLCheckError()
00062 {
00063
00064 GLenum ErrorCode = glGetError();
00065
00066 if (ErrorCode != GL_NO_ERROR)
00067 {
00068 std::string Error, Desc;
00069
00070
00071 switch (ErrorCode)
00072 {
00073 case GL_INVALID_ENUM :
00074 {
00075 Error = "GL_INVALID_ENUM";
00076 Desc = "an unacceptable value has been specified for an enumerated argument";
00077 break;
00078 }
00079
00080 case GL_INVALID_VALUE :
00081 {
00082 Error = "GL_INVALID_VALUE";
00083 Desc = "a numeric argument is out of range";
00084 break;
00085 }
00086
00087 case GL_INVALID_OPERATION :
00088 {
00089 Error = "GL_INVALID_OPERATION";
00090 Desc = "the specified operation is not allowed in the current state";
00091 break;
00092 }
00093
00094 case GL_STACK_OVERFLOW :
00095 {
00096 Error = "GL_STACK_OVERFLOW";
00097 Desc = "this command would cause a stack overflow";
00098 break;
00099 }
00100
00101 case GL_STACK_UNDERFLOW :
00102 {
00103 Error = "GL_STACK_UNDERFLOW";
00104 Desc = "this command would cause a stack underflow";
00105 break;
00106 }
00107
00108 case GL_OUT_OF_MEMORY :
00109 {
00110 Error = "GL_OUT_OF_MEMORY";
00111 Desc = "there is not enough memory left to execute the command";
00112 break;
00113 }
00114 }
00115
00116
00117 std::cerr << "An internal OpenGL call failed "
00118 << "(" << Error << " : " << Desc << ")"
00119 << std::endl;
00120 }
00121 }
00122
00123 }
00124
00125 #endif // SFML_OPENGL_HPP