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

GIS编程

开发平台:

Visual C++

  1. /* fullscreen_stereo.c  --  GLUT support for full screen stereo mode  on SGI
  2.    workstations. */
  3. /* 24-Oct-95 Mike Blackwell  mkb@cs.cmu.edu */
  4. #include <stdlib.h>
  5. #include <stdio.h>
  6. #include <X11/Xlib.h>
  7. #include <X11/extensions/SGIStereo.h>
  8. /* We need to access some GLUT internal variables - this include file  is
  9.    found in the GLUT source code distribution. */
  10. /* XXX I do not normally encourage programs to use GLUT internals.  Programs
  11.    that do (like this one) are inherently unportable GLUT programs.  In the
  12.    case of SGI's low-end stereo there was enough demand to warrant supplying
  13.    an example, and the low-end stereo is not clean enough to be supported
  14.    directly in GLUT. -mjk */
  15. #include "glutint.h"
  16. #include "fullscreen_stereo.h"
  17. /* XXX Video display modes for stereo are selected by running
  18.    /usr/gfx/setmon; in IRIX 6.2 and later releases, the XSGIvc API supplies
  19.    the functionality of setmon and more. */
  20. void
  21. start_fullscreen_stereo(void)
  22. {
  23.   int event, error;
  24.   if (!XSGIStereoQueryExtension(__glutDisplay, &event, &error)) {
  25.     fprintf(stderr, "Stereo not supported on this display!n");
  26.     exit(0);
  27.   }
  28.   if (XSGIQueryStereoMode(__glutDisplay, __glutCurrentWindow->win) < 0) {
  29.     fprintf(stderr, "Stereo not supported on this window!n");
  30.     exit(0);
  31.   }
  32.   if (system("/usr/gfx/setmon -n STR_BOT") != 0) {
  33.     fprintf(stderr, "setmon attempt failed!n");
  34.     stop_fullscreen_stereo();
  35.     exit(0);
  36.   }
  37. }
  38. void
  39. stop_fullscreen_stereo(void)
  40. {
  41.   system("/usr/gfx/setmon -n 72hz");
  42. }
  43. void
  44. stereo_left_buffer(void)
  45. {
  46.   XSGISetStereoBuffer(__glutDisplay, __glutCurrentWindow->win, STEREO_BUFFER_LEFT);
  47.   XSync(__glutDisplay, False);
  48.   glViewport(0, 0, XMAXSCREEN, YSTEREO);
  49. }
  50. void
  51. stereo_right_buffer(void)
  52. {
  53.   XSGISetStereoBuffer(__glutDisplay, __glutCurrentWindow->win, STEREO_BUFFER_RIGHT);
  54.   XSync(__glutDisplay, False);
  55.   glViewport(0, 0, XMAXSCREEN, YSTEREO);
  56. }