summaryrefslogtreecommitdiff
path: root/src/graphicsmanager.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/graphicsmanager.cpp')
-rw-r--r--src/graphicsmanager.cpp35
1 files changed, 22 insertions, 13 deletions
diff --git a/src/graphicsmanager.cpp b/src/graphicsmanager.cpp
index d10b5de9e..4b59c68f2 100644
--- a/src/graphicsmanager.cpp
+++ b/src/graphicsmanager.cpp
@@ -48,6 +48,16 @@
#include "debug.h"
+#ifdef WIN32
+#define getFunction(name) wglGetProcAddress(name)
+#else
+#define getFunction(name) glXGetProcAddress(\
+ reinterpret_cast<const GLubyte*>(name))
+#endif
+
+#define assignFunction(func, name) m##func \
+ = reinterpret_cast<func##_t>(getFunction(name))
+
GraphicsManager graphicsManager;
GraphicsManager::GraphicsManager() :
@@ -221,6 +231,9 @@ Graphics *GraphicsManager::createGraphics()
void GraphicsManager::updateExtensions()
{
#ifdef USE_OPENGL
+ if (checkGLVersion(3, 0))
+ assignFunction(glGetStringi, "glGetStringi");
+
mExtensions.clear();
logger->log1("opengl extensions: ");
if (checkGLVersion(3, 0))
@@ -549,16 +562,6 @@ void GraphicsManager::deleteFBO(FBOInfo *fbo)
#endif
}
-#ifdef WIN32
-#define getFunction(name) wglGetProcAddress(name)
-#else
-#define getFunction(name) glXGetProcAddress(\
- reinterpret_cast<const GLubyte*>(name))
-#endif
-
-#define assignFunction(func, name) m##func \
- = reinterpret_cast<func##_t>(getFunction(name))
-
void GraphicsManager::initOpenGLFunctions()
{
#ifdef USE_OPENGL
@@ -595,8 +598,14 @@ void GraphicsManager::initOpenGLFunctions()
config.setValue("usefbo", false);
}
- if (checkGLVersion(3, 0))
- assignFunction(glGetStringi, "glGetStringi");
+ // Texture sampler
+ if (checkGLVersion(1, 0) && supportExtension("GL_ARB_sampler_objects"))
+ {
+ assignFunction(glGenSamplers, "glGenSamplers");
+ assignFunction(glDeleteSamplers, "glDeleteSamplers");
+ assignFunction(glBindSampler, "glBindSampler");
+ assignFunction(glSamplerParameteri, "glSamplerParameteri");
+ }
#ifdef WIN32
assignFunction(wglGetExtensionsString, "wglGetExtensionsStringARB");
@@ -624,8 +633,8 @@ void GraphicsManager::initOpenGL()
{
#ifdef USE_OPENGL
setGLVersion();
- initOpenGLFunctions();
updateExtensions();
+ initOpenGLFunctions();
updatePlanformExtensions();
updateLimits();
#endif