From d7d24ca36ac16055d2a4d2cf50674d125487fcd3 Mon Sep 17 00:00:00 2001 From: Armin Burgmeier Date: Sat, 2 Jan 2016 19:15:38 -0800 Subject: [PATCH] Enable OGL core profile for linux --- src/graphics/C4DrawGL.cpp | 10 +++------- src/graphics/C4DrawGLCtx.cpp | 5 +++++ src/landscape/C4LandscapeRender.cpp | 7 ------- 3 files changed, 8 insertions(+), 14 deletions(-) diff --git a/src/graphics/C4DrawGL.cpp b/src/graphics/C4DrawGL.cpp index 104a17340..bad5bcb2d 100644 --- a/src/graphics/C4DrawGL.cpp +++ b/src/graphics/C4DrawGL.cpp @@ -382,14 +382,10 @@ bool CStdGL::CreatePrimarySurfaces(unsigned int, unsigned int, int iColorDepth, // store options bool ok = RestoreDeviceObjects(); - // - AMD GPUs have supported OpenGL 2.1 since 2007 - // - nVidia GPUs have supported OpenGL 2.1 since 2005 - // - Intel integrated GPUs have supported OpenGL 2.1 since Clarkdale (maybe earlier). - // And we've already been using features from OpenGL 2.1. Nobody has complained yet. - // So checking for 2.1 support should be fine. - if (!GLEW_VERSION_2_1) + // We need at least OpenGL 3.0 + if (!GLEW_VERSION_3_0) { - return Error(" gl: OpenGL Version 2.1 or higher required. A better graphics driver will probably help."); + return Error(" gl: OpenGL Version 3.0 or higher required. A better graphics driver will probably help."); } return ok; } diff --git a/src/graphics/C4DrawGLCtx.cpp b/src/graphics/C4DrawGLCtx.cpp index 4052e23e1..522641fa3 100644 --- a/src/graphics/C4DrawGLCtx.cpp +++ b/src/graphics/C4DrawGLCtx.cpp @@ -480,6 +480,7 @@ bool CStdGLCtx::Init(C4Window * pWindow, C4AbstractApp *) GLXContext dummy_ctx = glXCreateContext(dpy, vis_info, 0, True); XFree(vis_info); glXMakeCurrent(dpy, pWindow->renderwnd, dummy_ctx); + glewExperimental = GL_TRUE; GLenum err = glewInit(); if (err != GLEW_OK) { @@ -488,7 +489,10 @@ bool CStdGLCtx::Init(C4Window * pWindow, C4AbstractApp *) // Create Context with sharing (if this is the main context, our ctx will be 0, so no sharing) const int attribs[] = { + GLX_CONTEXT_MAJOR_VERSION_ARB, 3, + GLX_CONTEXT_MINOR_VERSION_ARB, 1, GLX_CONTEXT_FLAGS_ARB, (Config.Graphics.DebugOpenGL ? GLX_CONTEXT_DEBUG_BIT_ARB : 0), + GLX_CONTEXT_PROFILE_MASK_ARB, GLX_CONTEXT_CORE_PROFILE_BIT_ARB, None }; GLXContext share_context = (pGL->pMainCtx != this) ? static_cast(pGL->pMainCtx->ctx) : 0; @@ -511,6 +515,7 @@ bool CStdGLCtx::Init(C4Window * pWindow, C4AbstractApp *) if (!ctx) return pGL->Error(" gl: Unable to create context"); if (!Select(true)) return pGL->Error(" gl: Unable to select context"); // init extensions + glewExperimental = GL_TRUE; err = glewInit(); if (GLEW_OK != err) { diff --git a/src/landscape/C4LandscapeRender.cpp b/src/landscape/C4LandscapeRender.cpp index 91d3bc8f3..703f4e29b 100644 --- a/src/landscape/C4LandscapeRender.cpp +++ b/src/landscape/C4LandscapeRender.cpp @@ -612,13 +612,6 @@ bool C4LandscapeRenderGL::LoadShader(C4GroupSet *pGroups, C4Shader& shader, cons bool C4LandscapeRenderGL::LoadShaders(C4GroupSet *pGroups) { - // No support? - if(!GLEW_ARB_fragment_program) - { - Log(" gl: no shader support!"); - return false; - } - // First, clear out all existing shaders ClearShaders();