~ubuntu-branches/ubuntu/quantal/mesa/quantal

« back to all changes in this revision

Viewing changes to progs/trivial/quad-offset-factor.c

  • Committer: Bazaar Package Importer
  • Author(s): Sebastien Bacher
  • Date: 2007-02-21 12:44:07 UTC
  • mfrom: (1.2.1 upstream)
  • mto: This revision was merged to the branch mainline in revision 22.
  • Revision ID: james.westby@ubuntu.com-20070221124407-rgcacs32mycrtadl
ImportĀ upstreamĀ versionĀ 6.5.2

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
 
/*
2
 
 * Copyright (c) 1991, 1992, 1993 Silicon Graphics, Inc.
3
 
 *
4
 
 * Permission to use, copy, modify, distribute, and sell this software and
5
 
 * its documentation for any purpose is hereby granted without fee, provided
6
 
 * that (i) the above copyright notices and this permission notice appear in
7
 
 * all copies of the software and related documentation, and (ii) the name of
8
 
 * Silicon Graphics may not be used in any advertising or
9
 
 * publicity relating to the software without the specific, prior written
10
 
 * permission of Silicon Graphics.
11
 
 *
12
 
 * THE SOFTWARE IS PROVIDED "AS-IS" AND WITHOUT WARRANTY OF
13
 
 * ANY KIND,
14
 
 * EXPRESS, IMPLIED OR OTHERWISE, INCLUDING WITHOUT LIMITATION, ANY
15
 
 * WARRANTY OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.
16
 
 *
17
 
 * IN NO EVENT SHALL SILICON GRAPHICS BE LIABLE FOR
18
 
 * ANY SPECIAL, INCIDENTAL, INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY KIND,
19
 
 * OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
20
 
 * WHETHER OR NOT ADVISED OF THE POSSIBILITY OF DAMAGE, AND ON ANY THEORY OF
21
 
 * LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE
22
 
 * OF THIS SOFTWARE.
23
 
 */
24
 
 
25
 
#include <stdio.h>
26
 
#include <string.h>
27
 
#include <stdlib.h>
28
 
#include <GL/glut.h>
29
 
 
30
 
 
31
 
#define CI_OFFSET_1 16
32
 
#define CI_OFFSET_2 32
33
 
 
34
 
 
35
 
GLenum doubleBuffer;
36
 
 
37
 
static void Init(void)
38
 
{
39
 
   fprintf(stderr, "GL_RENDERER   = %s\n", (char *) glGetString(GL_RENDERER));
40
 
   fprintf(stderr, "GL_VERSION    = %s\n", (char *) glGetString(GL_VERSION));
41
 
   fprintf(stderr, "GL_VENDOR     = %s\n", (char *) glGetString(GL_VENDOR));
42
 
 
43
 
    glClearColor(1.0, 1.0, 1.0, 0.0);
44
 
}
45
 
 
46
 
static void Reshape(int width, int height)
47
 
{
48
 
 
49
 
    glViewport(0, 0, (GLint)width, (GLint)height);
50
 
 
51
 
    glMatrixMode(GL_PROJECTION);
52
 
    glLoadIdentity();
53
 
    glOrtho(-1.0, 1.0, -1.0, 1.0, -0.5, 1000.0);
54
 
    glMatrixMode(GL_MODELVIEW);
55
 
}
56
 
 
57
 
static void Key(unsigned char key, int x, int y)
58
 
{
59
 
 
60
 
    switch (key) {
61
 
      case 27:
62
 
        exit(1);
63
 
      default:
64
 
        return;
65
 
    }
66
 
 
67
 
    glutPostRedisplay();
68
 
}
69
 
 
70
 
static void quad( float half )
71
 
{
72
 
   glBegin(GL_QUADS);
73
 
   glVertex3f( half/9.0, -half/9.0, -25.0 + half);
74
 
   glVertex3f( half/9.0,  half/9.0, -25.0 + half);
75
 
   glVertex3f(-half/9.0,  half/9.0, -25.0 - half);
76
 
   glVertex3f(-half/9.0, -half/9.0, -25.0 - half);
77
 
   glEnd();
78
 
 
79
 
}
80
 
 
81
 
static void Draw(void)
82
 
{
83
 
   glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); 
84
 
   glEnable(GL_DEPTH_TEST);
85
 
 
86
 
 
87
 
 
88
 
   glEnable(GL_POLYGON_OFFSET_FILL);
89
 
   glPolygonOffset(1, 0);
90
 
 
91
 
   glColor3f(1,0,0); 
92
 
   quad(9);
93
 
 
94
 
   glDisable(GL_POLYGON_OFFSET_FILL); 
95
 
   glColor3f(0,1,0); 
96
 
   quad(6);
97
 
 
98
 
 
99
 
   glEnable(GL_POLYGON_OFFSET_FILL); 
100
 
   glPolygonOffset(0, 0); 
101
 
 
102
 
   /* Black - should not be visible
103
 
    */
104
 
   glColor3f(0,0,0); 
105
 
   quad(6);
106
 
 
107
 
   glEnable(GL_POLYGON_OFFSET_FILL);
108
 
   glPolygonOffset(-1, 0);
109
 
   glColor3f(0,0,1); 
110
 
   quad(3);
111
 
 
112
 
   glDisable(GL_POLYGON_OFFSET_FILL);
113
 
 
114
 
   glFlush();
115
 
 
116
 
   if (doubleBuffer) {
117
 
      glutSwapBuffers();
118
 
   }
119
 
}
120
 
 
121
 
static GLenum Args(int argc, char **argv)
122
 
{
123
 
    GLint i;
124
 
 
125
 
    doubleBuffer = GL_FALSE;
126
 
 
127
 
    for (i = 1; i < argc; i++) {
128
 
        if (strcmp(argv[i], "-sb") == 0) {
129
 
            doubleBuffer = GL_FALSE;
130
 
        } else if (strcmp(argv[i], "-db") == 0) {
131
 
            doubleBuffer = GL_TRUE;
132
 
        } else {
133
 
            fprintf(stderr, "%s (Bad option).\n", argv[i]);
134
 
            return GL_FALSE;
135
 
        }
136
 
    }
137
 
    return GL_TRUE;
138
 
}
139
 
 
140
 
int main(int argc, char **argv)
141
 
{
142
 
    GLenum type;
143
 
 
144
 
    glutInit(&argc, argv);
145
 
 
146
 
    if (Args(argc, argv) == GL_FALSE) {
147
 
        exit(1);
148
 
    }
149
 
 
150
 
    glutInitWindowPosition(0, 0); glutInitWindowSize( 250, 250);
151
 
 
152
 
    type = GLUT_RGB | GLUT_DEPTH;
153
 
    type |= (doubleBuffer) ? GLUT_DOUBLE : GLUT_SINGLE;
154
 
    glutInitDisplayMode(type);
155
 
 
156
 
    if (glutCreateWindow("First Tri") == GL_FALSE) {
157
 
        exit(1);
158
 
    }
159
 
 
160
 
    Init();
161
 
 
162
 
    glutReshapeFunc(Reshape);
163
 
    glutKeyboardFunc(Key);
164
 
    glutDisplayFunc(Draw);
165
 
    glutMainLoop();
166
 
        return 0;
167
 
}