/* A simple program to build a circle with display lists */ #include #include #include #include #include "glaux.h" #define MY_CIRCLE_LIST 1 #define PI 3.1415926535897 void buildCircle() { GLint i; GLfloat cosine, sine; glNewList(MY_CIRCLE_LIST, GL_COMPILE); glBegin(GL_POLYGON); glColor3f(1.0F, 0.0F, 0.0F); for (i=0; i<100; i++) { cosine = cos(i*2*PI/100.0); sine = sin(i*2*PI/100.0); glVertex2f(cosine, sine); } glEnd(); glEndList(); } void myReshape(GLsizei w, GLsizei h) { glViewport(0, 0, w, h); glMatrixMode(GL_PROJECTION); glLoadIdentity(); glMatrixMode(GL_MODELVIEW); glLoadIdentity(); } void display(void) { printf("display called\n"); glClear(GL_COLOR_BUFFER_BIT); glCallList(MY_CIRCLE_LIST); glFlush(); } void myinit(void) { glClearColor(0.0F, 0.0F, 0.4F, 1.0F); glShadeModel(GL_FLAT); glDisable(GL_DEPTH_TEST); buildCircle(); } void apressed(key, mask) { printf("key is %d, mask is 0x%x\n", key, mask); } void LeftPressed(AUX_EVENTREC *event) { printf("Left pressed (%d, %d)\n", event->data[AUX_MOUSEX], event->data[AUX_MOUSEY]); } void LeftReleased(AUX_EVENTREC *event) { printf("Left released (%d, %d)\n", event->data[AUX_MOUSEX], event->data[AUX_MOUSEY]); } int main(int argc, char *argv[]) { auxInitDisplayMode(AUX_SINGLE | AUX_RGBA); auxInitPosition(100, 150, 300, 300); auxInitWindow("Tri"); myinit(); auxKeyFunc(AUX_a, apressed); auxMouseFunc(AUX_LEFTBUTTON, AUX_MOUSEDOWN, LeftPressed); auxMouseFunc(AUX_LEFTBUTTON, AUX_MOUSEUP, LeftReleased); auxReshapeFunc (myReshape); auxMainLoop(display); return 0; }