If you need to combine Inventor and OpenGL calls, Table 28.1, “OpenGL State Variables: Current Values and Associated Data” through Table 28.9, “OpenGL State Variables: Miscellaneous” list the OpenGL state variables and describe which Inventor nodes (or actions) change those variables. If Inventor uses the current value of an OpenGL state variable and never changes it, the variable is omitted from this set of tables. See the OpenGL Programming Guide for a complete list of all OpenGL state variables and their default values. The recommended value for these variables is the default value, with two exceptions: turn on z-buffering and use RGB color mode.
Remember, the constructor for SoGLRenderAction takes a parameter that specifies whether to inherit the current OpenGL values. If you specify TRUE, Inventor inherits values from OpenGL. If you specify FALSE (the default), Inventor sets up its own reasonable default values (see Applying Actions).
To save and restore OpenGL state, use the OpenGL pushAttributes() and popAttributes() commands. For example, if you change variables in the OpenGL state in a callback node, you need to restore the state when the callback node is finished. Note that if your callback node begins with a pushAttributes() and ends with a popAttributes(), but a render abort occurs in between, popAttributes() is never called and the state is not restored.
Table 28.1. OpenGL State Variables: Current Values and Associated Data
OpenGL State Variable | Inventor Nodes That Change This Variable |
---|---|
GL_CURRENT_COLOR | Shapes, Material, Base Color |
GL_CURRENT_INDEX | Color Index node, Shapes |
GL_CURRENT_TEXTURE_COORDS | Shapes, TextureCoordinate2 |
GL_CURRENT_NORMAL | Shapes, Normal |
GL_CURRENT_RASTER_POSITION | Text2 |
GL_CURRENT_RASTER_COLOR | Text2 |
GL_CURRENT_RASTER_INDEX | Text2 |
GL_CURRENT_RASTER_POSITION_- VALID | Text2 |
Table 28.2. OpenGL State Variables: Transformation State
OpenGL State Variable | Inventor Nodes That Change This Variable |
---|---|
GL_MODELVIEW_MATRIX | Transformation nodes, Cameras |
GL_PROJECTION_MATRIX | Cameras |
GL_TEXTURE_MATRIX | Texture2Transform |
GL_VIEWPORT | Cameras |
GL_DEPTH_RANGE | Cameras |
GL_MODELVIEW_STACK_DEPTH | Transformation nodes |
GL_TEXTURE_STACK_DEPTH | Texture2Transform |
GL_MATRIX_MODE | Cameras, Texture2Transform |
Table 28.3. OpenGL State Variables: Coloring
OpenGL State Variable | Inventor Nodes That Change This Variable |
---|---|
GL_FOG_COLOR | Environment node |
GL_FOG_INDEX | Environment node |
GL_FOG_DENSITY | Environment node |
GL_FOG_START | Environment node |
GL_FOG_END | Environment node |
GL_FOG_MODE | Environment node |
GL_FOG | Environment node |
GL_SHADE_MODEL | Light Model, if in color index mode |
Table 28.4. OpenGL State Variables: Lighting
OpenGL State Variable | Inventor Nodes That Change This Variable |
---|---|
GL_LIGHTING | Light Model |
GL_COLOR_MATERIAL | Shapes |
GL_MATERIAL_PARAMETER | Shapes |
GL_MATERIAL_FACE | Shapes |
GL_AMBIENT | Shapes, Material |
GL_DIFFUSE | Shapes, Material |
GL_SPECULAR | Shapes, Material |
GL_EMISSION | Shapes, Material |
GL_SHININESS | Shapes, Material |
GL_LIGHT_MODEL_AMBIENT | Shapes, Material |
GL_LIGHT_MODEL_LOCAL_VIEWER | Shapes, Material |
GL_LIGHT_MODEL_TWO_SIDE | Shape Hints |
GL_AMBIENT | Lights |
GL_DIFFUSE | Lights |
GL_SPECULAR | Lights |
GL_POSITION | Lights |
GL_CONSTANT_ATTENUATION | Environment |
GL_LINEAR_ATTENUATION | Environment |
GL_QUADRATIC_ATTENUATION | Environment |
GL_SPOT_DIRECTION | Lights |
GL_SPOT_EXPONENT | Lights |
GL_SPOT_CUTOFF | Lights |
GL_LIGHT*i* | Lights |
GL_COLOR_INDEXES | Lights |
Table 28.5. OpenGL State Variables: Rasterization
OpenGL State Variable | Inventor Nodes That Change This Variable |
---|---|
GL_POINT_SIZE | Draw Style |
GL_POINT_SMOOTH | Render action |
GL_LINE_WIDTH | Draw Style |
GL_LINE_SMOOTH | Render Action |
GL_LINE_STIPPLE_PATTERN | Draw Style |
GL_LINE_STIPPLE | Draw Style |
GL_CULL_FACE | Shape Hints |
GL_CULL_FACE_MODE | Shape Hints |
GL_POLYGON_MODE | Draw Style |
GL_POLYGON_STIPPLE | Shapes if SCREEN_DOOR transparency |
Table 28.6. OpenGL State Variables: Texturing
OpenGL State Variable | Inventor Nodes That Change This Variable |
---|---|
GL_TEXTURE_*x* | Texture2 node |
GL_TEXTURE | Texture2 node |
GL_TEXTURE_WIDTH | Texture2 node |
GL_TEXTURE_HEIGHT | Texture2 node |
GL_TEXTURE_COMPONENTS | Texture2 node |
GL_TEXTURE_MIN_FILTER | Complexity node |
GL_TEXTURE_MAG_FILTER | Complexity node |
GL_TEXTURE_WRAP_*x* | Texture2 node |
GL_TEXTURE_ENV_MODE | Texture2 node |
GL_TEXTURE_ENV_COLOR | Texture2 node |
GL_TEXTURE_GEN_*x* | Texture Coordinate Function nodes |
GL_EYE_LINEAR | Texture Coordinate Function nodes |
GL_OBJECT_LINEAR | Texture Coordinate Function nodes |
GL_TEXTURE_GEN_MODE | Texture Coordinate Function nodes |
Table 28.7. OpenGL State Variables: Pixel Operations
| GL_BLEND | Render action, Texture2 node | | GL_BLEND_SRC | Render action, Texture2 node | | GL_BLEND_DST | Render action, Texture2 node |
Table 28.8. OpenGL State Variables: Pixels
OpenGL State Variable | Inventor Nodes That Change This Variable |
---|---|
GL_UNPACK_ALIGNMENT | Texture2 node |
GL_*_SCALE (* = RED; GREEN; BLUE; ALPHA) | Texture2 node |
GL_*_BIAS (* = RED; GREEN; BLUE; ALPHA) | Texture2 node |
Table 28.9. OpenGL State Variables: Miscellaneous
OpenGL State Variable | Inventor Nodes That Change This Variable |
---|---|
GL_LIST_BASE | Text2, Text3 nodes |
GL_LIST_INDEX | Separator, Text2, Text3 nodes |
GL_LIST_MODE | Separator, Text2, Text3 nodes |