Demos (master): Add some extra filter types to the mipmap_limits demo.
Henri Verbeet
hverbeet at kemper.freedesktop.org
Wed Feb 2 00:10:34 UTC 2011
Module: Demos
Branch: master
Commit: 0838d8038f2a53341a492c62a6368c9d33390521
URL: http://cgit.freedesktop.org/mesa/demos/commit/?id=0838d8038f2a53341a492c62a6368c9d33390521
Author: Henri Verbeet <hverbeet at gmail.com>
Date: Wed Feb 2 01:09:57 2011 +0100
Add some extra filter types to the mipmap_limits demo.
---
src/tests/mipmap_limits.c | 45 ++++++++++++++++++++++++++++++++-------------
1 files changed, 32 insertions(+), 13 deletions(-)
diff --git a/src/tests/mipmap_limits.c b/src/tests/mipmap_limits.c
index 9418e90..0274f2b 100644
--- a/src/tests/mipmap_limits.c
+++ b/src/tests/mipmap_limits.c
@@ -63,6 +63,22 @@ static GLfloat MinLod = -1, MaxLod = 9;
static GLfloat LodBias = 0.0;
static GLboolean NearestFilter = GL_TRUE;
static GLuint texImage, texColor, texCurrent;
+static unsigned int min_filter;
+
+static const struct
+{
+ GLint value;
+ const char *name;
+}
+min_filters[] =
+{
+ {GL_LINEAR_MIPMAP_LINEAR, "LINEAR_MIPMAP_LINEAR"},
+ {GL_NEAREST_MIPMAP_LINEAR, "NEAREST_MIPMAP_LINEAR"},
+ {GL_LINEAR_MIPMAP_NEAREST, "LINEAR_MIPMAP_NEAREST"},
+ {GL_NEAREST_MIPMAP_NEAREST, "NEAREST_MIPMAP_NEAREST"},
+ {GL_LINEAR, "LINEAR"},
+ {GL_NEAREST, "NEAREST"},
+};
static void
@@ -203,8 +219,8 @@ display(void)
glBindTexture(GL_TEXTURE_2D, texCurrent);
printf
- ("BASE_LEVEL=%d MAX_LEVEL=%d MIN_LOD=%.2g MAX_LOD=%.2g Bias=%.2g Filter=%s\n",
- BaseLevel, MaxLevel, MinLod, MaxLod, LodBias,
+ ("BASE_LEVEL=%d MAX_LEVEL=%d MIN_LOD=%.2g MAX_LOD=%.2g Bias=%.2g Filter=%s/%s\n",
+ BaseLevel, MaxLevel, MinLod, MaxLod, LodBias, min_filters[min_filter].name,
NearestFilter ? "NEAREST" : "LINEAR");
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_BASE_LEVEL, BaseLevel);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAX_LEVEL, MaxLevel);
@@ -212,16 +228,8 @@ display(void)
glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MIN_LOD, MinLod);
glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MAX_LOD, MaxLod);
- if (NearestFilter) {
- glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST);
- glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER,
- GL_NEAREST_MIPMAP_NEAREST);
- }
- else {
- glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
- glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER,
- GL_LINEAR_MIPMAP_LINEAR);
- }
+ glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, min_filters[min_filter].value);
+ glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, NearestFilter ? GL_NEAREST : GL_LINEAR);
glTexEnvf(GL_TEXTURE_FILTER_CONTROL_EXT, GL_TEXTURE_LOD_BIAS_EXT, LodBias);
@@ -260,7 +268,8 @@ usage(void)
printf(" n/N decrease/increase GL_TEXTURE_MIN_LOD\n");
printf(" x/X decrease/increase GL_TEXTURE_MAX_LOD\n");
printf(" l/L decrease/increase GL_TEXTURE_LOD_BIAS\n");
- printf(" f toggle nearest/linear filtering\n");
+ printf(" f/F cycle minification filter\n");
+ printf(" g toggle nearest/linear magnification filter\n");
printf(" t toggle texture color/image\n");
printf(" SPACE reset values\n");
}
@@ -310,6 +319,16 @@ key(unsigned char k, int x, int y)
MaxLod += 0.25;
break;
case 'f':
+ if (!min_filter)
+ min_filter = sizeof(min_filters) / sizeof(*min_filters);
+ min_filter--;
+ break;
+ case 'F':
+ min_filter++;
+ if (min_filter == sizeof(min_filters) / sizeof(*min_filters))
+ min_filter = 0;
+ break;
+ case 'g':
NearestFilter = !NearestFilter;
break;
case 't':
More information about the mesa-commit
mailing list