Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCampbell Barton <ideasman42@gmail.com>2008-09-23 19:21:14 +0400
committerCampbell Barton <ideasman42@gmail.com>2008-09-23 19:21:14 +0400
commitbd85367776a9efb6d4bb70b3d336ced7fe727812 (patch)
tree97c53a857867d880960a9d07266d6c8640e6207c /source/blender/gpu
parentd72d4a505824b59447e84cd27a692d786c452978 (diff)
disable magnification filtering when mipmap is off. useful for texture low poly models.
Diffstat (limited to 'source/blender/gpu')
-rw-r--r--source/blender/gpu/intern/gpu_draw.c13
1 files changed, 8 insertions, 5 deletions
diff --git a/source/blender/gpu/intern/gpu_draw.c b/source/blender/gpu/intern/gpu_draw.c
index fe47fa3c60e..700dd6dedb2 100644
--- a/source/blender/gpu/intern/gpu_draw.c
+++ b/source/blender/gpu/intern/gpu_draw.c
@@ -222,7 +222,10 @@ static int gpu_get_mipmap(void)
static GLenum gpu_get_mipmap_filter()
{
- return GTS.linearmipmap? GL_LINEAR_MIPMAP_LINEAR: GL_LINEAR_MIPMAP_NEAREST;
+ /* linearmipmap is off by default
+ * when mipmapping is off, use unfiltered display */
+ return GTS.linearmipmap? GL_LINEAR_MIPMAP_LINEAR :
+ (GTS.domipmap ? GL_LINEAR_MIPMAP_NEAREST : GL_NEAREST);
}
/* Set OpenGL state for an MTFace */
@@ -474,12 +477,12 @@ int GPU_verify_image(Image *ima, int tftile, int tfmode, int compare)
if (!gpu_get_mipmap()) {
glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, rectw, recth, 0, GL_RGBA, GL_UNSIGNED_BYTE, rect);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
- glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
+ glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, gpu_get_mipmap_filter());
}
else {
gluBuild2DMipmaps(GL_TEXTURE_2D, GL_RGBA, rectw, recth, GL_RGBA, GL_UNSIGNED_BYTE, rect);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, gpu_get_mipmap_filter());
- glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
+ glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, gpu_get_mipmap_filter());
ima->tpageflag |= IMA_MIPMAP_COMPLETE;
}
@@ -572,7 +575,7 @@ void GPU_paint_set_mipmap(int mipmap)
if(ima->tpageflag & IMA_MIPMAP_COMPLETE) {
glBindTexture(GL_TEXTURE_2D, ima->bindcode);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, gpu_get_mipmap_filter());
- glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
+ glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, gpu_get_mipmap_filter());
}
else
GPU_free_image(ima);
@@ -585,7 +588,7 @@ void GPU_paint_set_mipmap(int mipmap)
if(ima->bindcode) {
glBindTexture(GL_TEXTURE_2D, ima->bindcode);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
- glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
+ glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, gpu_get_mipmap_filter());
}
}
}