77#include < exception>
88#include < stdexcept>
99#include < string.h>
10- #include < glload/gl_3_3.h>
11- #include < glload/gl_load.hpp>
12- #include < glutil/Shader.h>
10+ #ifdef __APPLE__
11+ #define FREEGLUT_NO_GL_INCLUDE
12+ #include < OpenGL/gl3.h>
13+ #endif
1314#include < GL/freeglut.h>
15+ #include < glutil/Shader.h>
1416#include " framework.h"
1517#include " directories.h"
1618
@@ -32,7 +34,7 @@ namespace Framework
3234 {
3335 return glutil::CompileShader (eShaderType, shaderData.str ());
3436 }
35- catch (std::exception &e)
37+ catch (std::exception &e)
3638 {
3739 fprintf (stderr, " %s\n " , e.what ());
3840 throw ;
@@ -47,7 +49,7 @@ namespace Framework
4749 std::for_each (shaderList.begin (), shaderList.end (), glDeleteShader);
4850 return prog;
4951 }
50- catch (std::exception &e)
52+ catch (std::exception &e)
5153 {
5254 std::for_each (shaderList.begin (), shaderList.end (), glDeleteShader);
5355 fprintf (stderr, " %s\n " , e.what ());
@@ -61,108 +63,116 @@ namespace Framework
6163 return fAngDeg * fDegToRad ;
6264 }
6365
64- std::string FindFileOrThrow ( const std::string &strBasename )
66+ std::string FindFileOrThrow (const std::string &strBasename)
6567 {
6668 std::string strFilename = LOCAL_FILE_DIR + strBasename;
6769 std::ifstream testFile (strFilename.c_str ());
68- if (testFile.is_open ())
70+ if (testFile.is_open ())
6971 return strFilename;
7072
71-
7273 strFilename = GLOBAL_FILE_DIR + strBasename;
7374 testFile.open (strFilename.c_str ());
74- if (testFile.is_open ())
75+ if (testFile.is_open ())
7576 return strFilename;
7677
7778 throw std::runtime_error (" Could not find the file " + strBasename);
7879 }
7980}
8081
81-
8282void init ();
8383void display ();
8484void reshape (int w, int h);
8585void keyboard (unsigned char key, int x, int y);
8686
8787unsigned int defaults (unsigned int displayMode, int &width, int &height);
8888
89- void APIENTRY DebugFunc (GLenum source, GLenum type, GLuint id, GLenum severity, GLsizei length,
90- const GLchar* message, const GLvoid* userParam)
91- {
92- std::string srcName;
93- switch (source)
94- {
95- case GL_DEBUG_SOURCE_API_ARB: srcName = " API" ; break ;
96- case GL_DEBUG_SOURCE_WINDOW_SYSTEM_ARB: srcName = " Window System" ; break ;
97- case GL_DEBUG_SOURCE_SHADER_COMPILER_ARB: srcName = " Shader Compiler" ; break ;
98- case GL_DEBUG_SOURCE_THIRD_PARTY_ARB: srcName = " Third Party" ; break ;
99- case GL_DEBUG_SOURCE_APPLICATION_ARB: srcName = " Application" ; break ;
100- case GL_DEBUG_SOURCE_OTHER_ARB: srcName = " Other" ; break ;
101- }
102-
103- std::string errorType;
104- switch (type)
105- {
106- case GL_DEBUG_TYPE_ERROR_ARB: errorType = " Error" ; break ;
107- case GL_DEBUG_TYPE_DEPRECATED_BEHAVIOR_ARB: errorType = " Deprecated Functionality" ; break ;
108- case GL_DEBUG_TYPE_UNDEFINED_BEHAVIOR_ARB: errorType = " Undefined Behavior" ; break ;
109- case GL_DEBUG_TYPE_PORTABILITY_ARB: errorType = " Portability" ; break ;
110- case GL_DEBUG_TYPE_PERFORMANCE_ARB: errorType = " Performance" ; break ;
111- case GL_DEBUG_TYPE_OTHER_ARB: errorType = " Other" ; break ;
112- }
113-
114- std::string typeSeverity;
115- switch (severity)
116- {
117- case GL_DEBUG_SEVERITY_HIGH_ARB: typeSeverity = " High" ; break ;
118- case GL_DEBUG_SEVERITY_MEDIUM_ARB: typeSeverity = " Medium" ; break ;
119- case GL_DEBUG_SEVERITY_LOW_ARB: typeSeverity = " Low" ; break ;
120- }
121-
122- printf (" %s from %s,\t %s priority\n Message: %s\n " ,
123- errorType.c_str (), srcName.c_str (), typeSeverity.c_str (), message);
124- }
125-
126- int main (int argc, char ** argv)
89+ // void APIENTRY DebugFunc(GLenum source, GLenum type, GLuint id, GLenum severity, GLsizei length,
90+ // const GLchar* message, const GLvoid* userParam)
91+ // {
92+ // std::string srcName;
93+ // switch(source)
94+ // {
95+ // case GL_DEBUG_SOURCE_API_ARB: srcName = "API"; break;
96+ // case GL_DEBUG_SOURCE_WINDOW_SYSTEM_ARB: srcName = "Window System"; break;
97+ // case GL_DEBUG_SOURCE_SHADER_COMPILER_ARB: srcName = "Shader Compiler"; break;
98+ // case GL_DEBUG_SOURCE_THIRD_PARTY_ARB: srcName = "Third Party"; break;
99+ // case GL_DEBUG_SOURCE_APPLICATION_ARB: srcName = "Application"; break;
100+ // case GL_DEBUG_SOURCE_OTHER_ARB: srcName = "Other"; break;
101+ // }
102+
103+ // std::string errorType;
104+ // switch(type)
105+ // {
106+ // case GL_DEBUG_TYPE_ERROR_ARB: errorType = "Error"; break;
107+ // case GL_DEBUG_TYPE_DEPRECATED_BEHAVIOR_ARB: errorType = "Deprecated Functionality"; break;
108+ // case GL_DEBUG_TYPE_UNDEFINED_BEHAVIOR_ARB: errorType = "Undefined Behavior"; break;
109+ // case GL_DEBUG_TYPE_PORTABILITY_ARB: errorType = "Portability"; break;
110+ // case GL_DEBUG_TYPE_PERFORMANCE_ARB: errorType = "Performance"; break;
111+ // case GL_DEBUG_TYPE_OTHER_ARB: errorType = "Other"; break;
112+ // }
113+
114+ // std::string typeSeverity;
115+ // switch(severity)
116+ // {
117+ // case GL_DEBUG_SEVERITY_HIGH_ARB: typeSeverity = "High"; break;
118+ // case GL_DEBUG_SEVERITY_MEDIUM_ARB: typeSeverity = "Medium"; break;
119+ // case GL_DEBUG_SEVERITY_LOW_ARB: typeSeverity = "Low"; break;
120+ // }
121+
122+ // printf("%s from %s,\t%s priority\nMessage: %s\n",
123+ // errorType.c_str(), srcName.c_str(), typeSeverity.c_str(), message);
124+ // }
125+
126+ int main (int argc, char ** argv)
127127{
128128 glutInit (&argc, argv);
129129
130130 int width = 500 ;
131131 int height = 500 ;
132+ #if defined(__APPLE__) && !defined(USE_COCOA)
133+ // if we are on apple an not using cocoa, MESA will be used at it does not support GLUT_STENCIL
134+ unsigned int displayMode = GLUT_DOUBLE | GLUT_ALPHA | GLUT_DEPTH;
135+ #else
132136 unsigned int displayMode = GLUT_DOUBLE | GLUT_ALPHA | GLUT_DEPTH | GLUT_STENCIL;
137+ glutInitContextVersion (3 , 3 );
138+ #endif
133139 displayMode = defaults (displayMode, width, height);
134140
135- glutInitDisplayMode (displayMode);
136- glutInitContextVersion (3 , 3 );
141+ glutInitDisplayMode (displayMode);
137142 glutInitContextProfile (GLUT_CORE_PROFILE);
138143#ifdef DEBUG
139144 glutInitContextFlags (GLUT_DEBUG);
140145#endif
141- glutInitWindowSize (width, height);
142- glutInitWindowPosition (300 , 200 );
143- int window = glutCreateWindow (argv[0 ]);
146+ glutInitWindowSize (width, height);
147+ glutInitWindowPosition (300 , 200 );
148+ int window = glutCreateWindow (argv[0 ]);
144149
145- glload::LoadFunctions ();
150+ // glload::LoadFunctions();
146151
147152 glutSetOption (GLUT_ACTION_ON_WINDOW_CLOSE, GLUT_ACTION_CONTINUE_EXECUTION);
148153
149- if (!glload::IsVersionGEQ (3 , 3 ))
150- {
151- printf (" Your OpenGL version is %i, %i. You must have at least OpenGL 3.3 to run this tutorial.\n " ,
152- glload::GetMajorVersion (), glload::GetMinorVersion ());
153- glutDestroyWindow (window);
154- return 0 ;
155- }
156-
157- if (glext_ARB_debug_output)
158- {
159- glEnable (GL_DEBUG_OUTPUT_SYNCHRONOUS_ARB);
160- glDebugMessageCallbackARB (DebugFunc, (void *)15 );
161- }
154+ // if(!glload::IsVersionGEQ(3, 3))
155+ // {
156+ // printf("Your OpenGL version is %i, %i. You must have at least OpenGL 3.3 to run this tutorial.\n",
157+ // glload::GetMajorVersion(), glload::GetMinorVersion());
158+ // glutDestroyWindow(window);
159+ // return 0;
160+ // }
161+
162+ // if(glext_ARB_debug_output)
163+ // {
164+ // glEnable(GL_DEBUG_OUTPUT_SYNCHRONOUS_ARB);
165+ // glDebugMessageCallbackARB(DebugFunc, (void*)15);
166+ // }
167+
168+ printf (" Renderer: %s\n " , glGetString (GL_RENDERER));
169+ printf (" Vendor: %s\n " , glGetString (GL_VENDOR));
170+ printf (" Version: %s\n " , glGetString (GL_VERSION));
171+ printf (" GLSL Version: %s\n " , glGetString (GL_SHADING_LANGUAGE_VERSION));
162172
163173 init ();
164174
165- glutDisplayFunc (display);
175+ glutDisplayFunc (display);
166176 glutReshapeFunc (reshape);
167177 glutKeyboardFunc (keyboard);
168178 glutMainLoop ();
0 commit comments