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
00161 class SoVolumeIndexedFaceSet : public SoIndexedFaceSet, public SoVolumeGeometry
00162 {
00163 SO_NODE_HEADER(SoVolumeIndexedFaceSet);
00164
00165 public :
00166
00168 SoVolumeIndexedFaceSet();
00169
00174 SoSFBool clipGeometry;
00175
00187 SoSFFloat offset;
00188
00189
00193 SoSFEnum interpolation;
00194
00195 #if 1 SoDEPRECATED
00201 SoSFBool useVbo;
00202
00203 #endif
00205 #if 1 SoDEPRECATED enum
00208 Interpolation {
00210 NEAREST = SoVolumeShape::NEAREST,
00212 LINEAR = SoVolumeShape::LINEAR
00213 };
00214
00215 #endif
00217 private:
00218
00219 static void initClass();
00220
00222 static void exitClass();
00223
00225 virtual void GLRender(SoGLRenderAction *action);
00226
00228 virtual void computeBBox(SoAction *action, SbBox3f &box, SbVec3f ¢er);
00229
00231 virtual void computeBBox(SoAction *action, SbXfBox3d &box, SbVec3d ¢er);
00232
00233 private:
00234
00236 virtual void notify(SoNotList *list);
00237
00238 #if 1 SoDEPRECATED
00242 virtual SoVolumeShape::Interpolation getInteractiveInterpolationValue(SoState* state) const;
00243
00244 #endif
00246 private:
00247
00248 virtual void shapeRender(SoGLRenderAction* action);
00249
00251 virtual void shapeGeneratePrimitives(SoAction* action);
00252
00254 virtual void checkShapeStyle(SoState *state,const SoShapeStyleElement *shapeStyle);
00255
00257 virtual void GLRenderBoundingBox(SoGLRenderAction* action);
00258
00260 virtual void getBBox(SoAction *action, SbBox3f &box, SbVec3f ¢er);
00261
00263 virtual void getBBox(SoAction *action, SbXfBox3d &box, SbVec3d ¢er);
00264
00266 virtual int getNumVertices(SoState* state);
00267
00269 virtual int getIndexCoord(int index) const;
00270
00272 virtual ~SoVolumeIndexedFaceSet();
00273
00274 using SoVolumeGeometry::doRendering;
00275 };
00276
00277 #endif //__VOLUME_INDEXED_FACE_SET
00278
00279
00280