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_TRIANGLE_STRIP_SET
00026 #define __VOLUME_INDEXED_TRIANGLE_STRIP_SET
00027 
00028 #include <Inventor/nodes/SoIndexedTriangleStripSet.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 
00159 class  SoVolumeIndexedTriangleStripSet : public SoIndexedTriangleStripSet, public SoVolumeGeometry
00160 {
00161   SO_NODE_HEADER(SoVolumeIndexedTriangleStripSet);
00162 
00163 public :
00164 
00166   SoVolumeIndexedTriangleStripSet();
00167 
00172   SoSFBool clipGeometry;
00173 
00185   SoSFFloat offset;
00186 
00190   SoSFEnum interpolation;
00191 
00192 #if 1             SoDEPRECATED
00198   SoSFBool useVbo;
00199 
00200 #endif 
00202 #if 1             SoDEPRECATED enum
00205   Interpolation {
00207     NEAREST = SoVolumeShape::NEAREST,
00209     LINEAR = SoVolumeShape::LINEAR
00210   };
00211 
00212 #endif 
00215 private:
00216 
00217   static void initClass();
00218 
00220   static void exitClass();
00221 
00223   virtual void GLRender(SoGLRenderAction *action);
00224 
00226   virtual void computeBBox(SoAction *action, SbBox3f &box, SbVec3f ¢er);
00227 
00229   virtual void computeBBox(SoAction *action, SbXfBox3d &box, SbVec3d ¢er);
00230 
00231 private:
00232 
00234   virtual void notify(SoNotList *list);
00235 
00236 #if 1             SoDEPRECATED
00240   virtual SoVolumeShape::Interpolation getInteractiveInterpolationValue(SoState* state) const;
00241 
00242 #endif 
00244 private:
00245 
00246   virtual void shapeRender(SoGLRenderAction* action);
00247 
00249   virtual void shapeGeneratePrimitives(SoAction* action);
00250 
00252   virtual void checkShapeStyle(SoState *state,const SoShapeStyleElement *shapeStyle);
00253 
00255   virtual void GLRenderBoundingBox(SoGLRenderAction* action);
00256 
00258   virtual void getBBox(SoAction *action, SbBox3f &box, SbVec3f ¢er);
00259 
00261   virtual void getBBox(SoAction *action, SbXfBox3d &box, SbVec3d ¢er);
00262 
00264   virtual int getNumVertices(SoState* state);
00265 
00267   virtual int getIndexCoord(int index) const;
00268 
00270   virtual ~SoVolumeIndexedTriangleStripSet();
00271 
00272   using SoVolumeGeometry::doRendering;
00273 };
00274 
00275 #endif //__VOLUME_INDEXED_TRIANGLE_STRIP_SET
00276 
00277 
00278