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

GIS编程

开发平台:

Visual C++

  1. /* Copyright (c) Mark J. Kilgard, 1994, 1997.  */
  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 "glutint.h"
  6. /* CENTRY */
  7. void APIENTRY
  8. glutSwapBuffers(void)
  9. {
  10.   GLUTwindow *window = __glutCurrentWindow;
  11.   if (window->renderWin == window->win) {
  12.     if (__glutCurrentWindow->treatAsSingle) {
  13.       /* Pretend the double buffered window is single buffered,
  14.          so treat glutSwapBuffers as a no-op. */
  15.       return;
  16.     }
  17.   } else {
  18.     if (__glutCurrentWindow->overlay->treatAsSingle) {
  19.       /* Pretend the double buffered overlay is single
  20.          buffered, so treat glutSwapBuffers as a no-op. */
  21.       return;
  22.     }
  23.   }
  24.   /* For the MESA_SWAP_HACK. */
  25.   window->usedSwapBuffers = 1;
  26.   SWAP_BUFFERS_LAYER(__glutCurrentWindow);
  27.   /* I considered putting the window being swapped on the
  28.      GLUT_FINISH_WORK work list because you could call
  29.      glutSwapBuffers from an idle callback which doesn't call
  30.      __glutSetWindow which normally adds indirect rendering
  31.      windows to the GLUT_FINISH_WORK work list.  Not being put
  32.      on the list could lead to the buffering up of multiple
  33.      redisplays and buffer swaps and hamper interactivity.  I
  34.      consider this an application bug due to not using
  35.      glutPostRedisplay to trigger redraws.  If
  36.      glutPostRedisplay were used, __glutSetWindow would be
  37.      called and a glFinish to throttle buffering would occur. */
  38. }
  39. /* ENDCENTRY */