1/*
2 * Test Z values of glBitmap.
3 * Brian Paul
4 * 19 Feb 2010
5 */
6
7
8#include <assert.h>
9#include <stdio.h>
10#include <stdlib.h>
11#include <string.h>
12#include <math.h>
13#include <GL/glew.h>
14#include "glut_wrap.h"
15
16
17static GLint Win = 0;
18
19
20static void
21PrintString(const char *s)
22{
23   while (*s) {
24      glutBitmapCharacter(GLUT_BITMAP_8_BY_13, (int) *s);
25      s++;
26   }
27}
28
29
30static void
31Display(void)
32{
33   glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
34
35   glMatrixMode(GL_PROJECTION);
36   glLoadIdentity();
37   glOrtho(-3.0, 3.0, -3.0, 3.0, -2.0, 2.0);
38
39   glMatrixMode(GL_MODELVIEW);
40   glLoadIdentity();
41
42   glColor3f(1, 1, 1);
43   glRasterPos2f(-2.0, 2.6);
44   PrintString("Z = -1.0");
45   glRasterPos2f(-0.5, 2.6);
46   PrintString("Z = 0.0");
47   glRasterPos2f(1.0, 2.6);
48   PrintString("Z = 1.0");
49
50   glColor3f(0, 0.4, 0.6);
51   glBegin(GL_QUADS);
52   glVertex3f(-2.0, -2.5, -1);
53   glVertex3f(-1.0, -2.5, -1);
54   glVertex3f(-1.0, 2.5, -1);
55   glVertex3f(-2.0, 2.5, -1);
56
57   glVertex3f(-0.5, -2.5, 0);
58   glVertex3f(0.5, -2.5, 0);
59   glVertex3f(0.5, 2.5, 0);
60   glVertex3f(-0.5, 2.5, 0);
61
62   glVertex3f(1.0, -2.5, 1);
63   glVertex3f(2.0, -2.5, 1);
64   glVertex3f(2.0, 2.5, 1);
65   glVertex3f(1.0, 2.5, 1);
66   glEnd();
67
68   glColor3f(1, 1, 1);
69
70   glRasterPos3f(-2.0, -1, -1.0);
71   PrintString("This is a bitmap string drawn at z = -1.0");
72
73   glRasterPos3f(-2.0, 0, 0.0);
74   PrintString("This is a bitmap string drawn at z = 0.0");
75
76   glRasterPos3f(-2.0, 1, 1.0);
77   PrintString("This is a bitmap string drawn at z = 1.0");
78
79   glRasterPos3f(-1.5, -2.8, 0.0);
80   PrintString("GL_DEPTH_FUNC = GL_LEQUAL");
81
82   glutSwapBuffers();
83}
84
85
86static void
87Reshape(int width, int height)
88{
89   glViewport(0, 0, width, height);
90}
91
92
93static void
94Key(unsigned char key, int x, int y)
95{
96   if (key == 27) {
97      glutDestroyWindow(Win);
98      exit(0);
99   }
100   glutPostRedisplay();
101}
102
103
104static void
105Init(void)
106{
107   glClearColor(0.25, 0.25, 0.25, 0.0);
108   glDepthFunc(GL_LEQUAL);
109   glEnable(GL_DEPTH_TEST);
110}
111
112
113int
114main(int argc, char *argv[])
115{
116   glutInitWindowSize(400, 400);
117   glutInit(&argc, argv);
118   glutInitDisplayMode(GLUT_RGB | GLUT_DOUBLE | GLUT_DEPTH);
119   Win = glutCreateWindow(argv[0]);
120   glewInit();
121   glutReshapeFunc(Reshape);
122   glutKeyboardFunc(Key);
123   glutDisplayFunc(Display);
124   Init();
125   glutMainLoop();
126   return 0;
127}
128