ANTINDX.C
/* 
 * (c) Copyright 1993, Silicon Graphics, Inc. 
 *               1993-1995 Microsoft Corporation 
 * 
 * ALL RIGHTS RESERVED 
 * 
 * Please refer to OpenGL/readme.txt for additional information 
 * 
 */ 
 
/* 
 *  antiindex.c  
 *  The program draws a wireframe icosahedron with  
 *  antialiased lines, in color index mode. 
 */ 
#include "glos.h" 
 
#include <GL/gl.h> 
#include <GL/glu.h> 
#include <GL/glaux.h> 
 
void myinit(void); 
void CALLBACK myReshape(GLsizei w, GLsizei h); 
void CALLBACK display(void); 
 
#define RAMPSIZE 16 
#define RAMPSTART 32 
 
/*  Initialize antialiasing for color index mode,  
 *  including loading a grey color ramp starting  
 *  at RAMPSTART, which must be a multiple of 16. 
 */ 
void myinit(void) 
{ 
    int i; 
 
    for (i = 0; i < RAMPSIZE; i++) { 
    GLfloat shade; 
    shade = (GLfloat) i/(GLfloat) RAMPSIZE; 
    auxSetOneColor(RAMPSTART+(GLint)i, shade, shade, shade); 
    } 
 
    glEnable (GL_LINE_SMOOTH); 
    glHint (GL_LINE_SMOOTH_HINT, GL_DONT_CARE); 
    glLineWidth (1.5); 
 
    glClearIndex ((GLfloat) RAMPSTART); 
    glShadeModel(GL_FLAT); 
    glDepthFunc(GL_LESS); 
    glEnable(GL_DEPTH_TEST); 
} 
 
/*  display() draws an icosahedron. 
 */ 
void CALLBACK display(void) 
{ 
    glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); 
    glIndexi(RAMPSTART); 
    auxWireIcosahedron(1.0); 
    glFlush(); 
} 
 
void CALLBACK myReshape(GLsizei w, GLsizei h) 
{ 
    if (!h) return; 
    glViewport(0, 0, w, h); 
    glMatrixMode(GL_PROJECTION); 
    glLoadIdentity(); 
    gluPerspective (45.0, (GLfloat) w/(GLfloat) h, 3.0, 5.0); 
 
    glMatrixMode(GL_MODELVIEW); 
    glLoadIdentity (); 
    glTranslatef (0.0, 0.0, -4.0);  /*  move object into view   */ 
} 
 
/*  Main Loop 
 *  Open window with initial window size, title bar,  
 *  color index display mode, depth buffer,  
 *  and handle input events. 
 */ 
int main(int argc, char** argv) 
{ 
    auxInitDisplayMode (AUX_SINGLE | AUX_INDEX | AUX_DEPTH16); 
    auxInitPosition (0, 0, 400, 400); 
    auxInitWindow ("Antialiased Lines Using Color Index"); 
    myinit(); 
    auxReshapeFunc (myReshape); 
    auxMainLoop(display); 
    return(0); 
}