progs/tests: also test stencil INCR_WRAP mode if supported
[mesa.git] / progs / tests / texline.c
index 806d328bb6271f5199148933249da5be0aface43..1803832b47e6ddadc75d9dd44080def92042856d 100644 (file)
@@ -1,4 +1,3 @@
-/* $Id: texline.c,v 1.3 2001/05/21 17:45:25 brianp Exp $ */
 
 /*
  * Test textured lines.
@@ -7,10 +6,10 @@
  * September 2000
  */
 
-
 #include <stdio.h>
 #include <stdlib.h>
 #include <math.h>
+#include <GL/glew.h>
 #include <GL/glut.h>
 #include "../util/readtex.c"   /* I know, this is a hack. */
 
 
 static GLboolean Antialias = GL_FALSE;
 static GLboolean Animate = GL_FALSE;
-static GLboolean Texture = GL_TRUE;
+static GLint Texture = 1;
+static GLboolean Stipple = GL_FALSE;
 static GLfloat LineWidth = 1.0;
-static GLboolean Multitex = GL_FALSE;
 
 static GLfloat Xrot = -60.0, Yrot = 0.0, Zrot = 0.0;
 static GLfloat DYrot = 1.0;
 static GLboolean Points = GL_FALSE;
-
+static GLfloat Scale = 1.0;
 
 static void Idle( void )
 {
@@ -46,6 +45,7 @@ static void Display( void )
    glRotatef(Xrot, 1.0, 0.0, 0.0);
    glRotatef(Yrot, 0.0, 1.0, 0.0);
    glRotatef(Zrot, 0.0, 0.0, 1.0);
+   glScalef(Scale, Scale, Scale);
 
    if (Texture)
       glColor3f(1, 1, 1);
@@ -122,11 +122,27 @@ static void Key( unsigned char key, int x, int y )
          }
          break;
       case 't':
-         Texture = !Texture;
-         if (Texture)
+         Texture++;
+         if (Texture > 2)
+            Texture = 0;
+         if (Texture == 0) {
+            glActiveTextureARB(GL_TEXTURE0_ARB);
+            glDisable(GL_TEXTURE_2D);
+            glActiveTextureARB(GL_TEXTURE1_ARB);
+            glDisable(GL_TEXTURE_2D);
+         }
+         else if (Texture == 1) {
+            glActiveTextureARB(GL_TEXTURE0_ARB);
             glEnable(GL_TEXTURE_2D);
-         else
+            glActiveTextureARB(GL_TEXTURE1_ARB);
             glDisable(GL_TEXTURE_2D);
+         }
+         else {
+            glActiveTextureARB(GL_TEXTURE0_ARB);
+            glEnable(GL_TEXTURE_2D);
+            glActiveTextureARB(GL_TEXTURE1_ARB);
+            glEnable(GL_TEXTURE_2D);
+         }
          break;
       case 'w':
          LineWidth -= 0.25;
@@ -142,18 +158,16 @@ static void Key( unsigned char key, int x, int y )
          glLineWidth(LineWidth);
          glPointSize(LineWidth);
          break;
-      case 'm':
-         Multitex = !Multitex;
-         if (Multitex) {
-            glEnable(GL_TEXTURE_2D);
-         }
-         else {
-            glDisable(GL_TEXTURE_2D);
-         }
-         break;
       case 'p':
          Points = !Points;
          break;
+      case 's':
+         Stipple = !Stipple;
+         if (Stipple)
+            glEnable(GL_LINE_STIPPLE);
+         else
+            glDisable(GL_LINE_STIPPLE);
+         break;
       case ' ':
          Animate = !Animate;
          if (Animate)
@@ -196,11 +210,13 @@ static void SpecialKey( int key, int x, int y )
 
 static void Init( int argc, char *argv[] )
 {
+   GLfloat r[2];
    GLuint u;
+
    for (u = 0; u < 2; u++) {
       glActiveTextureARB(GL_TEXTURE0_ARB + u);
       glBindTexture(GL_TEXTURE_2D, 10+u);
-      if (u == 0 || Multitex)
+      if (u == 0)
          glEnable(GL_TEXTURE_2D);
       glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST);
       glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST);
@@ -219,23 +235,36 @@ static void Init( int argc, char *argv[] )
       }
    }
 
+   glLineStipple(1, 0xff);
+
    if (argc > 1 && strcmp(argv[1], "-info")==0) {
       printf("GL_RENDERER   = %s\n", (char *) glGetString(GL_RENDERER));
       printf("GL_VERSION    = %s\n", (char *) glGetString(GL_VERSION));
       printf("GL_VENDOR     = %s\n", (char *) glGetString(GL_VENDOR));
       printf("GL_EXTENSIONS = %s\n", (char *) glGetString(GL_EXTENSIONS));
    }
+
+   glGetFloatv(GL_ALIASED_POINT_SIZE_RANGE, r);
+   printf("Non-smooth point size range: %g .. %g\n", r[0], r[1]);
+   glGetFloatv(GL_POINT_SIZE_RANGE, r);
+   printf("Smoothed point size range: %g .. %g\n", r[0], r[1]);
+   glGetFloatv(GL_ALIASED_LINE_WIDTH_RANGE, r);
+   printf("Non-smooth line width range: %g .. %g\n", r[0], r[1]);
+   glGetFloatv(GL_LINE_WIDTH_RANGE, r);
+   printf("Smoothed line width range: %g .. %g\n", r[0], r[1]);
 }
 
 
 int main( int argc, char *argv[] )
 {
    glutInit( &argc, argv );
+   glutInitWindowPosition(0, 0);
    glutInitWindowSize( 400, 300 );
 
    glutInitDisplayMode( GLUT_RGB | GLUT_DOUBLE );
 
    glutCreateWindow(argv[0] );
+   glewInit();
 
    Init(argc, argv);