diff options
author | Andrei Karas <akaras@inbox.ru> | 2012-10-01 23:32:51 +0300 |
---|---|---|
committer | Andrei Karas <akaras@inbox.ru> | 2012-10-01 23:45:06 +0300 |
commit | 7fa069aec585316c34ada298ec557c7e800bf8f3 (patch) | |
tree | 64cb7078677a695eb9cc429e4546114d06ff6d37 /src/resources | |
parent | c195c960fc2ce7a5a211c26310ae98bfe39ab777 (diff) | |
download | manaplus-7fa069aec585316c34ada298ec557c7e800bf8f3.tar.gz manaplus-7fa069aec585316c34ada298ec557c7e800bf8f3.tar.bz2 manaplus-7fa069aec585316c34ada298ec557c7e800bf8f3.tar.xz manaplus-7fa069aec585316c34ada298ec557c7e800bf8f3.zip |
Using GL_ARB_sampler_objects.
Diffstat (limited to 'src/resources')
-rw-r--r-- | src/resources/openglimagehelper.cpp | 35 | ||||
-rw-r--r-- | src/resources/openglimagehelper.h | 13 |
2 files changed, 33 insertions, 15 deletions
diff --git a/src/resources/openglimagehelper.cpp b/src/resources/openglimagehelper.cpp index 8aed5330e..f1847c150 100644 --- a/src/resources/openglimagehelper.cpp +++ b/src/resources/openglimagehelper.cpp @@ -28,6 +28,7 @@ #include "game.h" #include "graphicsmanager.h" #include "logger.h" +#include "mgl.h" #include "normalopenglgraphics.h" #include "safeopenglgraphics.h" @@ -47,6 +48,7 @@ int OpenGLImageHelper::mInternalTextureType = GL_RGBA8; int OpenGLImageHelper::mTextureSize = 0; bool OpenGLImageHelper::mBlur = true; int OpenGLImageHelper::mUseOpenGL = 0; +bool OpenGLImageHelper::mUseTextureSampler = false; Image *OpenGLImageHelper::load(SDL_RWops *const rw, Dye const &dye) { @@ -222,15 +224,18 @@ Image *OpenGLImageHelper::glLoad(SDL_Surface *tmpImage) SDL_LockSurface(tmpImage); glTexEnvf(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_MODULATE); - if (mBlur) + if (!mUseTextureSampler) { - glTexParameteri(mTextureType, GL_TEXTURE_MIN_FILTER, GL_LINEAR); - glTexParameteri(mTextureType, GL_TEXTURE_MAG_FILTER, GL_LINEAR); - } - else - { - glTexParameteri(mTextureType, GL_TEXTURE_MIN_FILTER, GL_NEAREST); - glTexParameteri(mTextureType, GL_TEXTURE_MAG_FILTER, GL_NEAREST); + if (mBlur) + { + glTexParameteri(mTextureType, GL_TEXTURE_MIN_FILTER, GL_LINEAR); + glTexParameteri(mTextureType, GL_TEXTURE_MAG_FILTER, GL_LINEAR); + } + else + { + glTexParameteri(mTextureType, GL_TEXTURE_MIN_FILTER, GL_NEAREST); + glTexParameteri(mTextureType, GL_TEXTURE_MAG_FILTER, GL_NEAREST); + } } glTexImage2D(mTextureType, 0, mInternalTextureType, @@ -300,4 +305,18 @@ int OpenGLImageHelper::useOpenGL() { return mUseOpenGL; } + +void OpenGLImageHelper::initTextureSampler(GLint id) +{ + if (mBlur) + { + mglSamplerParameteri(id, GL_TEXTURE_MIN_FILTER, GL_LINEAR); + mglSamplerParameteri(id, GL_TEXTURE_MAG_FILTER, GL_LINEAR); + } + else + { + mglSamplerParameteri(id, GL_TEXTURE_MIN_FILTER, GL_NEAREST); + mglSamplerParameteri(id, GL_TEXTURE_MAG_FILTER, GL_NEAREST); + } +} #endif diff --git a/src/resources/openglimagehelper.h b/src/resources/openglimagehelper.h index 292e18138..e1a6d48cc 100644 --- a/src/resources/openglimagehelper.h +++ b/src/resources/openglimagehelper.h @@ -33,14 +33,7 @@ #include <SDL.h> #ifdef USE_OPENGL - -/* The definition of OpenGL extensions by SDL is giving problems with recent - * gl.h headers, since they also include these definitions. As we're not using - * extensions anyway it's safe to just disable the SDL version. - */ -//#define NO_SDL_GLEXT #define GL_GLEXT_PROTOTYPES 1 - #include <SDL_opengl.h> #endif @@ -112,6 +105,11 @@ class OpenGLImageHelper final : public ImageHelper static int getTextureSize() { return mTextureSize; } + static void initTextureSampler(GLint id); + + static void setUseTextureSampler(bool b) + { mUseTextureSampler = b; } + protected: /** * Returns the first power of two equal or bigger than the input. @@ -123,6 +121,7 @@ class OpenGLImageHelper final : public ImageHelper static int mUseOpenGL; static int mTextureSize; static bool mBlur; + static bool mUseTextureSampler; }; #endif |