From c8040b7bcd6e0e31ab1d3d90c137414cb8d0d997 Mon Sep 17 00:00:00 2001 From: havoc Date: Fri, 7 Mar 2003 09:31:10 +0000 Subject: [PATCH] added TEXF_FORCENEAREST and TEXF_FORCELINEAR flags git-svn-id: svn://svn.icculus.org/twilight/trunk/darkplaces@2810 d7cf8633-e32d-0410-b094-e92efae38249 --- gl_textures.c | 32 ++++++++++++++++++++++++++++---- r_textures.h | 6 +++++- 2 files changed, 33 insertions(+), 5 deletions(-) diff --git a/gl_textures.c b/gl_textures.c index f0b74a3c..a05ab290 100644 --- a/gl_textures.c +++ b/gl_textures.c @@ -567,11 +567,35 @@ static void GL_SetupTextureParameters(int flags, int texturetype) if (gltexturetypedimensions[texturetype] >= 3) qglTexParameteri(textureenum, GL_TEXTURE_WRAP_R, wrapmode); - if (flags & TEXF_MIPMAP) - qglTexParameteri(textureenum, GL_TEXTURE_MIN_FILTER, gl_filter_min); + if (flags & TEXF_FORCENEAREST) + { + if (flags & TEXF_MIPMAP) + qglTexParameteri(textureenum, GL_TEXTURE_MIN_FILTER, GL_NEAREST_MIPMAP_NEAREST); + else + qglTexParameteri(textureenum, GL_TEXTURE_MIN_FILTER, GL_NEAREST); + qglTexParameteri(textureenum, GL_TEXTURE_MAG_FILTER, GL_NEAREST); + } + else if (flags & TEXF_FORCELINEAR) + { + if (flags & TEXF_MIPMAP) + { + if (gl_filter_min == GL_NEAREST_MIPMAP_LINEAR || gl_filter_min == GL_LINEAR_MIPMAP_LINEAR) + qglTexParameteri(textureenum, GL_TEXTURE_MIN_FILTER, GL_LINEAR_MIPMAP_LINEAR); + else + qglTexParameteri(textureenum, GL_TEXTURE_MIN_FILTER, GL_LINEAR_MIPMAP_NEAREST); + } + else + qglTexParameteri(textureenum, GL_TEXTURE_MIN_FILTER, GL_LINEAR); + qglTexParameteri(textureenum, GL_TEXTURE_MAG_FILTER, GL_LINEAR); + } else - qglTexParameteri(textureenum, GL_TEXTURE_MIN_FILTER, gl_filter_mag); - qglTexParameteri(textureenum, GL_TEXTURE_MAG_FILTER, gl_filter_mag); + { + if (flags & TEXF_MIPMAP) + qglTexParameteri(textureenum, GL_TEXTURE_MIN_FILTER, gl_filter_min); + else + qglTexParameteri(textureenum, GL_TEXTURE_MIN_FILTER, gl_filter_mag); + qglTexParameteri(textureenum, GL_TEXTURE_MAG_FILTER, gl_filter_mag); + } CHECKGLERROR } diff --git a/r_textures.h b/r_textures.h index 5cf3753d..a6e323a3 100644 --- a/r_textures.h +++ b/r_textures.h @@ -15,8 +15,12 @@ #define TEXF_FRAGMENT 0x00000010 // indicates texture coordinates should be clamped rather than wrapping #define TEXF_CLAMP 0x00000020 +// indicates texture should be uploaded using GL_NEAREST or GL_NEAREST_MIPMAP_NEAREST mode +#define TEXF_FORCENEAREST 0x00000040 +// indicates texture should be uploaded using GL_LINEAR or GL_LINEAR_MIPMAP_NEAREST or GL_LINEAR_MIPMAP_LINEAR mode +#define TEXF_FORCELINEAR 0x00000080 // used for checking if textures mismatch -#define TEXF_IMPORTANTBITS (TEXF_ALPHA | TEXF_MIPMAP | TEXF_FRAGMENT | TEXF_CLAMP) +#define TEXF_IMPORTANTBITS (TEXF_ALPHA | TEXF_MIPMAP | TEXF_FRAGMENT | TEXF_CLAMP | TEXF_FORCENEAREST | TEXF_FORCELINEAR) // 8bit paletted #define TEXTYPE_PALETTE 1 -- 2.39.2