#include "ofMain.h"
#include "ofApp.h"
// by default this example will run in OpenGL 2.0, see ofApp.h for running it
// in OpenGL 3.2
#ifdef USE_PROGRAMMABLE_GL
// tig: using the programmable GL renderer is more fun, since we can use GLSL 150 =)
// define USE_PROGRAMMABLE_GL in ofApp.h to run this example in OpenGL 3.2 if your
// system provides it...
#include "ofGLProgrammableRenderer.h"
#endif
//========================================================================
int main( ){
ofGLWindowSettings glWindowSettings;
#ifdef USE_PROGRAMMABLE_GL
// we are using the programmable gl renderer.
glWindowSettings.setGLVersion(3, 2);
ofCreateWindow(glWindowSettings); // <-------- setup the GL context
#else
// we are not using the progammable gl renderer.
// when we are not using the programmable gl renderer it is not safe to assume
// out current gl context provides us with the necessary openGL extensions to
// run this example.
// let's check if the current openGL context provides us with glDrawElementsInstanced
// we do this after we have initialised our openGL context.
glWindowSettings.setGLVersion(2, 1);
ofCreateWindow(glWindowSettings); // <-------- setup the GL context
ostringstream extStr;
extStr << (char*)glGetString(GL_EXTENSIONS); // first get all available extensions.
string extensionsAvailable = extStr.str();
if (ofStringTimesInString(extensionsAvailable, "GL_ARB_draw_instanced") == 0)
{
ofLogFatalError("App") << " GL_ARB_draw_instanced is needed for this example but it is not supported by your graphics card. Exiting App.";
return -1;
} else {
// GL_ARB_draw_instanced is available... so far so good.
// either one of these is needed, too:
if (ofStringTimesInString(extensionsAvailable, "GL_EXT_gpu_shader4") == 0 &&
ofStringTimesInString(extensionsAvailable, "NV_vertex_program4") == 0 )
{
ofLogFatalError("App") << " GL_EXT_gpu_shader4 or NV_vertex_program4 is needed for this example but it is not supported by your graphics card. Exiting App.";
return -1;
}
}
#endif
// this kicks off the running of my app
// can be OF_WINDOW or OF_FULLSCREEN
// pass in width and height too:
ofRunApp(new ofApp());
}
Comments