diff options
author | Andrei Karas <akaras@inbox.ru> | 2012-10-01 17:51:43 +0300 |
---|---|---|
committer | Andrei Karas <akaras@inbox.ru> | 2012-10-01 17:51:43 +0300 |
commit | c195c960fc2ce7a5a211c26310ae98bfe39ab777 (patch) | |
tree | b958a2181f84ca0de25bdd25d3585ae2b919fc25 /src/graphicsmanager.cpp | |
parent | 5adcad73b15aafa56ef77c794bf7ebfeff28049b (diff) | |
download | manaplus-c195c960fc2ce7a5a211c26310ae98bfe39ab777.tar.gz manaplus-c195c960fc2ce7a5a211c26310ae98bfe39ab777.tar.bz2 manaplus-c195c960fc2ce7a5a211c26310ae98bfe39ab777.tar.xz manaplus-c195c960fc2ce7a5a211c26310ae98bfe39ab777.zip |
Add OpenGL GL_ARB_sampler_objects extension binding.
Diffstat (limited to 'src/graphicsmanager.cpp')
-rw-r--r-- | src/graphicsmanager.cpp | 35 |
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 |