summaryrefslogtreecommitdiff
path: root/src/graphicsmanager.cpp
diff options
context:
space:
mode:
authorAndrei Karas <akaras@inbox.ru>2012-10-01 17:51:43 +0300
committerAndrei Karas <akaras@inbox.ru>2012-10-01 17:51:43 +0300
commitc195c960fc2ce7a5a211c26310ae98bfe39ab777 (patch)
treeb958a2181f84ca0de25bdd25d3585ae2b919fc25 /src/graphicsmanager.cpp
parent5adcad73b15aafa56ef77c794bf7ebfeff28049b (diff)
downloadmv-c195c960fc2ce7a5a211c26310ae98bfe39ab777.tar.gz
mv-c195c960fc2ce7a5a211c26310ae98bfe39ab777.tar.bz2
mv-c195c960fc2ce7a5a211c26310ae98bfe39ab777.tar.xz
mv-c195c960fc2ce7a5a211c26310ae98bfe39ab777.zip
Add OpenGL GL_ARB_sampler_objects extension binding.
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