new depth tests
authorKeith Whitwell <keith@tungstengraphics.com>
Fri, 21 Oct 2005 18:34:22 +0000 (18:34 +0000)
committerKeith Whitwell <keith@tungstengraphics.com>
Fri, 21 Oct 2005 18:34:22 +0000 (18:34 +0000)
progs/fp/tri-depth.c [new file with mode: 0644]
progs/fp/tri-depth2.c [new file with mode: 0644]
progs/fp/tri-depthwrite.c [new file with mode: 0644]
progs/fp/tri-depthwrite2.c [new file with mode: 0644]

diff --git a/progs/fp/tri-depth.c b/progs/fp/tri-depth.c
new file mode 100644 (file)
index 0000000..a1f0579
--- /dev/null
@@ -0,0 +1,111 @@
+
+#include <stdio.h>
+#include <string.h>
+#include <stdlib.h>
+#define GL_GLEXT_PROTOTYPES
+#include <GL/glut.h>
+#include "GL/gl.h"
+
+
+
+static void Init( void )
+{
+   /* scale of 10.0 gives me a visible result on nv hardware.
+    */
+   static const char *modulate2D =
+      "!!ARBfp1.0\n"
+      "MUL result.color, fragment.position.z, {10.0}.x; \n"
+      "END"
+      ;
+   GLuint modulateProg;
+
+   if (!glutExtensionSupported("GL_ARB_fragment_program")) {
+      printf("Error: GL_ARB_fragment_program not supported!\n");
+      exit(1);
+   }
+   printf("GL_RENDERER = %s\n", (char *) glGetString(GL_RENDERER));
+
+   /* Setup the fragment program */
+   glGenProgramsARB(1, &modulateProg);
+   glBindProgramARB(GL_FRAGMENT_PROGRAM_ARB, modulateProg);
+   glProgramStringARB(GL_FRAGMENT_PROGRAM_ARB, GL_PROGRAM_FORMAT_ASCII_ARB,
+                        strlen(modulate2D), (const GLubyte *)modulate2D);
+
+   printf("glGetError = 0x%x\n", (int) glGetError());
+   printf("glError(GL_PROGRAM_ERROR_STRING_ARB) = %s\n",
+          (char *) glGetString(GL_PROGRAM_ERROR_STRING_ARB));
+
+   glEnable(GL_FRAGMENT_PROGRAM_ARB);
+
+   glClearColor(.3, .3, .3, 0);
+}
+
+static void Reshape(int width, int height)
+{
+
+    glViewport(0, 0, (GLint)width, (GLint)height);
+
+    glMatrixMode(GL_PROJECTION);
+    glLoadIdentity();
+    glOrtho(-1.0, 1.0, -1.0, 1.0, -0.5, 1000.0);
+    glMatrixMode(GL_MODELVIEW);
+}
+
+static void Key(unsigned char key, int x, int y)
+{
+
+    switch (key) {
+      case 27:
+       exit(1);
+      default:
+       return;
+    }
+
+    glutPostRedisplay();
+}
+
+static void Draw(void)
+{
+   glClear(GL_COLOR_BUFFER_BIT); 
+
+   glBegin(GL_TRIANGLES);
+   glColor3f(0,0,1); 
+   glVertex3f( 0.9, -0.9, -40.0);
+   glColor3f(1,0,0); 
+   glVertex3f( 0.9,  0.9, -40.0);
+   glColor3f(0,1,0); 
+   glVertex3f(-0.9,  0.0, -25.0);
+   glEnd();
+
+   glFlush();
+
+
+}
+
+
+int main(int argc, char **argv)
+{
+    GLenum type;
+
+    glutInit(&argc, argv);
+
+
+
+    glutInitWindowPosition(0, 0); glutInitWindowSize( 250, 250);
+
+    type = GLUT_RGB;
+    type |= GLUT_SINGLE;
+    glutInitDisplayMode(type);
+
+    if (glutCreateWindow("First Tri") == GL_FALSE) {
+       exit(1);
+    }
+
+    Init();
+
+    glutReshapeFunc(Reshape);
+    glutKeyboardFunc(Key);
+    glutDisplayFunc(Draw);
+    glutMainLoop();
+       return 0;
+}
diff --git a/progs/fp/tri-depth2.c b/progs/fp/tri-depth2.c
new file mode 100644 (file)
index 0000000..f309628
--- /dev/null
@@ -0,0 +1,116 @@
+
+#include <stdio.h>
+#include <string.h>
+#include <stdlib.h>
+#define GL_GLEXT_PROTOTYPES
+#include <GL/glut.h>
+#include "GL/gl.h"
+
+
+
+static void Init( void )
+{
+   /* scale of 10.0 gives me a visible result on nv hardware.
+    */
+   static const char *modulate2D =
+      "!!ARBfp1.0\n"
+      "TEMP R0;\n"
+      "MUL R0, fragment.position.z, {10.0}.x;\n"
+      "MOV result.color, R0; \n"
+      "END"
+      ;
+   GLuint modulateProg;
+
+   if (!glutExtensionSupported("GL_ARB_fragment_program")) {
+      printf("Error: GL_ARB_fragment_program not supported!\n");
+      exit(1);
+   }
+   printf("GL_RENDERER = %s\n", (char *) glGetString(GL_RENDERER));
+
+   /* Setup the fragment program */
+   glGenProgramsARB(1, &modulateProg);
+   glBindProgramARB(GL_FRAGMENT_PROGRAM_ARB, modulateProg);
+   glProgramStringARB(GL_FRAGMENT_PROGRAM_ARB, GL_PROGRAM_FORMAT_ASCII_ARB,
+                        strlen(modulate2D), (const GLubyte *)modulate2D);
+
+   printf("glGetError = 0x%x\n", (int) glGetError());
+   printf("glError(GL_PROGRAM_ERROR_STRING_ARB) = %s\n",
+          (char *) glGetString(GL_PROGRAM_ERROR_STRING_ARB));
+
+   glEnable(GL_FRAGMENT_PROGRAM_ARB);
+
+   glClearColor(.3, .3, .3, 0);
+}
+
+static void Reshape(int width, int height)
+{
+
+    glViewport(0, 0, (GLint)width, (GLint)height);
+
+    glMatrixMode(GL_PROJECTION);
+    glLoadIdentity();
+    glOrtho(-1.0, 1.0, -1.0, 1.0, -0.5, 1000.0);
+    glMatrixMode(GL_MODELVIEW);
+}
+
+static void Key(unsigned char key, int x, int y)
+{
+
+    switch (key) {
+      case 27:
+       exit(1);
+      default:
+       return;
+    }
+
+    glutPostRedisplay();
+}
+
+static void Draw(void)
+{
+   glClear(GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT);
+   glEnable(GL_DEPTH_TEST);
+
+   glBegin(GL_TRIANGLES);
+   glColor3f(0,0,1);
+       glVertex3f( 0.9, -0.9, -30.0);
+       glVertex3f( 0.9,  0.9, -30.0);
+       glVertex3f(-0.9,  0.0, -30.0);
+   glColor3f(0,1,0);
+       glVertex3f(-0.9, -0.9, -40.0);
+       glVertex3f(-0.9,  0.9, -40.0);
+       glVertex3f( 0.9,  0.0, -25.0);
+   glEnd();
+
+   glFlush();
+
+
+}
+
+
+int main(int argc, char **argv)
+{
+    GLenum type;
+
+    glutInit(&argc, argv);
+
+
+
+    glutInitWindowPosition(0, 0); glutInitWindowSize( 250, 250);
+
+    type = GLUT_RGB | GLUT_DEPTH;
+    type |= GLUT_SINGLE;
+    glutInitDisplayMode(type);
+
+    if (glutCreateWindow("First Tri") == GL_FALSE) {
+       exit(1);
+    }
+
+    Init();
+
+    glutReshapeFunc(Reshape);
+    glutKeyboardFunc(Key);
+    glutDisplayFunc(Draw);
+    glutMainLoop();
+       return 0;
+}
diff --git a/progs/fp/tri-depthwrite.c b/progs/fp/tri-depthwrite.c
new file mode 100644 (file)
index 0000000..fedeec4
--- /dev/null
@@ -0,0 +1,107 @@
+
+#include <stdio.h>
+#include <string.h>
+#include <stdlib.h>
+#define GL_GLEXT_PROTOTYPES
+#include <GL/glut.h>
+
+
+static void Init(void)
+{
+   static const char *modulate2D =
+      "!!ARBfp1.0\n"
+      "MUL result.depth.z, fragment.color.z, {.1}.x; \n"
+      "MOV result.color.xy, fragment.color; \n"
+      "END"
+      ;
+   GLuint modulateProg;
+
+   if (!glutExtensionSupported("GL_ARB_fragment_program")) {
+      printf("Error: GL_ARB_fragment_program not supported!\n");
+      exit(1);
+   }
+   printf("GL_RENDERER = %s\n", (char *) glGetString(GL_RENDERER));
+
+   /* Setup the fragment program */
+   glGenProgramsARB(1, &modulateProg);
+   glBindProgramARB(GL_FRAGMENT_PROGRAM_ARB, modulateProg);
+   glProgramStringARB(GL_FRAGMENT_PROGRAM_ARB, GL_PROGRAM_FORMAT_ASCII_ARB,
+                        strlen(modulate2D), (const GLubyte *)modulate2D);
+
+   printf("glGetError = 0x%x\n", (int) glGetError());
+   printf("glError(GL_PROGRAM_ERROR_STRING_ARB) = %s\n",
+          (char *) glGetString(GL_PROGRAM_ERROR_STRING_ARB));
+
+   glEnable(GL_FRAGMENT_PROGRAM_ARB);
+
+   glClearColor(.3, .3, .3, 0);
+}
+
+static void Reshape(int width, int height)
+{
+
+    glViewport(0, 0, (GLint)width, (GLint)height);
+
+    glMatrixMode(GL_PROJECTION);
+    glLoadIdentity();
+    glOrtho(-1.0, 1.0, -1.0, 1.0, -0.5, 1000.0);
+    glMatrixMode(GL_MODELVIEW);
+}
+
+static void Key(unsigned char key, int x, int y)
+{
+
+    switch (key) {
+      case 27:
+       exit(1);
+      default:
+       return;
+    }
+
+    glutPostRedisplay();
+}
+
+static void Draw(void)
+{
+    glClear(GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT);
+       glEnable(GL_DEPTH_TEST);
+
+
+    glBegin(GL_TRIANGLES);
+    glColor4f(.8,0,.5,0);
+       glVertex3f( 0.9, -0.9, -30.0);
+       glVertex3f( 0.9,  0.9, -30.0);
+       glVertex3f(-0.9,  0.0, -30.0);
+
+    glColor4f(0,.8,.7,0);
+       glVertex3f(-0.9, -0.9, -40.0);
+    glColor4f(0,.8,.7,0);
+       glVertex3f(-0.9,  0.9, -40.0);
+    glColor4f(0,.8,.3,0);
+       glVertex3f( 0.9,  0.0, -40.0);
+    glEnd();
+
+    glFlush();
+}
+
+
+int main(int argc, char **argv)
+{
+    glutInit(&argc, argv);
+
+    glutInitWindowPosition(0, 0); glutInitWindowSize( 300, 300);
+
+    glutInitDisplayMode(GLUT_DEPTH | GLUT_RGB | GLUT_SINGLE);
+
+    if (glutCreateWindow("Depth Test") == GL_FALSE) {
+       exit(1);
+    }
+
+    Init();
+
+    glutReshapeFunc(Reshape);
+    glutKeyboardFunc(Key);
+    glutDisplayFunc(Draw);
+    glutMainLoop();
+       return 0;
+}
diff --git a/progs/fp/tri-depthwrite2.c b/progs/fp/tri-depthwrite2.c
new file mode 100644 (file)
index 0000000..5547092
--- /dev/null
@@ -0,0 +1,107 @@
+
+#include <stdio.h>
+#include <string.h>
+#include <stdlib.h>
+#define GL_GLEXT_PROTOTYPES
+#include <GL/glut.h>
+
+
+static void Init(void)
+{
+   static const char *modulate2D =
+      "!!ARBfp1.0\n"
+      "MUL result.depth.z, fragment.color.z, {.1}.x; \n"
+      "MOV result.color, fragment.color.z; \n"
+      "END"
+      ;
+   GLuint modulateProg;
+
+   if (!glutExtensionSupported("GL_ARB_fragment_program")) {
+      printf("Error: GL_ARB_fragment_program not supported!\n");
+      exit(1);
+   }
+   printf("GL_RENDERER = %s\n", (char *) glGetString(GL_RENDERER));
+
+   /* Setup the fragment program */
+   glGenProgramsARB(1, &modulateProg);
+   glBindProgramARB(GL_FRAGMENT_PROGRAM_ARB, modulateProg);
+   glProgramStringARB(GL_FRAGMENT_PROGRAM_ARB, GL_PROGRAM_FORMAT_ASCII_ARB,
+                        strlen(modulate2D), (const GLubyte *)modulate2D);
+
+   printf("glGetError = 0x%x\n", (int) glGetError());
+   printf("glError(GL_PROGRAM_ERROR_STRING_ARB) = %s\n",
+          (char *) glGetString(GL_PROGRAM_ERROR_STRING_ARB));
+
+   glEnable(GL_FRAGMENT_PROGRAM_ARB);
+
+   glClearColor(.3, .3, .3, 0);
+}
+
+static void Reshape(int width, int height)
+{
+
+    glViewport(0, 0, (GLint)width, (GLint)height);
+
+    glMatrixMode(GL_PROJECTION);
+    glLoadIdentity();
+    glOrtho(-1.0, 1.0, -1.0, 1.0, -0.5, 1000.0);
+    glMatrixMode(GL_MODELVIEW);
+}
+
+static void Key(unsigned char key, int x, int y)
+{
+
+    switch (key) {
+      case 27:
+       exit(1);
+      default:
+       return;
+    }
+
+    glutPostRedisplay();
+}
+
+static void Draw(void)
+{
+    glClear(GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT);
+       glEnable(GL_DEPTH_TEST);
+
+
+    glBegin(GL_TRIANGLES);
+    glColor4f(.8,0,.5,0);
+       glVertex3f( 0.9, -0.9, -30.0);
+       glVertex3f( 0.9,  0.9, -30.0);
+       glVertex3f(-0.9,  0.0, -30.0);
+
+    glColor4f(0,.8,.7,0);
+       glVertex3f(-0.9, -0.9, -40.0);
+    glColor4f(0,.8,.7,0);
+       glVertex3f(-0.9,  0.9, -40.0);
+    glColor4f(0,.8,.3,0);
+       glVertex3f( 0.9,  0.0, -40.0);
+    glEnd();
+
+    glFlush();
+}
+
+
+int main(int argc, char **argv)
+{
+    glutInit(&argc, argv);
+
+    glutInitWindowPosition(0, 0); glutInitWindowSize( 300, 300);
+
+    glutInitDisplayMode(GLUT_DEPTH | GLUT_RGB | GLUT_SINGLE);
+
+    if (glutCreateWindow("Depth Test") == GL_FALSE) {
+       exit(1);
+    }
+
+    Init();
+
+    glutReshapeFunc(Reshape);
+    glutKeyboardFunc(Key);
+    glutDisplayFunc(Draw);
+    glutMainLoop();
+       return 0;
+}