test9.c
上传用户:xk288cn
上传日期:2007-05-28
资源大小:4876k
文件大小:3k
源码类别:

GIS编程

开发平台:

Visual C++

  1. /* Copyright (c) Mark J. Kilgard, 1994, 1996. */
  2. /* This program is freely distributable without licensing fees 
  3.    and is provided without guarantee or warrantee expressed or 
  4.    implied. This program is -not- in the public domain. */
  5. #include <stdlib.h>
  6. #include <stdio.h>
  7. #include <GL/glut.h>
  8. int main_w, w1, w2, w3, w4;
  9. void
  10. display(void)
  11. {
  12.   glClear(GL_COLOR_BUFFER_BIT);
  13.   glutSwapBuffers();
  14. }
  15. /* ARGSUSED */
  16. void
  17. time8(int value)
  18. {
  19.   printf("PASS: test9n");
  20.   exit(0);
  21. }
  22. /* ARGSUSED */
  23. void
  24. time7(int value)
  25. {
  26.   glutDestroyWindow(main_w);
  27.   glutTimerFunc(500, time8, 0);
  28. }
  29. /* ARGSUSED */
  30. void
  31. time6(int value)
  32. {
  33.   glutDestroyWindow(w1);
  34.   glutTimerFunc(500, time7, 0);
  35.   glutInitDisplayMode(GLUT_INDEX);
  36.   if (!glutGet(GLUT_DISPLAY_MODE_POSSIBLE)) {
  37.     printf("UNRESOLVED: test9 (your OpenGL lacks color index support)n");
  38.     exit(0);
  39.   }
  40.   w1 = glutCreateSubWindow(main_w, 10, 10, 10, 10);
  41.   glutDisplayFunc(display);
  42.   w2 = glutCreateSubWindow(w1, 10, 10, 30, 30);
  43.   glutDisplayFunc(display);
  44.   w3 = glutCreateSubWindow(w2, 10, 10, 50, 50);
  45.   glutDisplayFunc(display);
  46.   glutInitDisplayMode(GLUT_RGB);
  47.   w4 = glutCreateSubWindow(w3, 10, 10, 70, 70);
  48.   glClearColor(1.0, 1.0, 1.0, 1.0);
  49.   glutDisplayFunc(display);
  50. }
  51. /* ARGSUSED */
  52. void
  53. time5(int value)
  54. {
  55.   w1 = glutCreateSubWindow(main_w, 10, 10, 10, 10);
  56.   glutDisplayFunc(display);
  57.   w2 = glutCreateSubWindow(w1, 10, 10, 30, 30);
  58.   glutDisplayFunc(display);
  59.   w3 = glutCreateSubWindow(w2, 10, 10, 50, 50);
  60.   glutDisplayFunc(display);
  61.   glutInitDisplayMode(GLUT_RGB);
  62.   w4 = glutCreateSubWindow(w3, 10, 10, 70, 70);
  63.   glClearColor(1.0, 1.0, 1.0, 1.0);
  64.   glutDisplayFunc(display);
  65.   glutTimerFunc(500, time6, 0);
  66. }
  67. /* ARGSUSED */
  68. void
  69. time4(int value)
  70. {
  71.   glutDestroyWindow(w4);
  72.   glutTimerFunc(500, time5, 0);
  73. }
  74. /* ARGSUSED */
  75. void
  76. time3(int value)
  77. {
  78.   glutDestroyWindow(w3);
  79.   glutTimerFunc(500, time4, 0);
  80. }
  81. /* ARGSUSED */
  82. void
  83. time2(int value)
  84. {
  85.   glutDestroyWindow(w2);
  86.   glutTimerFunc(500, time3, 0);
  87. }
  88. /* ARGSUSED */
  89. void
  90. time1(int value)
  91. {
  92.   glutDestroyWindow(w1);
  93.   glutTimerFunc(500, time2, 0);
  94. }
  95. int
  96. main(int argc, char **argv)
  97. {
  98.   glutInit(&argc, argv);
  99.   glutInitDisplayMode(GLUT_RGB);
  100.   main_w = glutCreateWindow("test9");
  101.   glClearColor(0.0, 0.0, 0.0, 0.0);  /* black */
  102.   glutDisplayFunc(display);
  103.   glutInitDisplayMode(GLUT_INDEX);
  104.   if (!glutGet(GLUT_DISPLAY_MODE_POSSIBLE)) {
  105.     printf("UNRESOLVED: test9 (your OpenGL lacks color index support)n");
  106.     exit(0);
  107.   }
  108.   w1 = glutCreateSubWindow(main_w, 10, 10, 10, 10);
  109.   glutSetColor(1, 1.0, 0.0, 0.0);  /* red */
  110.   glutSetColor(2, 0.0, 1.0, 0.0);  /* green */
  111.   glutSetColor(3, 0.0, 0.0, 1.0);  /* blue */
  112.   glClearIndex(1);
  113.   glutDisplayFunc(display);
  114.   w2 = glutCreateSubWindow(main_w, 30, 30, 10, 10);
  115.   glutCopyColormap(w1);
  116.   glClearIndex(2);
  117.   glutDisplayFunc(display);
  118.   w3 = glutCreateSubWindow(main_w, 50, 50, 10, 10);
  119.   glutCopyColormap(w1);
  120.   glClearIndex(3);
  121.   glutDisplayFunc(display);
  122.   w4 = glutCreateSubWindow(main_w, 70, 70, 10, 10);
  123.   glutCopyColormap(w1);
  124.   glutSetColor(3, 1.0, 1.0, 1.0);  /* white */
  125.   glClearIndex(3);
  126.   glutDisplayFunc(display);
  127.   glutTimerFunc(750, time1, 0);
  128.   glutMainLoop();
  129.   return 0;             /* ANSI C requires main to return int. */
  130. }