From 06f80802e68fa0148c1674ddffb460b4402a0eb2 Mon Sep 17 00:00:00 2001 From: Marco Biasini <marco.biasini@unibas.ch> Date: Sun, 4 Jul 2010 12:52:06 +0200 Subject: [PATCH] fix compilation on MacOS X with shaders enabled MacOS X doesn't require the use of glew as all of the OpenGL extensions are already defined in the GL.h header file. I introduced a macro that is set to GLEW_VERSION_2_0 for all non-apple systems and defaults to true on MacOS X. This is safe, since all systems we support have at least OpenGL 2.0. --- modules/gfx/src/glext_include.hh | 7 +++++++ modules/gfx/src/impl/scene_fx.cc | 8 ++++---- modules/gfx/src/scene.cc | 12 ++++++------ modules/gfx/src/shader.cc | 14 +++++++------- 4 files changed, 24 insertions(+), 17 deletions(-) diff --git a/modules/gfx/src/glext_include.hh b/modules/gfx/src/glext_include.hh index b297153e2..3eda5fb9a 100644 --- a/modules/gfx/src/glext_include.hh +++ b/modules/gfx/src/glext_include.hh @@ -42,4 +42,11 @@ #include <ost/gfx/gl_include.hh> +#if defined(__APPLE__) +// On all MacOS X version we support, OpenGL 2.0 is available, so it's safe to +// hardcode the value here... +#define OST_GL_VERSION_2_0 1 +#else +#define OST_GL_VERSION_2_0 GLEW_VERSION_2_0 +#endif #endif diff --git a/modules/gfx/src/impl/scene_fx.cc b/modules/gfx/src/impl/scene_fx.cc index bb3012e88..16d6c426f 100644 --- a/modules/gfx/src/impl/scene_fx.cc +++ b/modules/gfx/src/impl/scene_fx.cc @@ -61,7 +61,7 @@ SceneFX::~SceneFX() void SceneFX::Setup() { - if(!GLEW_VERSION_2_0) return; + if(!OST_GL_VERSION_2_0) return; LOGN_DEBUG("SceneFX: setup"); glGenTextures(1,&scene_tex_id_); @@ -213,7 +213,7 @@ void SceneFX::Resize(unsigned int w, unsigned int h) void SceneFX::Preprocess() { - if(!GLEW_VERSION_2_0) return; + if(!OST_GL_VERSION_2_0) return; if(use_fb_) { #if GL_VERSION_3_0 glBindFramebuffer(GL_FRAMEBUFFER, scene_fb_); @@ -225,7 +225,7 @@ void SceneFX::Preprocess() void SceneFX::Postprocess() { - if(!GLEW_VERSION_2_0) return; + if(!OST_GL_VERSION_2_0) return; if(use_fb_) { #if GL_VERSION_3_0 glBindFramebuffer(GL_FRAMEBUFFER, 0); @@ -354,7 +354,7 @@ void SceneFX::Postprocess() void SceneFX::DrawTex(unsigned int w, unsigned int h, GLuint texid) { - if(!GLEW_VERSION_2_0) return; + if(!OST_GL_VERSION_2_0) return; Shader::Instance().PushProgram(); Shader::Instance().Activate(""); glActiveTexture(GL_TEXTURE0); diff --git a/modules/gfx/src/scene.cc b/modules/gfx/src/scene.cc index 886da10c8..a85d58503 100644 --- a/modules/gfx/src/scene.cc +++ b/modules/gfx/src/scene.cc @@ -373,7 +373,7 @@ void Scene::InitGL(bool full) #if OST_SHADER_SUPPORT_ENABLED GLint mbufs=0,msamples=0; - if(GLEW_VERSION_2_0) { + if(OST_GL_VERSION_2_0) { glGetIntegerv(GL_SAMPLE_BUFFERS, &mbufs); glGetIntegerv(GL_SAMPLES, &msamples); } @@ -427,7 +427,7 @@ void Scene::InitGL(bool full) glEnable(GL_TEXTURE_2D); #if OST_SHADER_SUPPORT_ENABLED - if(GLEW_VERSION_2_0) { + if(OST_GL_VERSION_2_0) { glActiveTexture(GL_TEXTURE0); } #endif @@ -1831,7 +1831,7 @@ void Scene::render_stereo() glEnable(GL_TEXTURE_2D); #if OST_SHADER_SUPPORT_ENABLED - if(GLEW_VERSION_2_0) { + if(OST_GL_VERSION_2_0) { glActiveTexture(GL_TEXTURE0); } #endif @@ -1843,7 +1843,7 @@ void Scene::render_stereo() render_scene(); glEnable(GL_TEXTURE_2D); #if OST_SHADER_SUPPORT_ENABLED - if(GLEW_VERSION_2_0) { + if(OST_GL_VERSION_2_0) { glActiveTexture(GL_TEXTURE0); } #endif @@ -1905,7 +1905,7 @@ void Scene::render_stereo() glStencilFunc(GL_EQUAL,0x0,0x1); } #if OST_SHADER_SUPPORT_ENABLED - if(GLEW_VERSION_2_0) { + if(OST_GL_VERSION_2_0) { glActiveTexture(GL_TEXTURE0); } #endif @@ -1927,7 +1927,7 @@ void Scene::render_stereo() glStencilFunc(GL_EQUAL,0x1,0x1); } #if OST_SHADER_SUPPORT_ENABLED - if(GLEW_VERSION_2_0) { + if(OST_GL_VERSION_2_0) { glActiveTexture(GL_TEXTURE0); } #endif diff --git a/modules/gfx/src/shader.cc b/modules/gfx/src/shader.cc index db8e0558a..01674489b 100644 --- a/modules/gfx/src/shader.cc +++ b/modules/gfx/src/shader.cc @@ -50,7 +50,7 @@ Shader::Shader(): shader_code_map_(), shader_program_map_() { - if(!GLEW_VERSION_2_0) { + if(!OST_GL_VERSION_2_0) { LOGN_VERBOSE("OpenGL version smaller 2.0, deactivating shader functionality"); } } @@ -124,7 +124,7 @@ bool link_shader(const std::vector<GLuint>& code_list, String pr_name, GLuint& s void Shader::Setup() { - if(!GLEW_VERSION_2_0) return; + if(!OST_GL_VERSION_2_0) return; String ost_root = GetSharedDataPath(); bf::path ost_root_dir(ost_root); @@ -303,7 +303,7 @@ void Shader::Setup() void Shader::Activate(const String& name) { - if(!GLEW_VERSION_2_0) return; + if(!OST_GL_VERSION_2_0) return; if(!name.empty()) { std::map<String, GLuint>::iterator it = shader_program_map_.find(name); @@ -339,7 +339,7 @@ String Shader::GetCurrentName() const bool Shader::IsValid() const { - if(!GLEW_VERSION_2_0) return false; + if(!OST_GL_VERSION_2_0) return false; return valid_; } @@ -350,13 +350,13 @@ bool Shader::IsActive() const void Shader::PushProgram() { - if(!GLEW_VERSION_2_0) return; + if(!OST_GL_VERSION_2_0) return; program_stack_.push(current_name_); } void Shader::PopProgram() { - if(!GLEW_VERSION_2_0) return; + if(!OST_GL_VERSION_2_0) return; if(!program_stack_.empty()) { current_name_ = program_stack_.top(); program_stack_.pop(); @@ -366,7 +366,7 @@ void Shader::PopProgram() void Shader::UpdateState() { - if(!GLEW_VERSION_2_0) return; + if(!OST_GL_VERSION_2_0) return; if(current_program_!=0) { // update all settings GLint result; -- GitLab