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/Config.hpp>
00032 #include <SFML/Window/glew/glew.h>
00033 #include SFML_OPENGL_HEADER
00034 #include <iostream>
00035 #include <string>
00036
00037
00038 namespace sf
00039 {
00040 namespace priv
00041 {
00047 #ifdef SFML_DEBUG
00048
00049
00050 #define GLCheck(Func) ((Func), priv::GLCheckError(__FILE__, __LINE__))
00051
00052 #else
00053
00054
00055 #define GLCheck(Func) (Func)
00056
00057 #endif
00058
00059
00064 inline void GLCheckError(const std::string File, unsigned int Line)
00065 {
00066
00067 GLenum ErrorCode = glGetError();
00068
00069 if (ErrorCode != GL_NO_ERROR)
00070 {
00071 std::string Error, Desc;
00072
00073
00074 switch (ErrorCode)
00075 {
00076 case GL_INVALID_ENUM :
00077 {
00078 Error = "GL_INVALID_ENUM";
00079 Desc = "an unacceptable value has been specified for an enumerated argument";
00080 break;
00081 }
00082
00083 case GL_INVALID_VALUE :
00084 {
00085 Error = "GL_INVALID_VALUE";
00086 Desc = "a numeric argument is out of range";
00087 break;
00088 }
00089
00090 case GL_INVALID_OPERATION :
00091 {
00092 Error = "GL_INVALID_OPERATION";
00093 Desc = "the specified operation is not allowed in the current state";
00094 break;
00095 }
00096
00097 case GL_STACK_OVERFLOW :
00098 {
00099 Error = "GL_STACK_OVERFLOW";
00100 Desc = "this command would cause a stack overflow";
00101 break;
00102 }
00103
00104 case GL_STACK_UNDERFLOW :
00105 {
00106 Error = "GL_STACK_UNDERFLOW";
00107 Desc = "this command would cause a stack underflow";
00108 break;
00109 }
00110
00111 case GL_OUT_OF_MEMORY :
00112 {
00113 Error = "GL_OUT_OF_MEMORY";
00114 Desc = "there is not enough memory left to execute the command";
00115 break;
00116 }
00117 }
00118
00119
00120 std::cerr << "An internal OpenGL call failed in "
00121 << File.substr(File.find_last_of("\\/") + 1) << " (" << Line << ") : "
00122 << Error << ", " << Desc
00123 << std::endl;
00124 }
00125 }
00126
00127 }
00128
00129 }
00130
00131
00132 #endif // SFML_OPENGL_HPP