00001 
00002 
00003 
00004 
00005 
00006 
00007 
00008 
00009 
00010 
00011 
00012 
00013 
00014 
00015 
00016 
00017 
00018 
00019 
00020 
00021 
00022 
00023 
00024 
00025 #ifndef __VOLUME_INDEXED_FACE_SET
00026 #define __VOLUME_INDEXED_FACE_SET
00027 
00028 #include <Inventor/nodes/SoIndexedFaceSet.h>
00029 
00030 #include <VolumeViz/nodes/SoVolumeGeometry.h>
00031 #include <Inventor/fields/SoSFBool.h>
00032 #include <Inventor/fields/SoSFFloat.h>
00033 #include <Inventor/SbBox.h>
00034 
00035 class SoVolumeGeometryVbo;
00036 
00177 class  SoVolumeIndexedFaceSet : public SoIndexedFaceSet, public SoVolumeGeometry
00178 {
00179   SO_NODE_HEADER(SoVolumeIndexedFaceSet);
00180 
00181 public :
00182 
00184   SoVolumeIndexedFaceSet();
00185 
00190   SoSFBool clipGeometry;
00191 
00203   SoSFFloat offset;
00204 
00205 
00209   SoSFEnum interpolation;
00210 
00211 #if 1             SoDEPRECATED enum
00214   Interpolation {
00216     NEAREST = SoVolumeShape::NEAREST,
00218     LINEAR = SoVolumeShape::LINEAR
00219   };
00220 
00221 #endif 
00223 private:
00224 
00225   static void initClass();
00226 
00228   static void exitClass();
00229 
00231   virtual void GLRender(SoGLRenderAction *action);
00232 
00234   virtual void computeBBox(SoAction *action, SbBox3f &box, SbVec3f ¢er);
00235 
00237   virtual void computeBBox(SoAction *action, SbXfBox3d &box, SbVec3d ¢er);
00238 
00239 private:
00240 
00242   virtual void notify(SoNotList *list);
00243 
00244 #if 1             SoDEPRECATED
00248   virtual SoVolumeShape::Interpolation getInteractiveInterpolationValue(SoState* state) const;
00249 
00250 #endif 
00252 private:
00253 
00254   virtual void shapeRender(SoGLRenderAction* action);
00255 
00257   virtual void shapeGeneratePrimitives(SoAction* action);
00258 
00260   virtual void checkShapeStyle(SoState *state,const SoShapeStyleElement *shapeStyle);
00261 
00263   virtual void GLRenderBoundingBox(SoGLRenderAction* action);
00264 
00266   virtual void getBBox(SoAction *action, SbBox3f &box, SbVec3f ¢er);
00267 
00269   virtual void getBBox(SoAction *action, SbXfBox3d &box, SbVec3d ¢er);
00270 
00272   virtual int getNumVertices(SoState* state);
00273 
00275   virtual int getIndexCoord(int index) const;
00276 
00278   virtual ~SoVolumeIndexedFaceSet();
00279 
00280   using SoVolumeGeometry::doRendering;
00281 
00282 private:
00283 SoDEPRECATED
00285   SoSFBool useVbo;
00286 
00287 };
00288 
00289 #endif //__VOLUME_INDEXED_FACE_SET
00290 
00291 
00292