Open Inventor Release 2024.2.1
 
Loading...
Searching...
No Matches
SoGLRenderAction.h
1/*=======================================================================
2 * Copyright 1991-1996, Silicon Graphics, Inc.
3 * ALL RIGHTS RESERVED
4 *
5 * UNPUBLISHED -- Rights reserved under the copyright laws of the United
6 * States. Use of a copyright notice is precautionary only and does not
7 * imply publication or disclosure.
8 *
9 * U.S. GOVERNMENT RESTRICTED RIGHTS LEGEND:
10 * Use, duplication or disclosure by the Government is subject to restrictions
11 * as set forth in FAR 52.227.19(c)(2) or subparagraph (c)(1)(ii) of the Rights
12 * in Technical Data and Computer Software clause at DFARS 252.227-7013 and/or
13 * in similar or successor clauses in the FAR, or the DOD or NASA FAR
14 * Supplement. Contractor/manufacturer is Silicon Graphics, Inc.,
15 * 2011 N. Shoreline Blvd. Mountain View, CA 94039-7311.
16 *
17 * THE CONTENT OF THIS WORK CONTAINS CONFIDENTIAL AND PROPRIETARY
18 * INFORMATION OF SILICON GRAPHICS, INC. ANY DUPLICATION, MODIFICATION,
19 * DISTRIBUTION, OR DISCLOSURE IN ANY FORM, IN WHOLE, OR IN PART, IS STRICTLY
20 * PROHIBITED WITHOUT THE PRIOR EXPRESS WRITTEN PERMISSION OF SILICON
21 * GRAPHICS, INC.
22**=======================================================================*/
23/*=======================================================================
24** Author : Paul S. Strauss (MMM yyyy)
25**=======================================================================*/
26/*=======================================================================
27 *** THE CONTENT OF THIS WORK IS PROPRIETARY TO FEI S.A.S, (FEI S.A.S.), ***
28 *** AND IS DISTRIBUTED UNDER A LICENSE AGREEMENT. ***
29 *** ***
30 *** REPRODUCTION, DISCLOSURE, OR USE, IN WHOLE OR IN PART, OTHER THAN AS ***
31 *** SPECIFIED IN THE LICENSE ARE NOT TO BE UNDERTAKEN EXCEPT WITH PRIOR ***
32 *** WRITTEN AUTHORIZATION OF FEI S.A.S. ***
33 *** ***
34 *** RESTRICTED RIGHTS LEGEND ***
35 *** USE, DUPLICATION, OR DISCLOSURE BY THE GOVERNMENT OF THE CONTENT OF THIS ***
36 *** WORK OR RELATED DOCUMENTATION IS SUBJECT TO RESTRICTIONS AS SET FORTH IN ***
37 *** SUBPARAGRAPH (C)(1) OF THE COMMERCIAL COMPUTER SOFTWARE RESTRICTED RIGHT ***
38 *** CLAUSE AT FAR 52.227-19 OR SUBPARAGRAPH (C)(1)(II) OF THE RIGHTS IN ***
39 *** TECHNICAL DATA AND COMPUTER SOFTWARE CLAUSE AT DFARS 52.227-7013. ***
40 *** ***
41 *** COPYRIGHT (C) 1996-2024 BY FEI S.A.S, ***
42 *** BORDEAUX, FRANCE ***
43 *** ALL RIGHTS RESERVED ***
44**=======================================================================*/
45/*=======================================================================
46** Modified by : VSG (MMM YYYY)
47**=======================================================================*/
48
49#ifndef _SO_GL_RENDER_ACTION_
50#define _SO_GL_RENDER_ACTION_
51
52#include <Inventor/SbViewportRegion.h>
53#include <Inventor/nodes/SoViewport.h>
54#include <Inventor/actions/SoSubAction.h>
55#include <Inventor/elements/SoShapeStyleElement.h>
56#include <Inventor/elements/SoDecimationTypeElement.h>
57#include <Inventor/lists/SoPathList.h>
58#include <Inventor/lists/SoSensorList.h>
59
60#ifdef _MSC_VER
61#pragma warning( push )
62#pragma warning(disable:4251)
63#endif
64
65class SbBox3f;
67class SoGLDepthPeeling;
68class SoCache;
69class SoCamera;
70class SoSeparator;
71class SoGLRenderActionSync;
72class SoGLRenderActionImpl;
73
74
82typedef void SoGLRenderPassCB(void *userData);
83
85//
86// Class: SoGLRenderAction
87//
88// GL rendering action.
89//
91
193
194 SO_ACTION_HEADER(SoGLRenderAction);
195
196 public:
197
232 {
233SoDEPRECATED
236
246
262
269
305
306 };
307
371
378
383
388
392 DELAY
393 };
394
400 typedef AbortCode SoGLRenderAbortCB(void *userData);
401
422
427 SoGLRenderAction(const SbViewportRegion &viewportRegion);
428
429#ifndef HIDDEN_FROM_DOC
430 // Destructor
431 virtual ~SoGLRenderAction();
432#endif // HIDDEN_FROM_DOC
433
437 void setViewportRegion(const SbViewportRegion &newRegion);
438
442 const SbViewportRegion &getViewportRegion() const { return vpRegion; }
443
448 void setLogicalViewportRegion(const SbViewportRegion &newLogicalRegion);
449
454
463 void setUpdateArea(const SbVec2f &origin, const SbVec2f &size);
464
468 void getUpdateArea(SbVec2f &origin, SbVec2f &size) const;
469
478 void setAbortCallback(SoGLRenderAbortCB *func, void *userData)
479 { abortCB = func; abortData = userData; }
480
515
521 { return m_transpType; }
522
532 void setFastEditSavePolicy(FastEditSavePolicy policy, SbBool fastEditDelayedObjects = FALSE);
533
538 { return m_fastEditPolicy; }
539SoDEPRECATED
550 void setSmoothing(SbBool smooth);
551SoDEPRECATED
556 SbBool isSmoothing() const { return doSmooth; }
557
573 void setNumPasses(int num);
574
578 int getNumPasses() const { return numPasses; }
579
584 void setPassUpdate(SbBool flag) { passUpdate = flag; }
585
593 SbBool isPassUpdate() const { return passUpdate; }
594
600 void setPassCallback(SoGLRenderPassCB *func, void *userData)
601 { passCB = func; passData = userData; }
602
611 void setCacheContext(uint32_t context);
612
616 uint32_t getCacheContext() const;
617
622 static uint32_t generateCacheContext();
623
627 static bool isUsedCacheContext( uint32_t context );
628
655 { m_sortedLayersNumPasses = num; }
656
657
664 { return m_sortedLayersNumPasses ; }
665
672
689 void setAlphaTest( SbBool flag );
690
695 { return m_alphaTest; }
696
697
712
716 virtual void invalidateState();
717
724 float percentage = 1.0);
725
730
735 float getDecimationPercentage() { return decPercent; };
736
753
758
766 uint32_t getFrameCounter() const { return m_frameCounter; }
767
772 void resetFrameCounter( uint32_t count = 0 ) { m_frameCounter = count; }
773
775 virtual void apply(SoNode* node);
776
778 virtual void apply(SoPath* path);
779
781 virtual void apply(const SoPathList& pathList, SbBool obeysRules = FALSE);
782
796
803
804private:
806 inline bool isDoingDepthPeeling() const { return m_isDoingDepthPeeling; }
807
811 int getDepthPeelingPass();
812
817 void enableDepthPeeling3D(bool flag) const;
818
819 SoGLDepthPeeling* getDepthPeelingInterface() const;
820
821 // Returns current rendering pass number
822 int getCurPass() const { return curPass; }
823
824 // Returns TRUE if render action should abort - checks user callback
825 SbBool abortNow()
826 { return (hasTerminated() || (abortCB != NULL && checkAbort())); }
827
828 // Returns TRUE if render action handles processing of a
829 // transparent object (if it is to be sorted and rendered later).
830 // If this returns FALSE, the object should just go ahead and
831 // render itself.
832 // The optional argument isTransparent ensures that the object being
833 // rendered will be taken as transparent, regardless of transparency
834 // in the state. If it is false, the state is checked for transparency.
835 virtual SbBool handleTransparency(SbBool isTransparent = FALSE, SbBool isLinesOrPoints = FALSE);
836
838 virtual void setUpState();
839
844 void setDelayedObjDepthWrite( SbBool flag ) { m_delayedObjDepthWrite = flag; }
845
850 SbBool getDelayedObjDepthWrite() const { return m_delayedObjDepthWrite; }
851
858 virtual bool preDelayedTraversal();
859
866 virtual void postDelayedTraversal();
867
873 void setCache( SoCache* cache );
874
876 SoCache* getCache() const;
877
878 private:
879 static void initClass();
880 static void exitClass();
881
883 inline bool isFloatingPointFramebuffer() const { return m_floatingPointFramebuffer; }
884 inline void setFloatingPointFramebuffer(bool flag) { m_floatingPointFramebuffer = flag; }
885
886 // Returns TRUE if rendering is being delayed because of transparency sorting or delaying
887 SbBool isDelaying() const { return delayObjs; }
888
889 // Returns true if the current state contains any transparency
890 bool stateContainsTransparency() const;
891
892 // Used in SoLocateHighlight in order to clear the transparent path cache
893 void removeAllDelayedPath();
894
895 bool isTraversalPassTransparent() const;
896
897 bool handleFastEdit(SoSeparator* sep);
898
899 int getCullTestResults() { return cullBits; }
900 void setCullTestResults(int b) { cullBits = b; }
901
902 SbBool isLogicalRegionSet() const;
903
904 void setTiledViewportRegion(const SbVec4f& region, int info = 0);
905
910 void setMaxDepthOffset(float maxDepthOffset);
911
912/* FAST EDIT METHODS*/
913 // set the buffer type.
914 void setDoubleBuffer(SbBool db);
915 // The main scene must be redrawn.
916 void setForceRender();
917 // Set viewing mode (from viewer).
918 void setViewing(SbBool viewing);
919 // Is there any delayed object to render ?
920 SbBool hasDelayedNodesToRender() const;
921 // initialize the start of a stereo pass.
922 void setFirstStereoPass(SbBool first);
923
924 SoPathList transpPaths; // Keep for compatibility. should be removed in OIV 9.2
925
926 void setRenderingFromOffscreen(SbBool renderFromOffscreen)
927 { m_renderingFromOffscreen = renderFromOffscreen; }
928
929 SbBool getRenderingFromOffscreen() const
930 { return m_renderingFromOffscreen; }
931
932 //Return true after an apply if there were transparent objects
933 //(used in SoLocateHighlight in order to redraw the whole scene only in this case)
934 SbBool hasDrawnTransparentObjs() const
935 { return m_hasDrawnTransparentObjs; }
936
937 // Set the fullscene antialiasing element
938 void setFullSceneAntialiasingElement( SbBool enable, int filterMask );
939
940 // Set the number of samples for MSAA
941 void setMSNumSamples(int numSamples);
942
944 enum RenderMode {
948 ALL_OBJECTS,
952 OPAQUE_OBJECTS,
956 DELAYED_OBJECTS
957 };
958
959 //
960 // Allow to restrict which object will be render during the next ::render call.
961 // After the ::render call, this mode is reset to its default value.
962 // Note : this is used by ScaleViz Depth compositing to manage delayed object.
963 void setRestrictObjectRenderingMode( const RenderMode mode = ALL_OBJECTS )
964 { m_restrictObjectRendering = mode; };
965
966 int getRestrictObjectRenderingMode() const
967 { return m_restrictObjectRendering; };
968
969 SoGLRenderActionSync* getSynchronizer() const;
970 void setSynchronizer( SoGLRenderActionSync* );
971
972 virtual void updateParametersFrom( SoGLRenderAction* );
973 SoGLRenderPassCB* getPassCallback( void*& data )
974 {
975 data = passData;
976 return passCB;
977 }
978
979 SoGLRenderActionImpl* getImpl();
980
981 // Used to temporary change the depth peeling interface, used
982 // for depth only. Returns the value in use before the call.
983 SoGLDepthPeeling* setDepthPeelingInterface(SoGLDepthPeeling*);
984
985 bool isFastEditManipulating();
986
987 SoPathList delayedPaths; // Keep for compatibility. should be removed in OIV 9.2
988
994 bool isLazyEvaluating() const { return m_lazyEvaluating; }
995 void setLazyEvaluating(bool value) { m_lazyEvaluating = value; }
996
997 void copyParametersFrom( SoGLRenderAction* action );
998
999 SoViewport* getViewportNode() const
1000 {
1001 return m_viewport.ptr();
1002 }
1003
1004 // These flags determine which things have to be sent to GL when
1005 // the action is applied. They indicate what's changed since the
1006 // last time the action was applied.
1007 enum flags {
1008 TRANSPARENCY_TYPE = 0x01,
1009 SMOOTHING = 0x02,
1010 ALPHA_TEST = 0x04,
1011 FASTEDIT_SAVE_POLICY = 0x08,
1012 SCENE_GRAPH = 0x10,
1013 ANTIALIASING = 0x20,
1014 ALL = 0x3F // Initial value
1015 };
1016
1017private:
1018 // Initiates action on graph
1019 virtual void beginTraversal(SoNode *node);
1020
1021SoINTERNAL private:
1022 // used internally to temporary change the fastEditPolicy without reseting any caches
1023 void setFastEditSavePolicyInternal(FastEditSavePolicy policy)
1024 { m_fastEditPolicy = policy; }
1025
1026 // used internally to temporary change the transparencyType without reseting any caches
1027 void setTransparencyTypeInternal(TransparencyType type)
1028 { m_transpType = type; }
1029
1030 uint32_t getWhatChanged() const
1031 {
1032 return whatChanged;
1033 }
1034
1035private:
1036
1038 template<typename ApplyType> void commonApply(ApplyType applyObject, SbBool obeysRules);
1039
1041 template<typename ApplyType> void applyTo(ApplyType applyObject, SbBool obeysRules);
1042
1043 SoGLRenderActionSync* m_synchronizer;
1044
1045 FastEditSavePolicy m_fastEditPolicy; // Transparency quality type
1046 TransparencyType m_transpType; // Transparency quality type
1047
1051 void removeInvalidPaths();
1052
1054 bool m_isDoingDepthPeeling;
1055
1056 SbBool m_hasDrawnTransparentObjs;
1057 SbBool m_isViewing;
1058 SoNode* m_appliedNode;
1059 SbBool m_isFirstApply;
1060 SbBool m_firstStereoPass;
1061 int m_lastStereoMode;
1062
1063 int m_useCacheOpt;
1064 int m_useCompactPaths;
1065
1066 SbViewportRegion vpRegion; // Current viewport region
1067
1068 // super viewport node that manage viewport, modify viewport and logical viewport
1069 SoRef<SoViewport> m_viewport;
1070
1074 SoRef<SoNode> m_maxDepthOffset;
1075
1076 SbVec2f updateOrigin; // Origin of update area
1077 SbVec2f updateSize; // Size of update area
1078
1079
1080 // Variables for render abort:
1081 SoGLRenderAbortCB *abortCB; // Callback to test abort
1082 void *abortData; // User data for abort callback
1083
1084 // Variables for transparency, smoothing, and multi-pass rendering:
1085 SbBool doSmooth; // Doing smoothing ?
1086 int numPasses; // Number of rendering passes
1087 int curPass; // Current pass
1088 SbBool passUpdate; // Whether to update after each pass
1089 SoGLRenderPassCB *passCB; // Callback between passes
1090 void *passData; // User data for pass callback
1091
1092 // For SORTED_OBJECT transparency:
1093 SbBool delayObjs; // TRUE if transp objects are to be delayed until after opaque ones
1094
1095 SbBool remoteRendering;// Remote rendering?
1096
1097 // BA 2/98 - added decimation variables
1098 SoDecimationTypeElement::Type decType; // Decimation type
1099 float decPercent; // Decimation percentage
1100
1101 uint32_t whatChanged;
1102
1103 // Enables or disables GL blending
1104 void enableBlending(SbBool enable);
1105
1106 // Enables or disables GL smoothing
1107 void enableSmoothing(SbBool enable);
1108
1109 // Returns TRUE if render action should abort based on callback
1110 SbBool checkAbort();
1111
1112 // Keep track of which planes we need to view-volume cull test
1113 // against:
1114 int cullBits;
1115
1116 SbBool m_delayedObjDepthWrite;
1117
1118 // Indicates if the next render is asked for Offscreen
1119 SbBool m_renderingFromOffscreen;
1120
1121 SbBool m_alphaTest;
1122
1123 // Count frames rendered with this action (for debugging)
1124 uint32_t m_frameCounter;
1125
1126 // indicate if action is currently called to evaluate lazy eval or for classical traversal.
1127 // See isLazyEvaluating() doc for details.
1128 bool m_lazyEvaluating;
1129
1130 //================== Begin sorted layers rendering ========================
1131
1132 int m_sortedLayersNumPasses ;
1133
1134 // Realizes a sorted layers rendering using depth peeling technics.
1135 void renderSortedLayers(SoNode *node) ;
1136 void initDepthPeeling(SoNode *node);
1137
1138 // Rendering callback for sorted layers rendering.
1139 static void renderSortedLayersCB(void *userData, SoGLDepthPeeling *mgr) ;
1140
1141 SoGLDepthPeeling *m_glDepthPeeling ;
1142
1143 static void cameraPostCB( SoCamera *camera, SoGLRenderAction* renderAction );
1144 bool m_ignoreCameraPostCB;
1145 //================== End Sorted layers rendering ========================
1146
1147
1148 InvalidateCacheMode m_invalidateAllCaches;
1149 RenderMode m_restrictObjectRendering;
1150
1151 bool m_floatingPointFramebuffer;
1152
1153 //================ FSAA element management ============================
1154 SbBool m_fsaaEnable;
1155 int m_fsaaFilterMask;
1156 int m_fsaaNumSamples;
1157
1158 SoGLRenderActionImpl* m_impl;
1159};
1160
1161
1162// INLINE METHODS
1163inline SoGLRenderActionSync* SoGLRenderAction::getSynchronizer() const
1164{
1165 return m_synchronizer;
1166}
1167
1168inline SoGLRenderActionImpl* SoGLRenderAction::getImpl()
1169{
1170 return m_impl;
1171}
1172
1173#ifdef _MSC_VER
1174#pragma warning( pop )
1175#endif
1176#endif /* _SO_GL_RENDER_ACTION_ */
1177
3D box class.
Definition SbBox.h:649
2D vector class.
Definition SbVec.h:76
4D vector class.
Definition SbVec.h:2214
Class for representing a viewport.
Abstract base class for all actions.
Definition SoAction.h:132
SbBool hasTerminated() const
Returns TRUE if the traversal has reached a termination condition.
Definition SoAction.h:430
Abstract base class for camera nodes.
Definition SoCamera.h:188
Type
These are the available decimation types.
Renders a scene graph using Open Inventor's Render Engine.
AbortCode
Possible return codes from a render abort callback.
@ DELAY
Delay rendering of this node until the second pass.
@ ABORT
Stop traversing the rest of the graph.
@ PRUNE
Do not traverse this node or its children, but continue.
@ CONTINUE
Continue traversal as usual.
FastEditSavePolicy
Fast edit traversal types.
@ DISABLE
Fast editing is disabled.
@ WHEN_NEEDED
The fast edit feature is available.
@ EACH_FRAME
The fast edit feature is available.
float getDecimationPercentage()
Gets decimation percentage, the value should be a number between 0.0 and 1.0.
void setAlphaTest(SbBool flag)
Enable or disable the OpenGL alpha test for rendering.
int getSortedLayersNumPasses() const
Returns the number of rendering passes used when transparency type is SORTED_PIXEL.
void SoGLRenderPassCB(void *userData)
Callback functions used between rendering passes should be of this type.
AutoCacheMode
Two bits are stored.
InvalidateCacheMode
Invalidate cache mode.
@ OFF
(Default) Render caches are handled normally.
@ ONCE
Render caches are invalidated for each SoSeparator node before its children are traversed.
@ ALWAYS
Render caches are invalidated for each SoSeparator node before its children are traversed.
virtual void invalidateState()
Invalidate the state, forcing it to be recreated at the next apply.
const SbViewportRegion & getLogicalViewportRegion() const
Returns current logical viewport region.
static uint32_t generateCacheContext()
Generates and returns a new cache context id.
TransparencyType getTransparencyType() const
Returns transparency quality level to use when rendering.
virtual void apply(SoNode *node)
Initiates an action on the graph defined by a node.
SoDEPRECATED void setSmoothing(SbBool smooth)
Sets smoothing flag.
void setDecimationValue(SoDecimationTypeElement::Type type, float percentage=1.0)
Sets decimation percentage, the value should be a number between 0.0 and 1.0 Useful for reducing the ...
void setTransparencyType(TransparencyType type)
Sets global transparency algorithm to use when rendering.
SbBool isAlphaTest() const
Returns whether the OpenGL alpha test is enabled for rendering.
void setSortedLayersNumPasses(int num)
Sets the number of rendering passes used when transparency type is SORTED_PIXEL.
void setFastEditSavePolicy(FastEditSavePolicy policy, SbBool fastEditDelayedObjects=FALSE)
Sets fast editing save policy to use when rendering.
AbortCode SoGLRenderAbortCB(void *userData)
Callback functions for render abort should be of this type.
void setPassUpdate(SbBool flag)
Sets a flag indicating whether intermediate results are displayed after each antialiasing pass for pr...
void setAbortCallback(SoGLRenderAbortCB *func, void *userData)
Sets callback to call during rendering to test for an abort condition.
void setCacheContext(uint32_t context)
Sets the OpenGL cache context.
SoGLRenderAction(const SbViewportRegion &viewportRegion)
Constructor.
virtual void apply(const SoPathList &pathList, SbBool obeysRules=FALSE)
Initiates an action on the graph defined by a list of paths.
SoDEPRECATED SbBool isSmoothing() const
Returns smoothing flag.
void shouldAutoCache(AutoCacheMode mode)
Called by nodes to say that they should/shouldn't be auto-cached (pass TRUE if should,...
SbBool getRenderingIsRemote() const
Returns TRUE if remote rendering is being done.
void setLogicalViewportRegion(const SbViewportRegion &newLogicalRegion)
Sets current logical viewport region to use for rendering.
const SbViewportRegion & getViewportRegion() const
Returns viewport region to use for rendering.
void resetFrameCounter(uint32_t count=0)
Reset the frame counter.
TransparencyType
Transparency rendering algorithm.
@ OPAQUE_FIRST
Same as NO_SORT, but the rendering of opaque objects is performed before the rendering of semi-transp...
@ SORTED_PIXEL
Same as OPAQUE_FIRST, but uses a fragment-level depth sorting technique during the rendering of semi-...
@ NO_SORT
The simplest transparency mode.
@ SORTED_OBJECT
Same as OPAQUE_FIRST, but sorts semi-transparent objects by distances of bounding boxes from camera.
virtual void apply(SoPath *path)
Initiates an action on the graph defined by a path.
SoDecimationTypeElement::Type getDecimationType()
Gets decimation type.
uint32_t getCacheContext() const
Returns the OpenGL cache context id for this action.
uint32_t getFrameCounter() const
Returns the current frame counter.
void setPassCallback(SoGLRenderPassCB *func, void *userData)
Sets a callback function to invoke between passes when antialiasing.
static bool isUsedCacheContext(uint32_t context)
Returns TRUE if the specified cache context id is currently used by any SoGLRenderAction.
static SbBool isSortedLayersSupported(SoState *state=NULL)
Indicates if SORTED_PIXEL transparency is supported by your graphics board on the current context.
void setRenderingIsRemote(SbBool flag)
Sets whether or not "remote" rendering is done.
FastEditSavePolicy getFastEditSavePolicy() const
Returns fast editing save policy used when rendering.
SbBool isPassUpdate() const
Returns a flag indicating whether intermediate results are displayed after each antialiasing pass for...
InvalidateCacheMode getInvalidateCacheMode()
Returns the current cache invalidation mode.
void getUpdateArea(SbVec2f &origin, SbVec2f &size) const
Returns the current update area.
void setViewportRegion(const SbViewportRegion &newRegion)
Changes viewport region to use for rendering.
int getNumPasses() const
Gets number of rendering passes for multipass rendering.
void setNumPasses(int num)
Sets number of rendering passes for multipass antialiasing.
void setInvalidateCacheMode(InvalidateCacheMode icm)
Enables or disables the invalidation of render caches.
void setUpdateArea(const SbVec2f &origin, const SbVec2f &size)
Sets the current update area, which is the rectangular area of the viewport region that will actually...
Computes bounding box of a scene.
Abstract base class for all database nodes.
Definition SoNode.h:145
Path that points to a list of hierarchical nodes.
Definition SoPath.h:187
Maintains a list of pointers to paths.
Definition SoPathList.h:81
Smart pointer for any class inheriting SoRefCounter.
Definition SoRef.h:90
T * ptr() const
Cast to C pointer.
Definition SoRef.h:167
Group node that saves and restores traversal state.
Traversal state.
Definition SoState.h:74
<a href="IconLegend.html"><img src="extTGS.gif" alt="VSG extension" border="0"></a> Viewport paramet...
Definition SoViewport.h:103
int SbBool
Boolean type.
Definition SbBase.h:87