added missing GL_MAX_TEXTURE_LOD_BIAS_EXT query
authorBrian Paul <brian.paul@tungstengraphics.com>
Tue, 6 Nov 2001 15:53:00 +0000 (15:53 +0000)
committerBrian Paul <brian.paul@tungstengraphics.com>
Tue, 6 Nov 2001 15:53:00 +0000 (15:53 +0000)
progs/demos/lodbias.c
src/mesa/main/config.h
src/mesa/main/context.c
src/mesa/main/get.c
src/mesa/main/mtypes.h
src/mesa/main/texstate.c

index b2fab0b4eb7e4713e5d88e45dd8f22fda68e0ce1..3533241be557a8990dfdd022278d6983a4243718 100644 (file)
@@ -40,7 +40,7 @@
 static GLfloat Xrot = 0, Yrot = -30, Zrot = 0;
 static GLboolean Anim = GL_TRUE;
 static GLint Bias = 0, BiasStepSign = +1; /* ints avoid fp precision problem */
-static GLint BiasMin = -200, BiasMax = 500;
+static GLint BiasMin = -400, BiasMax = 400;
 
 
 
@@ -192,6 +192,8 @@ static void SpecialKey( int key, int x, int y )
 static void Init( void )
 {
    const char *exten = (const char *) glGetString(GL_EXTENSIONS);
+   GLfloat maxBias;
+
    if (!strstr(exten, "GL_EXT_texture_lod_bias")) {
       printf("Sorry, GL_EXT_texture_lod_bias not supported by this renderer.\n");
       exit(1);
@@ -207,6 +209,11 @@ static void Init( void )
    glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR_MIPMAP_LINEAR);
    glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
    glTexEnvi(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_MODULATE);
+
+   glGetFloatv(GL_MAX_TEXTURE_LOD_BIAS_EXT, &maxBias);
+   printf("LOD bias range: [%g, %g]\n", -maxBias, maxBias);
+   BiasMin = -100 * maxBias;
+   BiasMax =  100 * maxBias;
 }
 
 
index fa65d611bd0b23c8f9be0a9b1b25c03368dade9b..6e1bde8512e5af07568e4ca1c029a9287e87a1b5 100644 (file)
@@ -1,4 +1,4 @@
-/* $Id: config.h,v 1.34 2001/07/16 15:54:23 brianp Exp $ */
+/* $Id: config.h,v 1.35 2001/11/06 15:53:00 brianp Exp $ */
 
 /*
  * Mesa 3-D graphics library
 /* GL_EXT_texture_filter_anisotropic */
 #define MAX_TEXTURE_MAX_ANISOTROPY 16.0
 
+/* GL_EXT_texture_lod_bias */
+#define MAX_TEXTURE_LOD_BIAS 4.0
+
 
 
 /*
index 690071fee92dd7ac5a05ebb253c7ff7607a44790..230af9c564fa86e7050c1fdb4b0d1bac3568555c 100644 (file)
@@ -1,4 +1,4 @@
-/* $Id: context.c,v 1.148 2001/10/18 08:04:57 joukj Exp $ */
+/* $Id: context.c,v 1.149 2001/11/06 15:53:00 brianp Exp $ */
 
 /*
  * Mesa 3-D graphics library
@@ -738,6 +738,7 @@ init_attrib_groups( GLcontext *ctx )
    ctx->Const.MaxCubeTextureLevels = MAX_CUBE_TEXTURE_LEVELS;
    ctx->Const.MaxTextureUnits = MAX_TEXTURE_UNITS;
    ctx->Const.MaxTextureMaxAnisotropy = MAX_TEXTURE_MAX_ANISOTROPY;
+   ctx->Const.MaxTextureLodBias = MAX_TEXTURE_LOD_BIAS;
    ctx->Const.MaxArrayLockSize = MAX_ARRAY_LOCK_SIZE;
    ctx->Const.SubPixelBits = SUB_PIXEL_BITS;
    ctx->Const.MinPointSize = MIN_POINT_SIZE;
index 1588127622f3c420e68379c83cd7a65bcef2fc26..b7f5d09b794ba7ecb2a3238b9b274a9fa6460f5b 100644 (file)
@@ -1,4 +1,4 @@
-/* $Id: get.c,v 1.71 2001/10/25 23:21:28 brianp Exp $ */
+/* $Id: get.c,v 1.72 2001/11/06 15:53:00 brianp Exp $ */
 
 /*
  * Mesa 3-D graphics library
@@ -1258,6 +1258,11 @@ _mesa_GetBooleanv( GLenum pname, GLboolean *params )
         *params = INT_TO_BOOL(ctx->Array.FogCoord.Stride);
         break;
 
+      /* GL_EXT_texture_lod_bias */
+      case GL_MAX_TEXTURE_LOD_BIAS_EXT:
+         *params = FLOAT_TO_BOOL(ctx->Const.MaxTextureLodBias);
+         break;
+
       /* GL_EXT_texture_filter_anisotropic */
       case GL_MAX_TEXTURE_MAX_ANISOTROPY_EXT:
          if (ctx->Extensions.EXT_texture_filter_anisotropic) {
@@ -2557,6 +2562,11 @@ _mesa_GetDoublev( GLenum pname, GLdouble *params )
         *params = (GLdouble) ctx->Array.FogCoord.Stride;
         break;
 
+      /* GL_EXT_texture_lod_bias */
+      case GL_MAX_TEXTURE_LOD_BIAS_EXT:
+         *params = (GLdouble) ctx->Const.MaxTextureLodBias;
+         break;
+
       /* GL_EXT_texture_filter_anisotropic */
       case GL_MAX_TEXTURE_MAX_ANISOTROPY_EXT:
          if (ctx->Extensions.EXT_texture_filter_anisotropic) {
@@ -3837,6 +3847,11 @@ _mesa_GetFloatv( GLenum pname, GLfloat *params )
         *params = (GLfloat) ctx->Array.FogCoord.Stride;
         break;
 
+      /* GL_EXT_texture_lod_bias */
+      case GL_MAX_TEXTURE_LOD_BIAS_EXT:
+         *params = ctx->Const.MaxTextureLodBias;
+         break;
+
       /* GL_EXT_texture_filter_anisotropic */
       case GL_MAX_TEXTURE_MAX_ANISOTROPY_EXT:
          if (ctx->Extensions.EXT_texture_filter_anisotropic) {
@@ -5159,6 +5174,11 @@ _mesa_GetIntegerv( GLenum pname, GLint *params )
          }
         break;
 
+      /* GL_EXT_texture_lod_bias */
+      case GL_MAX_TEXTURE_LOD_BIAS_EXT:
+         *params = (GLint) ctx->Const.MaxTextureLodBias;
+         break;
+
       /* GL_EXT_texture_filter_anisotropic */
       case GL_MAX_TEXTURE_MAX_ANISOTROPY_EXT:
          if (ctx->Extensions.EXT_texture_filter_anisotropic) {
index c670e574132f83cd5bf0b2febfab62fb478b55a5..b4853f64e66f63e868c06d8dcfba930adba8335f 100644 (file)
@@ -1,4 +1,4 @@
-/* $Id: mtypes.h,v 1.51 2001/10/17 13:31:07 brianp Exp $ */
+/* $Id: mtypes.h,v 1.52 2001/11/06 15:53:00 brianp Exp $ */
 
 /*
  * Mesa 3-D graphics library
@@ -1165,6 +1165,7 @@ struct gl_constants {
    GLint MaxCubeTextureLevels;
    GLuint MaxTextureUnits;
    GLfloat MaxTextureMaxAnisotropy;    /* GL_EXT_texture_filter_anisotropic */
+   GLfloat MaxTextureLodBias;           /* GL_EXT_texture_lod_bias */
    GLuint MaxArrayLockSize;
    GLint SubPixelBits;
    GLfloat MinPointSize, MaxPointSize;         /* aliased */
index f2f021160664b5fe50989c21a49fbef4421d333f..06c3f81871af0facd7f27a1e9c83646efbae28a2 100644 (file)
@@ -1,4 +1,4 @@
-/* $Id: texstate.c,v 1.58 2001/10/17 13:31:07 brianp Exp $ */
+/* $Id: texstate.c,v 1.59 2001/11/06 15:53:00 brianp Exp $ */
 
 /*
  * Mesa 3-D graphics library
@@ -413,7 +413,8 @@ _mesa_TexEnvfv( GLenum target, GLenum pname, const GLfloat *param )
         if (texUnit->LodBias == param[0])
            return;
         FLUSH_VERTICES(ctx, _NEW_TEXTURE);
-        texUnit->LodBias = param[0];
+         texUnit->LodBias = CLAMP(param[0], -ctx->Const.MaxTextureLodBias,
+                                  ctx->Const.MaxTextureLodBias);
         break;
       default:
          TE_ERROR(GL_INVALID_ENUM, "glTexEnv(pname=%s)", pname);