ViewVC Help
View File | Revision Log | Show Annotations | Download File | Root Listing
root/radiance/ray/src/hd/rhd_glx.c
(Generate patch)

Comparing ray/src/hd/rhd_glx.c (file contents):
Revision 3.22 by gwlarson, Tue Aug 25 18:11:17 1998 UTC vs.
Revision 3.23 by gwlarson, Thu Aug 27 19:33:05 1998 UTC

# Line 74 | Line 74 | static char SCCSid[] = "$SunId$ SGI";
74  
75   struct driver   odev;                   /* global device driver structure */
76  
77 + #ifdef STEREO
78   static VIEW     vwright;                /* right eye view */
79 + #endif
80  
81   static int      rayqleft = 0;           /* rays left to queue before flush */
82  
# Line 216 | Line 218 | char  *id;
218          pheight *= 2.;
219          setstereobuf(STEREO_BUFFER_LEFT);
220   #endif
221 +        checkglerr("setting rendering parameters");
222          copystruct(&odev.v, &stdview);
223          odev.v.type = VT_PER;
224                                          /* map the window */
# Line 390 | Line 393 | dev_flush()                    /* flush output */
393          if (mapped) {
394   #ifdef STEREO
395                  pushright();                    /* update right eye */
393                glClear(GL_DEPTH_BUFFER_BIT);
396                  smUpdate(&vwright, 100);
397   #ifdef DOBJ
398                  dobj_render();                  /* usually in foreground */
399   #endif
400                  popright();                     /* update left eye */
399                glClear(GL_DEPTH_BUFFER_BIT);
401   #endif
402                  smUpdate(&odev.v, 100);
403                  checkglerr("rendering mesh");
# Line 435 | Line 436 | pushright()                    /* push on right view */
436          glPushMatrix();
437          d = -eyesepdist / sqrt(odev.v.hn2);
438          glTranslated(d*odev.v.hvec[0], d*odev.v.hvec[1], d*odev.v.hvec[2]);
439 +        checkglerr("setting right view");
440   }
441  
442  
# Line 506 | Line 508 | static
508   draw_grids(fore)                /* draw holodeck section grids */
509   int     fore;
510   {
509        if (!mapped)
510                return;
511          if (fore)
512                  glColor4ub(0, 255, 255, 0);
513          else
# Line 515 | Line 515 | int    fore;
515          glBegin(GL_LINES);              /* draw each grid line */
516          gridlines(draw3dline);
517          glEnd();
518 +        checkglerr("drawing grid lines");
519   }
520  
521  
# Line 593 | Line 594 | XButtonPressedEvent    *ebut;
594          int     rootx, rooty, wx, wy;
595          unsigned int    statemask;
596  
597 <        XNoOp(ourdisplay);
597 >        XNoOp(ourdisplay);              /* makes sure we're not idle */
598  
599          lasttime = time(0); nframes = 0;
600          while (!XCheckMaskEvent(ourdisplay,
601                          ButtonReleaseMask, levptr(XEvent))) {
602 <
602 >                                        /* get cursor position */
603                  if (!XQueryPointer(ourdisplay, gwind, &rootw, &childw,
604                                  &rootx, &rooty, &wx, &wy, &statemask))
605                          break;          /* on another screen */
606  
607                  draw_grids(0);          /* clear old grid lines */
608 + #ifdef STEREO
609 +                pushright(); draw_grids(0); popright();
610 + #endif
611 +                                        /* compute view motion */
612                  if (!moveview(wx, odev.vres-1-wy, movdir, movorb)) {
613                          sleep(1);
614                          lasttime++;
615 <                        continue;
615 >                        continue;       /* cursor in bad place */
616                  }
617 +                draw_grids(1);          /* redraw grid */
618   #ifdef STEREO
619                  pushright();
620                  draw_grids(1);
# Line 618 | Line 624 | XButtonPressedEvent    *ebut;
624   #endif
625                  popright();
626   #endif
627 <                draw_grids(1);
627 >                                        /* redraw mesh */
628                  smUpdate(&odev.v, qlevel);
629   #ifdef DOBJ
630 <                dobj_render();
630 >                dobj_render();          /* redraw object */
631   #endif
632                  glFlush();
633 <                checkglerr("moving view");
628 <                nframes++;
633 >                nframes++;              /* figure out good quality level */
634                  thistime = time(0);
635                  if (thistime - lasttime >= 3 ||
636                                  nframes > (int)(3*3*TARGETFPS)) {
# Line 690 | Line 695 | register VIEW  *vp;
695                  odev.v.vp[1] + odev.v.vdir[1],
696                  odev.v.vp[2] + odev.v.vdir[2],
697                  odev.v.vup[0], odev.v.vup[1], odev.v.vup[2]);
698 +        checkglerr("setting perspective view");
699   }
700  
701  
# Line 744 | Line 750 | register XKeyPressedEvent  *ekey;
750          case CTRL('L'):                 /* refresh from server */
751                  if (inpresflags & DFL(DC_REDRAW))
752                          return;
753 +                setglpersp(&odev.v);            /* reset clipping planes */
754                  glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
755 <                glDisable(GL_DEPTH_TEST);
755 >                glDisable(GL_DEPTH_TEST);       /* so grids will clear */
756                  draw_grids(1);
757   #ifdef STEREO
758                  pushright();
# Line 757 | Line 764 | register XKeyPressedEvent  *ekey;
764                  glFlush();
765                  smInit(rsL.max_samp);           /* get rid of old values */
766                  inpresflags |= DFL(DC_REDRAW);  /* resend values from server */
760                setglpersp(&odev.v);            /* reset clipping planes */
767                  rayqleft = 0;                   /* hold off update */
768                  return;
769          case 'K':                       /* kill rtrace process(es) */

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines