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

Comparing ray/src/hd/rhdobj.c (file contents):
Revision 3.3 by gwlarson, Tue Aug 25 18:10:12 1998 UTC vs.
Revision 3.5 by gwlarson, Thu Aug 27 19:32:43 1998 UTC

# Line 5 | Line 5 | static char SCCSid[] = "$SunId$ SGI";
5   #endif
6  
7   /*
8 < * Routines for loading and displaying Radiance objects under OpenGL in rholo.
8 > * Routines for loading and displaying Radiance objects in rholo with GLX.
9   */
10  
11   #include "radogl.h"
# Line 460 | Line 460 | register char  *args;
460                  else
461                          return(cmderror(cn, "need octree [name]"));
462                  break;
463 <        case DO_UNLOAD:                         /* unload an object */
463 >        case DO_UNLOAD:                         /* clear an object */
464                  if (na > 1) goto toomany;
465                  if (na && alist[0][0] == '*')
466                          dobj_cleanup();
# Line 483 | Line 483 | register char  *args;
483                  break;
484          case DO_OBJECT:                         /* print object statistics */
485                  if (dobj_putstats(na ? alist[0] : curname, sstdout))
486 <                        if (na && alist[0][0] != '*' &&
487 <                                        strcmp(alist[0], curname))
486 >                        if (na && alist[0][0] != '*' && (curobj == NULL ||
487 >                                        strcmp(alist[0], curobj->name)))
488                                  savedxf(curobj = getdobj(alist[0]));
489                  break;
490          case DO_DUP:                            /* duplicate object */
# Line 547 | Line 547 | char   *oct, *nam;
547                  return(0);
548          }
549          if (getdobj(nam) != NULL) {
550 <                error(COMMAND, "name already taken (unload first)");
550 >                error(COMMAND, "name already taken (clear first)");
551                  return(0);
552          }
553                                          /* get octree path */
# Line 732 | Line 732 | char   *oldnm, *nam;
732                  return(0);
733          }
734          if (getdobj(nam) != NULL) {
735 <                error(COMMAND, "name already taken (unload first)");
735 >                error(COMMAND, "name already taken (clear first)");
736                  return(0);
737          }
738                                          /* allocate and copy struct */
# Line 774 | Line 774 | int    cn;
774          } else if ((op = getdobj(nam)) == NULL) {
775                  error(COMMAND, "unknown object");
776                  return(0);
777 <        } else if ((op->drawcode = cn) == DO_LIGHT)
778 <                getdlights(op, 1);
779 <        else
777 >        } else if ((op->drawcode = cn) == DO_LIGHT) {
778 >                if (!getdlights(op, 1))
779 >                        error(COMMAND, "insufficient samples to light object");
780 >        } else
781                  op->ol = NULL;
782  
783          if (dobj_lightsamp != NULL) {           /* restore beam set */
# Line 851 | Line 852 | dobj_render()                  /* render our objects in OpenGL */
852                  return(1);
853                                          /* set up general rendering params */
854          glGetBooleanv(GL_NORMALIZE, &normalizing);
855 <        glPushAttrib(GL_LIGHTING_BIT|GL_TRANSFORM_BIT|
856 <                        GL_DEPTH_BUFFER_BIT|GL_POLYGON_BIT);
855 >        glPushAttrib(GL_LIGHTING_BIT|GL_TRANSFORM_BIT|GL_ENABLE_BIT|
856 >                GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT|GL_POLYGON_BIT);
857          glDepthFunc(GL_LESS);
858          glEnable(GL_DEPTH_TEST);
859          glLightModeli(GL_LIGHT_MODEL_TWO_SIDE, GL_TRUE);

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines