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

GIS编程

开发平台:

Visual C++

  1. /* Copyright (c) Mark J. Kilgard, 1994. */
  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 <stdio.h>
  6. #include <stdlib.h>
  7. #ifdef _WIN32
  8. #include <windows.h>
  9. #define sleep(x) Sleep(1000 * x)
  10. #else
  11. #include <unistd.h>
  12. #endif
  13. #include <GL/glut.h>
  14. int window1, window2;
  15. int win1reshaped = 0, win2reshaped = 0;
  16. int win1displayed = 0, win2displayed = 0;
  17. void
  18. checkifdone(void)
  19. {
  20.   if (win1reshaped && win2reshaped && win1displayed && win2displayed) {
  21.     sleep(1);
  22.     printf("PASS: test13n");
  23.     exit(0);
  24.   }
  25. }
  26. void
  27. window1reshape(int w, int h)
  28. {
  29.   if (glutGetWindow() != window1) {
  30.     printf("FAIL: window1reshapen");
  31.     exit(1);
  32.   }
  33.   glViewport(0, 0, w, h);
  34.   win1reshaped = 1;
  35. }
  36. void
  37. window1display(void)
  38. {
  39.   if (glutGetWindow() != window1) {
  40.     printf("FAIL: window1displayn");
  41.     exit(1);
  42.   }
  43.   glClearColor(0, 1, 0, 0);
  44.   glClear(GL_COLOR_BUFFER_BIT);
  45.   glFlush();
  46.   win1displayed = 1;
  47.   checkifdone();
  48. }
  49. void
  50. window2reshape(int w, int h)
  51. {
  52.   if (glutGetWindow() != window2) {
  53.     printf("FAIL: window2reshapen");
  54.     exit(1);
  55.   }
  56.   glViewport(0, 0, w, h);
  57.   win2reshaped = 1;
  58. }
  59. void
  60. window2display(void)
  61. {
  62.   if (glutGetWindow() != window2) {
  63.     printf("FAIL: window2displayn");
  64.     exit(1);
  65.   }
  66.   glClearColor(0, 0, 1, 0);
  67.   glClear(GL_COLOR_BUFFER_BIT);
  68.   glFlush();
  69.   win2displayed = 1;
  70.   checkifdone();
  71. }
  72. /* ARGSUSED */
  73. void
  74. timefunc(int value)
  75. {
  76.   printf("FAIL: test13n");
  77.   exit(1);
  78. }
  79. int
  80. main(int argc, char **argv)
  81. {
  82.   glutInit(&argc, argv);
  83.   glutInitWindowSize(100, 100);
  84.   glutInitWindowPosition(50, 100);
  85.   glutInitDisplayMode(GLUT_SINGLE | GLUT_RGB);
  86.   window1 = glutCreateWindow("1");
  87.   if (glutGet(GLUT_WINDOW_X) != 50) {
  88.     printf("FAIL: test13n");
  89.     exit(1);
  90.   }
  91.   if (glutGet(GLUT_WINDOW_Y) != 100) {
  92.     printf("FAIL: test13n");
  93.     exit(1);
  94.   }
  95.   glutReshapeFunc(window1reshape);
  96.   glutDisplayFunc(window1display);
  97.   glutInitWindowSize(100, 100);
  98.   glutInitWindowPosition(250, 100);
  99.   glutInitDisplayMode(GLUT_SINGLE | GLUT_RGB);
  100.   window2 = glutCreateWindow("2");
  101.   if (glutGet(GLUT_WINDOW_X) != 250) {
  102.     printf("FAIL: test13n");
  103.     exit(1);
  104.   }
  105.   if (glutGet(GLUT_WINDOW_Y) != 100) {
  106.     printf("FAIL: test13n");
  107.     exit(1);
  108.   }
  109.   glutReshapeFunc(window2reshape);
  110.   glutDisplayFunc(window2display);
  111.   glutTimerFunc(7000, timefunc, 1);
  112.   glutMainLoop();
  113.   return 0;             /* ANSI C requires main to return int. */
  114. }