summaryrefslogtreecommitdiffstats
path: root/progs/tests/stencilreaddraw.c
diff options
context:
space:
mode:
authorEric Anholt <[email protected]>2010-05-21 09:32:38 -0700
committerEric Anholt <[email protected]>2010-05-21 12:20:39 -0700
commit68fc4b415e322f6744299e39864fbc377c6eff74 (patch)
tree4bafffd8b0105174f3c5c0ae327a005be9145990 /progs/tests/stencilreaddraw.c
parente4f4489e3fc0b36d72821b55794fb843b2b7fa5f (diff)
Remove demos that have moved to git+ssh://git.freedesktop.org/git/mesa/demos.
The remaining programs are ones I've had difficulty finding a build environment for to make the build system or are unit tests that should probably live next to their code instead. Hopefully people can bring over the build for remaining pieces they care about.
Diffstat (limited to 'progs/tests/stencilreaddraw.c')
-rw-r--r--progs/tests/stencilreaddraw.c187
1 files changed, 0 insertions, 187 deletions
diff --git a/progs/tests/stencilreaddraw.c b/progs/tests/stencilreaddraw.c
deleted file mode 100644
index 84a5a922a0e..00000000000
--- a/progs/tests/stencilreaddraw.c
+++ /dev/null
@@ -1,187 +0,0 @@
-/*
- * Test glRead/DrawPixels for GL_STENCIL_INDEX, with pixelzoom.
- *
- * Brian Paul
- * 8 April 2010
- */
-
-#include <assert.h>
-#include <stdio.h>
-#include <stdlib.h>
-#include <math.h>
-#include <GL/glew.h>
-#include <GL/glut.h>
-
-static GLint WinWidth = 500, WinHeight = 500;
-static GLboolean TestPacking = GL_FALSE;
-static GLboolean TestList = GL_FALSE;
-
-
-static GLuint StencilValue = 192;
-
-static void Display(void)
-{
- GLubyte stencil[100 * 100 * 2];
- GLubyte stencil2[400 * 400]; /* *2 to test pixelstore stuff */
- GLuint list;
-
- glClearColor(0.5, 0.5, 0.5, 1.0);
- glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT | GL_STENCIL_BUFFER_BIT);
-
- glEnable(GL_DEPTH_TEST);
-
- glStencilOp(GL_INVERT, GL_KEEP, GL_REPLACE);
- glStencilFunc(GL_ALWAYS, StencilValue, ~0);
- glEnable(GL_STENCIL_TEST);
-
- /* draw a sphere */
- glViewport(0, 0, 100, 100);
- glMatrixMode(GL_PROJECTION);
- glLoadIdentity();
- glOrtho(-1, 1, -1, 1, -1, 0); /* clip away back half of sphere */
- glMatrixMode(GL_MODELVIEW);
- glLoadIdentity();
- glutSolidSphere(1.0, 20, 10);
-
- glDisable(GL_STENCIL_TEST);
-
- if (TestPacking) {
- glPixelStorei(GL_PACK_ROW_LENGTH, 120);
- glPixelStorei(GL_PACK_SKIP_PIXELS, 5);
- }
-
- /* read the stencil image */
- glReadPixels(0, 0, 100, 100, GL_STENCIL_INDEX, GL_UNSIGNED_BYTE, stencil);
- {
- GLubyte min, max;
- int i;
- min = max = stencil[0];
- for (i = 1; i < 100 * 100; i++) {
- if (stencil[i] < min)
- min = stencil[i];
- if (stencil[i] > max)
- max = stencil[i];
- }
- printf("Stencil value range: [%u, %u]\n", min, max);
- if (max != StencilValue) {
- printf("Error: expected max stencil val of %u, found %u\n",
- StencilValue, max);
- }
- }
-
- /* Draw the Z image as luminance above original rendering */
- glWindowPos2i(0, 100);
- glDrawPixels(100, 100, GL_LUMINANCE, GL_UNSIGNED_BYTE, stencil);
-
- if (1) {
- if (TestPacking) {
- glPixelStorei(GL_PACK_ROW_LENGTH, 0);
- glPixelStorei(GL_PACK_SKIP_PIXELS, 0);
- glPixelStorei(GL_UNPACK_ROW_LENGTH, 120);
- glPixelStorei(GL_UNPACK_SKIP_PIXELS, 5);
- }
-
- /* draw stencil image with scaling (into stencil buffer) */
- glPixelZoom(4.0, 4.0);
- glColor4f(1, 0, 0, 0);
- glWindowPos2i(100, 0);
-
- if (TestList) {
- list = glGenLists(1);
- glNewList(list, GL_COMPILE);
- glDrawPixels(100, 100, GL_STENCIL_INDEX, GL_UNSIGNED_BYTE, stencil);
- glEndList();
- glCallList(list);
- glDeleteLists(list, 1);
- }
- else {
- glDrawPixels(100, 100, GL_STENCIL_INDEX, GL_UNSIGNED_BYTE, stencil);
- }
-
- if (TestPacking) {
- glPixelStorei(GL_UNPACK_ROW_LENGTH, 0);
- glPixelStorei(GL_UNPACK_SKIP_PIXELS, 0);
- }
-
- /* read back scaled stencil image */
- glReadPixels(100, 0, 400, 400, GL_STENCIL_INDEX,
- GL_UNSIGNED_BYTE, stencil2);
- /* draw as luminance */
- glPixelZoom(1.0, 1.0);
- glWindowPos2i(100, 0);
- glDrawPixels(400, 400, GL_LUMINANCE, GL_UNSIGNED_BYTE, stencil2);
- }
-
- glutSwapBuffers();
-}
-
-
-static void Reshape(int width, int height)
-{
- WinWidth = width;
- WinHeight = height;
- glViewport(0, 0, width, height);
-}
-
-
-static void Key(unsigned char key, int x, int y)
-{
- (void) x;
- (void) y;
- switch (key) {
- case 'p':
- TestPacking = !TestPacking;
- printf("Test pixel pack/unpack: %d\n", TestPacking);
- break;
- case 'l':
- TestList = !TestList;
- printf("Test dlist: %d\n", TestList);
- break;
- case 27:
- exit(0);
- break;
- }
- glutPostRedisplay();
-}
-
-
-static void Init(void)
-{
- const GLfloat blue[4] = {.1, .1, 1.0, 1.0};
- const GLfloat gray[4] = {0.2, 0.2, 0.2, 1.0};
- const GLfloat white[4] = {1.0, 1.0, 1.0, 1.0};
- const GLfloat pos[4] = {0, 0, 10, 0};
- GLint bits;
-
- printf("GL_VERSION = %s\n", (char *) glGetString(GL_VERSION));
- printf("GL_RENDERER = %s\n", (char *) glGetString(GL_RENDERER));
-
- glGetIntegerv(GL_STENCIL_BITS, &bits);
- printf("Stencil bits: %d\n", bits);
-
- assert(bits >= 8);
-
- glMaterialfv(GL_FRONT_AND_BACK, GL_DIFFUSE, blue);
- glLightfv(GL_LIGHT0, GL_AMBIENT, gray);
- glLightfv(GL_LIGHT0, GL_DIFFUSE, white);
- glLightfv(GL_LIGHT0, GL_POSITION, pos);
- glEnable(GL_LIGHTING);
- glEnable(GL_LIGHT0);
-}
-
-
-int main(int argc, char *argv[])
-{
- glutInit(&argc, argv);
- glutInitWindowPosition(0, 0);
- glutInitWindowSize(WinWidth, WinHeight);
- glutInitDisplayMode(GLUT_RGB | GLUT_DEPTH | GLUT_STENCIL | GLUT_DOUBLE);
- glutCreateWindow(argv[0]);
- glewInit();
- glutReshapeFunc(Reshape);
- glutKeyboardFunc(Key);
- glutDisplayFunc(Display);
- Init();
- glutMainLoop();
- return 0;
-}