---
name: "SoNonIndexedShape"
section: "3"
platform: "linux"
package: "coin"
version: "1:4.0.10-1"
release: "Arch Linux 2026-11-01"
platforms: ["linux"]
url: "https://new.carta.tech/SoNonIndexedShape"
---

# SoNonIndexedShape(3)

The SoNonIndexedShape class is the superclass for all non-indexed vertex based shapes.

## NAME

SoNonIndexedShape - The **SoNonIndexedShape** class is the superclass for all non-indexed vertex based shapes.

## SYNOPSIS

\#include \<Inventor/nodes/SoNonIndexedShape.h\>

Inherits **SoVertexShape**.

Inherited by **SoFaceSet**, **SoLineSet**, **SoPointSet**, **SoQuadMesh**, and **SoTriangleStripSet**.

### Public Member Functions

virtual **SoType** **getTypeId** (void) const\

Public Member Functions inherited from **SoVertexShape** virtual void **notify** (**SoNotList** \*nl)\
 virtual SbBool **generateDefaultNormals** (**SoState** \*state, **SoNormalBundle** \*bundle)\
 virtual SbBool **generateDefaultNormals** (**SoState** \*state, **SoNormalCache** \*cache)\
 virtual void **write** (**SoWriteAction** \*action)\

Public Member Functions inherited from **SoShape** virtual SbBool **affectsState** (void) const\
 virtual void **getBoundingBox** (**SoGetBoundingBoxAction** \*action)\
 virtual void **GLRender** (**SoGLRenderAction** \*action)\
 virtual void **rayPick** (**SoRayPickAction** \*action)\
 virtual void **callback** (**SoCallbackAction** \*action)\
 virtual void **computeBBox** (**SoAction** \*action, **SbBox3f** &box, **SbVec3f** &center)=0\
 virtual void **getPrimitiveCount** (**SoGetPrimitiveCountAction** \*action)\
 const **SoBoundingBoxCache** \* **getBoundingBoxCache** (void) const\

Public Member Functions inherited from **SoNode** void **setOverride** (const SbBool state)\
 SbBool **isOverride** (void) const\
 void **setNodeType** (const **NodeType** type)\
 **NodeType** **getNodeType** (void) const\
 virtual **SoNode** \* **copy** (SbBool copyconnections=FALSE) const\
 virtual void **doAction** (**SoAction** \*action)\
 virtual void **GLRenderBelowPath** (**SoGLRenderAction** \*action)\
 virtual void **GLRenderInPath** (**SoGLRenderAction** \*action)\
 virtual void **GLRenderOffPath** (**SoGLRenderAction** \*action)\
 virtual void **getMatrix** (**SoGetMatrixAction** \*action)\
 virtual void **handleEvent** (**SoHandleEventAction** \*action)\
 virtual void **pick** (**SoPickAction** \*action)\
 virtual void **search** (**SoSearchAction** \*action)\
 virtual void **audioRender** (**SoAudioRenderAction** \*action)\
 virtual void **grabEventsSetup** (void)\
 virtual void **grabEventsCleanup** (void)\
 virtual void **startNotify** (void)\
 SbUniqueId **getNodeId** (void) const\
 virtual **SoChildList** \* **getChildren** (void) const\
 virtual void **writeInstance** (**SoOutput** \*out)\
 virtual **SoNode** \* **addToCopyDict** (void) const\
 virtual void **copyContents** (const **SoFieldContainer** \*from, SbBool copyconnections)\
 virtual **SoFieldContainer** \* **copyThroughConnection** (void) const\

Public Member Functions inherited from **SoFieldContainer** void **setToDefaults** (void)\
 SbBool **hasDefaultValues** (void) const\
 SbBool **fieldsAreEqual** (const **SoFieldContainer** \*container) const\
 void **copyFieldValues** (const **SoFieldContainer** \*container, SbBool copyconnections=FALSE)\
 SbBool **set** (const char \*const fielddata)\
 void **get** (**SbString** &fielddata)\
 virtual int **getFields** (**SoFieldList** &l) const\
 virtual int **getAllFields** (**SoFieldList** &l) const\
 virtual **SoField** \* **getField** (const **SbName** &name) const\
 virtual **SoField** \* **getEventIn** (const **SbName** &name) const\
 virtual **SoField** \* **getEventOut** (const **SbName** &name) const\
 SbBool **getFieldName** (const **SoField** \*const field, **SbName** &name) const\
 SbBool **enableNotify** (const SbBool flag)\
 SbBool **isNotifyEnabled** (void) const\
 SbBool **set** (const char \*fielddata, **SoInput** \*input)\
 void **get** (**SbString** &fielddata, **SoOutput** \*out)\
 virtual SbBool **validateNewFieldValue** (**SoField** \*field, void \*newval)\
 virtual void **addWriteReference** (**SoOutput** \*out, SbBool isfromfield=FALSE)\
 SbBool **getIsBuiltIn** (void) const\
 virtual void **getFieldsMemorySize** (size\_t &managed, size\_t &unmanaged) const\
 void **setUserData** (void \*userdata) const\
 void \* **getUserData** (void) const\

Public Member Functions inherited from **SoBase** void **ref** (void) const\
 void **unref** (void) const\
 void **unrefNoDelete** (void) const\
 int32\_t **getRefCount** (void) const\
 void **touch** (void)\
 SbBool **isOfType** (**SoType** type) const\
 Returns TRUE if the type of this object is either of the same type or inherited from *type*.  virtual **SbName** **getName** (void) const\
 virtual void **setName** (const **SbName** &newname)\
 void **addAuditor** (void \*const auditor, const **SoNotRec::Type** type)\
 void **removeAuditor** (void \*const auditor, const **SoNotRec::Type** type)\
 const **SoAuditorList** & **getAuditors** (void) const\
 SbBool **shouldWrite** (void)\
 void **assertAlive** (void) const\

### Static Public Member Functions

static **SoType** **getClassTypeId** (void)\
 static void **initClass** (void)\

Static Public Member Functions inherited from **SoVertexShape** static **SoType** **getClassTypeId** (void)\
 static void **initClass** (void)\

Static Public Member Functions inherited from **SoShape** static **SoType** **getClassTypeId** (void)\
 static void **initClass** (void)\
 Sets up initialization for data common to all instances of this class, like submitting necessary information to the Coin type system.     static void **getScreenSize** (**SoState** \*const state, const **SbBox3f** &boundingbox, **SbVec2s** &rectsize)\
 static float **getDecimatedComplexity** (**SoState** \*state, float complexity)\

Static Public Member Functions inherited from **SoNode** static uint32\_t **getCompatibilityTypes** (const **SoType** &nodetype)\
 static **SoType** **getClassTypeId** (void)\
 static **SoNode** \* **getByName** (const **SbName** &name)\
 static int **getByName** (const **SbName** &name, **SoNodeList** &l)\
 static void **initClass** (void)\
 Sets up initialization for data common to all instances of this class, like submitting necessary information to the Coin type system.     static void **initClasses** (void)\
 static SbUniqueId **getNextNodeId** (void)\
 static int **getActionMethodIndex** (const **SoType** type)\
 static void **getBoundingBoxS** (**SoAction** \*action, **SoNode** \*node)\
 static void **GLRenderS** (**SoAction** \*action, **SoNode** \*node)\
 static void **callbackS** (**SoAction** \*action, **SoNode** \*node)\
 static void **getMatrixS** (**SoAction** \*action, **SoNode** \*node)\
 static void **handleEventS** (**SoAction** \*action, **SoNode** \*node)\
 static void **pickS** (**SoAction** \*action, **SoNode** \*node)\
 static void **rayPickS** (**SoAction** \*action, **SoNode** \*node)\
 static void **searchS** (**SoAction** \*action, **SoNode** \*node)\
 static void **writeS** (**SoAction** \*action, **SoNode** \*node)\
 static void **audioRenderS** (**SoAction** \*action, **SoNode** \*node)\
 static void **getPrimitiveCountS** (**SoAction** \*action, **SoNode** \*node)\

Static Public Member Functions inherited from **SoFieldContainer** static void **initClass** (void)\
 Sets up initialization for data common to all instances of this class, like submitting necessary information to the Coin type system.     static **SoType** **getClassTypeId** (void)\
 This static method returns the **SoType** object associated with objects of this class.     static void **cleanupClass** (void)\
 static void **initCopyDict** (void)\
 static void **addCopy** (const **SoFieldContainer** \*orig, const **SoFieldContainer** \*copy)\
 static **SoFieldContainer** \* **checkCopy** (const **SoFieldContainer** \*orig)\
 static **SoFieldContainer** \* **findCopy** (const **SoFieldContainer** \*orig, const SbBool copyconnections)\
 static void **copyDone** (void)\

Static Public Member Functions inherited from **SoBase** static void **initClass** (void)\
 Sets up initialization for data common to all instances of this class, like submitting necessary information to the Coin type system.  static **SoType** **getClassTypeId** (void)\
 This static method returns the **SoType** object associated with objects of this class.  static void **addName** (**SoBase** \*const base, const char \*const name)\
 static void **removeName** (**SoBase** \*const base, const char \*const name)\
 static void **incrementCurrentWriteCounter** (void)\
 static void **decrementCurrentWriteCounter** (void)\
 static **SoBase** \* **getNamedBase** (const **SbName** &name, **SoType** type)\
 static int **getNamedBases** (const **SbName** &name, **SoBaseList** &baselist, **SoType** type)\
 static SbBool **read** (**SoInput** \*input, **SoBase** \*&base, **SoType** expectedtype)\
 static void **setInstancePrefix** (const **SbString** &c)\
 static void **setTraceRefs** (SbBool trace)\
 static SbBool **getTraceRefs** (void)\
 static SbBool **connectRoute** (**SoInput** \*input, const **SbName** &fromnodename, const **SbName** &fromfieldname, const **SbName** &tonodename, const **SbName** &tofieldname)\
 static SbBool **readRoute** (**SoInput** \*input)\

### Public Attributes

**SoSFInt32** **startIndex**\

Public Attributes inherited from **SoVertexShape** **SoSFNode** **vertexProperty**\

### Protected Member Functions

virtual const **SoFieldData** \* **getFieldData** (void) const\
 **SoNonIndexedShape** (void)\
 virtual **~SoNonIndexedShape** ()\
 void **computeCoordBBox** (**SoAction** \*action, int numVertices, **SbBox3f** &box, **SbVec3f** &center)\
 void **fixNumVerticesPointers** (**SoState** \*state, const int32\_t \*&start, const int32\_t \*&end, int32\_t \*dummyarray) const\

Protected Member Functions inherited from **SoVertexShape** **SoVertexShape** (void)\
 virtual **~SoVertexShape** ()\
 virtual SbBool **shouldGLRender** (**SoGLRenderAction** \*action)\
 void **setNormalCache** (**SoState** \*const state, const int num, const **SbVec3f** \*normals)\
 **SoNormalCache** \* **getNormalCache** (void) const\
 **SoNormalCache** \* **generateAndReadLockNormalCache** (**SoState** \*const state)\
 void **getVertexData** (**SoState** \*state, const **SoCoordinateElement** \*&coords, const **SbVec3f** \*&normals, const SbBool neednormals)\
 void **readLockNormalCache** (void)\
 void **readUnlockNormalCache** (void)\

Protected Member Functions inherited from **SoShape** **SoShape** (void)\
 virtual **~SoShape** ()\
 float **getComplexityValue** (**SoAction** \*action)\
 virtual void **generatePrimitives** (**SoAction** \*action)=0\
 void **beginSolidShape** (**SoGLRenderAction** \*action)\
 void **endSolidShape** (**SoGLRenderAction** \*action)\
 void **GLRenderBoundingBox** (**SoGLRenderAction** \*action)\
 SbBool **shouldPrimitiveCount** (**SoGetPrimitiveCountAction** \*action)\
 SbBool **shouldRayPick** (**SoRayPickAction** \*const action)\
 void **computeObjectSpaceRay** (**SoRayPickAction** \*const action)\
 void **computeObjectSpaceRay** (**SoRayPickAction** \*const action, const **SbMatrix** &matrix)\
 virtual **SoDetail** \* **createTriangleDetail** (**SoRayPickAction** \*action, const **SoPrimitiveVertex** \*v1, const **SoPrimitiveVertex** \*v2, const **SoPrimitiveVertex** \*v3, **SoPickedPoint** \*pp)\
 virtual **SoDetail** \* **createLineSegmentDetail** (**SoRayPickAction** \*action, const **SoPrimitiveVertex** \*v1, const **SoPrimitiveVertex** \*v2, **SoPickedPoint** \*pp)\
 virtual **SoDetail** \* **createPointDetail** (**SoRayPickAction** \*action, const **SoPrimitiveVertex** \*v, **SoPickedPoint** \*pp)\
 void **invokeTriangleCallbacks** (**SoAction** \*const action, const **SoPrimitiveVertex** \*const v1, const **SoPrimitiveVertex** \*const v2, const **SoPrimitiveVertex** \*const v3)\
 void **invokeLineSegmentCallbacks** (**SoAction** \*const action, const **SoPrimitiveVertex** \*const v1, const **SoPrimitiveVertex** \*const v2)\
 void **invokePointCallbacks** (**SoAction** \*const action, const **SoPrimitiveVertex** \*const v)\
 void **beginShape** (**SoAction** \*const action, const **TriangleShape** shapetype, **SoDetail** \*const detail=NULL)\
 void **shapeVertex** (const **SoPrimitiveVertex** \*const v)\
 void **endShape** (void)\
 void **generateVertex** (**SoPrimitiveVertex** \*const pv, const **SbVec3f** &point, const SbBool useTexFunc, const **SoMultiTextureCoordinateElement** \*const tce, const float s, const float t, const **SbVec3f** &normal)\
 void **generateVertex** (**SoPrimitiveVertex** \*const pv, const **SbVec3f** &point, const SbBool useTexFunc, const **SoMultiTextureCoordinateElement** \*const tce, const float s, const float t, const float r, const **SbVec3f** &normal)\
 SbBool **startVertexArray** (**SoGLRenderAction** \*action, const **SoCoordinateElement** \*coords, const **SbVec3f** \*pervertexnormals, const SbBool texpervertex, const SbBool colorpervertex)\
 void **finishVertexArray** (**SoGLRenderAction** \*action, const SbBool vbo, const SbBool normpervertex, const SbBool texpervertex, const SbBool colorpervertex)\

Protected Member Functions inherited from **SoNode** **SoNode** (void)\
 virtual **~SoNode** ()\
 virtual SbBool **readInstance** (**SoInput** \*in, unsigned short flags)\

Protected Member Functions inherited from **SoFieldContainer** **SoFieldContainer** (void)\
 virtual **~SoFieldContainer** ()\

Protected Member Functions inherited from **SoBase** **SoBase** (void)\
 virtual **~SoBase** ()\
 virtual void **destroy** (void)\
 SbBool **hasMultipleWriteRefs** (void) const\
 SbBool **writeHeader** (**SoOutput** \*out, SbBool isgroup, SbBool isengine) const\
 void **writeFooter** (**SoOutput** \*out) const\
 virtual const char \* **getFileFormatName** (void) const\
 virtual **SoNotRec** **createNotRec** (void)\

### Static Protected Member Functions

static const **SoFieldData** \*\* **getFieldDataPtr** (void)\

Static Protected Member Functions inherited from **SoVertexShape** static const **SoFieldData** \*\* **getFieldDataPtr** (void)\

Static Protected Member Functions inherited from **SoShape** static const **SoFieldData** \*\* **getFieldDataPtr** (void)\

Static Protected Member Functions inherited from **SoNode** static const **SoFieldData** \*\* **getFieldDataPtr** (void)\
 static void **setNextActionMethodIndex** (int index)\
 static int **getNextActionMethodIndex** (void)\
 static void **incNextActionMethodIndex** (void)\
 static void **setCompatibilityTypes** (const **SoType** &nodetype, const uint32\_t bitmask)\

Static Protected Member Functions inherited from **SoBase** static uint32\_t **getCurrentWriteCounter** (void)\
 static void **staticDataLock** (void)\
 static void **staticDataUnlock** (void)\

### Additional Inherited Members

Public Types inherited from **SoShape** enum **TriangleShape** { **TRIANGLE\_STRIP**, **TRIANGLE\_FAN**, **TRIANGLES**, **POLYGON**, **QUADS**, **QUAD\_STRIP**, **POINTS**, **LINES**, **LINE\_STRIP** }\

Public Types inherited from **SoNode** enum **NodeType** { **INVENTOR** = 0x0000, **VRML1** = 0x0001, **VRML2** = 0x0002, **INVENTOR\_1** = 0x0004, **INVENTOR\_2\_0** = 0x0008, **INVENTOR\_2\_1** = 0x0010, **INVENTOR\_2\_5** = 0x0020, **INVENTOR\_2\_6** = 0x0040, **COIN\_1\_0** = 0x0080, **COIN\_2\_0** = 0x0100, **EXTENSION** = 0x0200, **COIN\_2\_2** = 0x0400, **COIN\_2\_3** = 0x0800, **COIN\_2\_4** = 0x1000, **INVENTOR\_5\_0** = 0x2000, **COIN\_2\_5** = 0x4000, **COIN\_3\_0** = 0x8000, **INVENTOR\_6\_0** = 0x10000, **COIN\_4\_0** = 0x20000 }\

Protected Types inherited from **SoBase** enum **BaseFlags** { **IS\_ENGINE** = 0x01, **IS\_GROUP** = 0x02 }\

Protected Attributes inherited from **SoNode** SbUniqueId **uniqueId**\

Protected Attributes inherited from **SoFieldContainer** SbBool **isBuiltIn**\

Static Protected Attributes inherited from **SoNode** static SbUniqueId **nextUniqueId** = 1\
 static int **nextActionMethodIndex** = 0\

## Detailed Description

The **SoNonIndexedShape** class is the superclass for all non-indexed vertex based shapes.

It contains the (now obsoleted) startIndex field and a convenience method for calculating the bounding box.

## Constructor & Destructor Documentation

### SoNonIndexedShape::SoNonIndexedShape (void ) \[protected\]

Constructor.

### SoNonIndexedShape::~SoNonIndexedShape () \[protected\], \[virtual\]

Destructor.

## Member Function Documentation

### SoType SoNonIndexedShape::getClassTypeId (void ) \[static\]

This static method returns the **SoType** object associated with objects of this class.

### SoType SoNonIndexedShape::getTypeId (void ) const \[virtual\]

Returns the type identification of an object derived from a class inheriting **SoBase**. This is used for runtime type checking and "downward" casting.

Reimplemented from **SoVertexShape**.

Reimplemented in **SoFaceSet**, **SoLineSet**, **SoMarkerSet**, **SoPointSet**, **SoQuadMesh**, and **SoTriangleStripSet**.

### const SoFieldData \*\* SoNonIndexedShape::getFieldDataPtr (void ) \[static\], \[protected\]

*This API member is considered internal to the library, as it is not likely to be of interest to the application programmer.*\

 Returns the **SoFieldData** class which holds information about fields in this node.

### const SoFieldData \* SoNonIndexedShape::getFieldData (void ) const \[protected\], \[virtual\]

Returns a pointer to the class-wide field data storage object for this instance. If no fields are present, returns NULL.

Reimplemented from **SoVertexShape**.

Reimplemented in **SoFaceSet**, **SoLineSet**, **SoMarkerSet**, **SoPointSet**, **SoQuadMesh**, and **SoTriangleStripSet**.

### void SoNonIndexedShape::initClass (void ) \[static\]

### void SoNonIndexedShape::computeCoordBBox (SoAction \* action, int numVertices, SbBox3f & box, SbVec3f & center) \[protected\]

This method is provided as a convenient means for the subclasses of this class to find their bounding box and center value.

The returned bounding box will enclose all vertices from *startIndex* up to *startIndex* + *numVertices*. If *numVertices* is less than zero, *all* vertices in the current coordinate element or vertex property node will be used in the calculation.

The *center* point will be calculated as the average of all the vertices in the bounding box.

### void SoNonIndexedShape::fixNumVerticesPointers (SoState \* state, const int32\_t \*& start, const int32\_t \*& end, int32\_t \* dummyarray) const \[protected\]

Convenience method that might adjust *start* and *end* pointers, which should point at the start and end of the numVertices array when calling this method. This takes care of the case where numVertices contains a single -1, and all coordinates in the state (or in the vertexProperty field) should be rendered as one primitive.

*dummyarray* should be a temporary array, with room for one integer.

Not part of the OIV API.

## Member Data Documentation

### SoSFInt32 SoNonIndexedShape::startIndex

Coordinates are fetched from this index on. This field is now obsoleted, and is provided only for backward compatibility.

## Author

Generated automatically by Doxygen for Coin from the source code.
