home *** CD-ROM | disk | FTP | other *** search
/ Amiga Magazin: Amiga-CD 2000 April & May / AMIGA_2000_04.iso / patches / mesa3.1 / test / test.c < prev    next >
C/C++ Source or Header  |  1999-06-29  |  3KB  |  138 lines

  1.  
  2. /*
  3.  * test.c
  4.  *
  5.  * Version 1.0  28 Jun 1998
  6.  * by Jarno van der Linden
  7.  * jarno@kcbbs.gen.nz
  8.  *
  9.  * Test some Amiga GLUT functionality
  10.  * Based on cube.c redbook example
  11.  *
  12.  */
  13.  
  14. #include <GL/glut.h>
  15.  
  16. #include <stdlib.h>
  17. #include <stdio.h>
  18.  
  19.  
  20. void init(void)
  21. {
  22.  
  23.     glClearColor (0.0, 0.0, 0.0, 0.0);
  24.     glShadeModel (GL_FLAT);
  25.  
  26. #if 0
  27. {
  28.     GLboolean test;
  29.     glGetIntegerv(GL_SHADE_MODEL, &test);
  30.     if (test != GL_FLAT)
  31.         printf("couldn't set GL_FLAT ShadeModel\n");
  32.     else
  33.         printf("have set GL_FLAT ShadeModel\n");
  34. }
  35. #endif
  36. }
  37.  
  38.  
  39. void display(void)
  40. {
  41.     printf("Displaying\n");
  42.     glClear (GL_COLOR_BUFFER_BIT);
  43.     glColor3f (1.0, 0.0, 0.0);
  44.     glLoadIdentity ();                /* clear the matrix */
  45.         /* viewing transformation  */
  46.     gluLookAt (0.0, 0.0, 5.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0);
  47.     glScalef (1.0, 2.0, 1.0);        /* modeling transformation */
  48.     glutWireCube (1.5);
  49.     glRotatef(30.0,0.0,1.0,0.0);
  50.     glColor3f (0.0, 1.0, 0.0);
  51.     glutWireCube (1.0);
  52.     glRotatef(30.0,1.0,0.0,0.0);
  53.     glColor3f (0.0, 0.0, 1.0);
  54.     glutWireCube (0.5);
  55.     glFlush ();
  56.     printf("Displayed\n");
  57. }
  58.  
  59.  
  60. void reshape (int w, int h)
  61. {
  62.     printf("Reshaping to %d %d\n",w,h);
  63.     glViewport (0, 0, (GLsizei) w, (GLsizei) h);
  64.     glMatrixMode (GL_PROJECTION);
  65.     glLoadIdentity ();
  66.     glFrustum (-1.0, 1.0, -1.0, 1.0, 1.5, 20.0);
  67.     glMatrixMode (GL_MODELVIEW);
  68.     printf("Reshaped\n");
  69. }
  70.  
  71.  
  72. void keyboard(unsigned char key, int x, int y)
  73. {
  74.     printf("Got keypress %d (%c) at (%d,%d)\n",key,key,x,y);
  75.     switch(key)
  76.     {
  77.         case 27:
  78.             exit(0);
  79.             break;
  80.     }
  81. }
  82.  
  83.  
  84. void menu(int value)
  85. {
  86.     printf("Got menu value %d\n",value);
  87.  
  88.     if(value == 999)
  89.         exit(0);
  90. }
  91.  
  92.  
  93. void setupmenus(void)
  94. {
  95.     int m1,m2,m3;
  96.  
  97.     m1 = glutCreateMenu(menu);
  98.     glutAddMenuEntry("Entry 1",1);
  99.     m2 = glutCreateMenu(menu);
  100.     glutAddMenuEntry("Sub Entry 1",11);
  101.     glutAddMenuEntry("Sub Entry 2",12);
  102.     glutAddMenuEntry("Sub Entry 3",13);
  103.     glutSetMenu(m1);
  104.     glutAddSubMenu("Sub Menu",m2);
  105.     glutAddMenuEntry("Entry 3",3);
  106.     m3 = glutCreateMenu(menu);
  107.     glutAddMenuEntry("Sub Sub Entry 1",111);
  108.     glutAddMenuEntry("Sub Sub Entry 2",112);
  109.     glutAddMenuEntry("Sub Sub Entry 3",113);
  110.     glutSetMenu(m2);
  111.     glutChangeToSubMenu(2,"Sub Sub Menu", m3);
  112.     glutSetMenu(m1);
  113.     glutAttachMenu(GLUT_RIGHT_BUTTON);
  114.  
  115.     glutCreateMenu(menu);
  116.     glutAddMenuEntry("Quit",999);
  117.     glutAttachMenu(GLUT_LEFT_BUTTON);
  118. }
  119.  
  120.  
  121. int main(int argc, char *argv[])
  122. {
  123.     glutInit(&argc, argv);
  124.     glutInitDisplayMode(GLUT_SINGLE | GLUT_RGB);
  125.     glutInitWindowSize(200,200);
  126.     glutInitWindowPosition(100,100);
  127.     glutCreateWindow("Test");
  128.     init();
  129.     glutDisplayFunc(display);
  130.     glutReshapeFunc(reshape);
  131.     glutKeyboardFunc(keyboard);
  132.     setupmenus();
  133.  
  134.     glutMainLoop();
  135.  
  136.     return(EXIT_SUCCESS);
  137. }
  138.