Yurttas/PL/OOL/Cplusplus/oldies/f/swhsu/swhsu/opengl/code/polys.c

From ZCubes Wiki
Jump to navigation Jump to search
  1/*
  2 * Copyright (c) 1993-1997, Silicon Graphics, Inc.
  3 * ALL RIGHTS RESERVED 
  4 * Permission to use, copy, modify, and distribute this software for 
  5 * any purpose and without fee is hereby granted, provided that the above
  6 * copyright notice appear in all copies and that both the copyright notice
  7 * and this permission notice appear in supporting documentation, and that 
  8 * the name of Silicon Graphics, Inc. not be used in advertising
  9 * or publicity pertaining to distribution of the software without specific,
 10 * written prior permission. 
 11 *
 12 * THE MATERIAL EMBODIED ON THIS SOFTWARE IS PROVIDED TO YOU "AS-IS"
 13 * AND WITHOUT WARRANTY OF ANY KIND, EXPRESS, IMPLIED OR OTHERWISE,
 14 * INCLUDING WITHOUT LIMITATION, ANY WARRANTY OF MERCHANTABILITY OR
 15 * FITNESS FOR A PARTICULAR PURPOSE.  IN NO EVENT SHALL SILICON
 16 * GRAPHICS, INC.  BE LIABLE TO YOU OR ANYONE ELSE FOR ANY DIRECT,
 17 * SPECIAL, INCIDENTAL, INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY
 18 * KIND, OR ANY DAMAGES WHATSOEVER, INCLUDING WITHOUT LIMITATION,
 19 * LOSS OF PROFIT, LOSS OF USE, SAVINGS OR REVENUE, OR THE CLAIMS OF
 20 * THIRD PARTIES, WHETHER OR NOT SILICON GRAPHICS, INC.  HAS BEEN
 21 * ADVISED OF THE POSSIBILITY OF SUCH LOSS, HOWEVER CAUSED AND ON
 22 * ANY THEORY OF LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE
 23 * POSSESSION, USE OR PERFORMANCE OF THIS SOFTWARE.
 24 * 
 25 * US Government Users Restricted Rights 
 26 * Use, duplication, or disclosure by the Government is subject to
 27 * restrictions set forth in FAR 52.227.19(c)(2) or subparagraph
 28 * (c)(1)(ii) of the Rights in Technical Data and Computer Software
 29 * clause at DFARS 252.227-7013 and/or in similar or successor
 30 * clauses in the FAR or the DOD or NASA FAR Supplement.
 31 * Unpublished-- rights reserved under the copyright laws of the
 32 * United States.  Contractor/manufacturer is Silicon Graphics,
 33 * Inc., 2011 N.  Shoreline Blvd., Mountain View, CA 94039-7311.
 34 *
 35 * OpenGL(R) is a registered trademark of Silicon Graphics, Inc.
 36 */
 37
 38/*
 39 *  polys.c
 40 *  This program demonstrates polygon stippling.
 41 */
 42#include <GL/glut.h>
 43#include <stdlib.h>
 44
 45void display(void) {
 46  GLubyte fly[]={
 47    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x80, 0x01, 0xC0,
 48      0x06, 0xC0, 0x03, 0x60, 0x04, 0x60, 0x06, 0x20, 0x04, 0x30, 0x0C, 0x20,
 49      0x04, 0x18, 0x18, 0x20, 0x04, 0x0C, 0x30, 0x20, 0x04, 0x06, 0x60, 0x20,
 50      0x44, 0x03, 0xC0, 0x22, 0x44, 0x01, 0x80, 0x22, 0x44, 0x01, 0x80, 0x22,
 51      0x44, 0x01, 0x80, 0x22, 0x44, 0x01, 0x80, 0x22, 0x44, 0x01, 0x80, 0x22,
 52      0x44, 0x01, 0x80, 0x22, 0x66, 0x01, 0x80, 0x66, 0x33, 0x01, 0x80, 0xCC,
 53      0x19, 0x81, 0x81, 0x98, 0x0C, 0xC1, 0x83, 0x30, 0x07, 0xe1, 0x87, 0xe0,
 54      0x03, 0x3f, 0xfc, 0xc0, 0x03, 0x31, 0x8c, 0xc0, 0x03, 0x33, 0xcc, 0xc0,
 55      0x06, 0x64, 0x26, 0x60, 0x0c, 0xcc, 0x33, 0x30, 0x18, 0xcc, 0x33, 0x18,
 56      0x10, 0xc4, 0x23, 0x08, 0x10, 0x63, 0xC6, 0x08, 0x10, 0x30, 0x0c, 0x08,
 57      0x10, 0x18, 0x18, 0x08, 0x10, 0x00, 0x00, 0x08};
 58
 59  GLubyte halftone[]={
 60    0xAA, 0xAA, 0xAA, 0xAA, 0x55, 0x55, 0x55, 0x55, 0xAA, 0xAA, 0xAA, 0xAA,
 61      0x55, 0x55, 0x55, 0x55, 0xAA, 0xAA, 0xAA, 0xAA, 0x55, 0x55, 0x55, 0x55,
 62      0xAA, 0xAA, 0xAA, 0xAA, 0x55, 0x55, 0x55, 0x55, 0xAA, 0xAA, 0xAA, 0xAA,
 63      0x55, 0x55, 0x55, 0x55, 0xAA, 0xAA, 0xAA, 0xAA, 0x55, 0x55, 0x55, 0x55,
 64      0xAA, 0xAA, 0xAA, 0xAA, 0x55, 0x55, 0x55, 0x55, 0xAA, 0xAA, 0xAA, 0xAA,
 65      0x55, 0x55, 0x55, 0x55, 0xAA, 0xAA, 0xAA, 0xAA, 0x55, 0x55, 0x55, 0x55,
 66      0xAA, 0xAA, 0xAA, 0xAA, 0x55, 0x55, 0x55, 0x55, 0xAA, 0xAA, 0xAA, 0xAA,
 67      0x55, 0x55, 0x55, 0x55, 0xAA, 0xAA, 0xAA, 0xAA, 0x55, 0x55, 0x55, 0x55,
 68      0xAA, 0xAA, 0xAA, 0xAA, 0x55, 0x55, 0x55, 0x55, 0xAA, 0xAA, 0xAA, 0xAA,
 69      0x55, 0x55, 0x55, 0x55, 0xAA, 0xAA, 0xAA, 0xAA, 0x55, 0x55, 0x55, 0x55,
 70      0xAA, 0xAA, 0xAA, 0xAA, 0x55, 0x55, 0x55, 0x55};
 71
 72  glClear(GL_COLOR_BUFFER_BIT);
 73  glColor3f(1.0, 
 74            1.0, 
 75            1.0);
 76
 77  glRectf(25.0, 
 78          25.0, 
 79          125.0, 
 80          125.0);
 81  glEnable(GL_POLYGON_STIPPLE);
 82  glPolygonStipple(fly);
 83  glRectf(125.0, 
 84          25.0, 
 85          225.0, 
 86          125.0);
 87  glPolygonStipple(halftone);
 88  glRectf(225.0, 
 89          25.0, 
 90          325.0, 
 91          125.0);
 92  glDisable(GL_POLYGON_STIPPLE);
 93  glFlush();
 94}
 95
 96void init(void) {
 97  glClearColor(0.0, 
 98               0.0, 
 99               0.0, 
100               0.0);
101  glShadeModel(GL_FLAT);
102}
103
104void reshape(int w, int h) {
105  glViewport(0, 
106             0, 
107             (GLsizei)w, 
108             (GLsizei)h);
109  glMatrixMode(GL_PROJECTION);
110  glLoadIdentity();
111  gluOrtho2D(0.0, 
112             (GLdouble)w, 
113             0.0, 
114             (GLdouble)h);
115}
116
117void keyboard(unsigned char key, int x, int y) {
118  switch(key){
119    case 27:
120      exit(0);
121      break;
122  }
123}
124
125int main(int argc, char* argv[]) {
126  glutInit(&argc, 
127           argv);
128  glutInitDisplayMode(GLUT_SINGLE | GLUT_RGB);
129  glutInitWindowSize(350, 
130                     150);
131  glutCreateWindow(argv[0]);
132  init();
133  glutDisplayFunc(display);
134  glutReshapeFunc(reshape);
135  glutKeyboardFunc(keyboard);
136  glutMainLoop();
137  return 0;
138}