~ubuntu-branches/ubuntu/oneiric/mesa-demos/oneiric

« back to all changes in this revision

Viewing changes to src/redbook/checker.c

  • Committer: Bazaar Package Importer
  • Author(s): Christopher James Halse Rogers
  • Date: 2010-09-27 16:18:27 UTC
  • Revision ID: james.westby@ubuntu.com-20100927161827-1yfgolc1oy9sjhi8
Tags: upstream-8.0.1
ImportĀ upstreamĀ versionĀ 8.0.1

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
 
 
2
/* Copyright (c) Mark J. Kilgard, 1994. */
 
3
 
 
4
/*
 
5
 * (c) Copyright 1993, Silicon Graphics, Inc.
 
6
 * ALL RIGHTS RESERVED
 
7
 * Permission to use, copy, modify, and distribute this software for
 
8
 * any purpose and without fee is hereby granted, provided that the above
 
9
 * copyright notice appear in all copies and that both the copyright notice
 
10
 * and this permission notice appear in supporting documentation, and that
 
11
 * the name of Silicon Graphics, Inc. not be used in advertising
 
12
 * or publicity pertaining to distribution of the software without specific,
 
13
 * written prior permission.
 
14
 *
 
15
 * THE MATERIAL EMBODIED ON THIS SOFTWARE IS PROVIDED TO YOU "AS-IS"
 
16
 * AND WITHOUT WARRANTY OF ANY KIND, EXPRESS, IMPLIED OR OTHERWISE,
 
17
 * INCLUDING WITHOUT LIMITATION, ANY WARRANTY OF MERCHANTABILITY OR
 
18
 * FITNESS FOR A PARTICULAR PURPOSE.  IN NO EVENT SHALL SILICON
 
19
 * GRAPHICS, INC.  BE LIABLE TO YOU OR ANYONE ELSE FOR ANY DIRECT,
 
20
 * SPECIAL, INCIDENTAL, INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY
 
21
 * KIND, OR ANY DAMAGES WHATSOEVER, INCLUDING WITHOUT LIMITATION,
 
22
 * LOSS OF PROFIT, LOSS OF USE, SAVINGS OR REVENUE, OR THE CLAIMS OF
 
23
 * THIRD PARTIES, WHETHER OR NOT SILICON GRAPHICS, INC.  HAS BEEN
 
24
 * ADVISED OF THE POSSIBILITY OF SUCH LOSS, HOWEVER CAUSED AND ON
 
25
 * ANY THEORY OF LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE
 
26
 * POSSESSION, USE OR PERFORMANCE OF THIS SOFTWARE.
 
27
 *
 
28
 * US Government Users Restricted Rights
 
29
 * Use, duplication, or disclosure by the Government is subject to
 
30
 * restrictions set forth in FAR 52.227.19(c)(2) or subparagraph
 
31
 * (c)(1)(ii) of the Rights in Technical Data and Computer Software
 
32
 * clause at DFARS 252.227-7013 and/or in similar or successor
 
33
 * clauses in the FAR or the DOD or NASA FAR Supplement.
 
34
 * Unpublished-- rights reserved under the copyright laws of the
 
35
 * United States.  Contractor/manufacturer is Silicon Graphics,
 
36
 * Inc., 2011 N.  Shoreline Blvd., Mountain View, CA 94039-7311.
 
37
 *
 
38
 * OpenGL(TM) is a trademark of Silicon Graphics, Inc.
 
39
 */
 
40
/*  checker.c
 
41
 *  This program texture maps a checkerboard image onto
 
42
 *  two rectangles.  This program clamps the texture, if
 
43
 *  the texture coordinates fall outside 0.0 and 1.0.
 
44
 */
 
45
#include <stdlib.h>
 
46
#include <GL/glut.h>
 
47
 
 
48
/*      Create checkerboard texture     */
 
49
#define checkImageWidth 64
 
50
#define checkImageHeight 64
 
51
GLubyte checkImage[checkImageWidth][checkImageHeight][3];
 
52
 
 
53
static void makeCheckImage(void)
 
54
{
 
55
    int i, j, c;
 
56
 
 
57
    for (i = 0; i < checkImageWidth; i++) {
 
58
        for (j = 0; j < checkImageHeight; j++) {
 
59
            c = ((((i&0x8)==0)^((j&0x8)==0)))*255;
 
60
            checkImage[i][j][0] = (GLubyte) c;
 
61
            checkImage[i][j][1] = (GLubyte) c;
 
62
            checkImage[i][j][2] = (GLubyte) c;
 
63
        }
 
64
    }
 
65
}
 
66
 
 
67
static void myinit(void)
 
68
{
 
69
    glClearColor (0.0, 0.0, 0.0, 0.0);
 
70
    glEnable(GL_DEPTH_TEST);
 
71
    glDepthFunc(GL_LESS);
 
72
 
 
73
    makeCheckImage();
 
74
    glPixelStorei(GL_UNPACK_ALIGNMENT, 1);
 
75
    glTexImage2D(GL_TEXTURE_2D, 0, 3, checkImageWidth,
 
76
        checkImageHeight, 0, GL_RGB, GL_UNSIGNED_BYTE,
 
77
        &checkImage[0][0][0]);
 
78
    glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP);
 
79
    glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP);
 
80
    glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
 
81
    glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
 
82
    glTexEnvf(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_DECAL);
 
83
    glEnable(GL_TEXTURE_2D);
 
84
    glShadeModel(GL_FLAT);
 
85
}
 
86
 
 
87
static void display(void)
 
88
{
 
89
    glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
 
90
    glBegin(GL_QUADS);
 
91
    glTexCoord2f(0.0, 0.0); glVertex3f(-2.0, -1.0, 0.0);
 
92
    glTexCoord2f(0.0, 1.0); glVertex3f(-2.0, 1.0, 0.0);
 
93
    glTexCoord2f(1.0, 1.0); glVertex3f(0.0, 1.0, 0.0);
 
94
    glTexCoord2f(1.0, 0.0); glVertex3f(0.0, -1.0, 0.0);
 
95
 
 
96
    glTexCoord2f(0.0, 0.0); glVertex3f(1.0, -1.0, 0.0);
 
97
    glTexCoord2f(0.0, 1.0); glVertex3f(1.0, 1.0, 0.0);
 
98
    glTexCoord2f(1.0, 1.0); glVertex3f(2.41421, 1.0, -1.41421);
 
99
    glTexCoord2f(1.0, 0.0); glVertex3f(2.41421, -1.0, -1.41421);
 
100
    glEnd();
 
101
    glutSwapBuffers();
 
102
}
 
103
 
 
104
static void myReshape(int w, int h)
 
105
{
 
106
    glViewport(0, 0, w, h);
 
107
    glMatrixMode(GL_PROJECTION);
 
108
    glLoadIdentity();
 
109
    gluPerspective(60.0, 1.0*(GLfloat)w/(GLfloat)h, 1.0, 30.0);
 
110
    glMatrixMode(GL_MODELVIEW);
 
111
    glLoadIdentity();
 
112
    glTranslatef(0.0, 0.0, -3.6);
 
113
}
 
114
 
 
115
static void
 
116
key(unsigned char k, int x, int y)
 
117
{
 
118
  switch (k) {
 
119
  case 27:  /* Escape */
 
120
    exit(0);
 
121
    break;
 
122
  default:
 
123
    return;
 
124
  }
 
125
  glutPostRedisplay();
 
126
}
 
127
 
 
128
int
 
129
main(int argc, char** argv)
 
130
{
 
131
    glutInit(&argc, argv);
 
132
    glutInitDisplayMode(GLUT_DOUBLE | GLUT_RGB | GLUT_DEPTH);
 
133
    glutCreateWindow("checker");
 
134
    myinit();
 
135
    glutReshapeFunc (myReshape);
 
136
    glutDisplayFunc(display);
 
137
    glutKeyboardFunc(key);
 
138
    glutMainLoop();
 
139
    return 0;             /* ANSI C requires main to return int. */
 
140
}