SOINDEXEDTRIANGLESTRIPSET(3coin2)
π SoIndexedTriangleStripSet(3) π
okay so bestie, welcome to the Library Functions Manual β this is the page for SoIndexedTriangleStripSet(3), and it's a long one, so buckle up. It's the whole class reference: everything this node does, plus literally every single thing it inherits from its ancestors. We're doing this in parts. Grab a snack. π
β¨ NAME β¨
SoIndexedTriangleStripSet β the class that keeps data for rendering and otherwise representing triangle strips. That's the whole vibe. Triangle strips. Indexed. Iconic. π
πΈ SYNOPSIS πΈ
First things first, the include, no cap:
#include <Inventor/nodes/SoIndexedTriangleStripSet.h>
And the family tree moment: it inherits SoIndexedShape. So everything that one can do? It's in here too, down below, and we are listing all of it. π«Ά
π Public Member Functions π
These are the ones this class itself declares, right here, main character energy:
virtual SoType getTypeId (void) constβ the type-id getter, virtual edition.SoIndexedTriangleStripSet (void)β the constructor. hiiii. β¨virtual void GLRender (SoGLRenderAction *action)β the GL render override.virtual void getPrimitiveCount (SoGetPrimitiveCountAction *action)β counts the primitives when the action asks.virtual SbBool generateDefaultNormals (SoState *state, SoNormalBundle *nb)β generates default normals,SoNormalBundleflavour.
π¦ Public Member Functions inherited from SoVertexShape π¦
virtual void notify (SoNotList *nl)virtual void write (SoWriteAction *action)
π Public Member Functions inherited from SoShape π
virtual SbBool affectsState (void) constvirtual void getBoundingBox (SoGetBoundingBoxAction *action)virtual void rayPick (SoRayPickAction *action)virtual void callback (SoCallbackAction *action)const SoBoundingBoxCache * getBoundingBoxCache (void) const
π Public Member Functions inherited from SoNode π
the way that there are SO many of these. obsessed.
void setOverride (const SbBool state)SbBool isOverride (void) constvoid setNodeType (const NodeType type)NodeType getNodeType (void) constvirtual SoNode * copy (SbBool copyconnections=0) constvirtual 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)uint32_t getNodeId (void) constvirtual SoChildList * getChildren (void) constvirtual void writeInstance (SoOutput *out)virtual SoNode * addToCopyDict (void) constvirtual void copyContents (const SoFieldContainer *from, SbBool copyconnections)virtual SoFieldContainer * copyThroughConnection (void) const
π Public Member Functions inherited from SoFieldContainer π
void setToDefaults (void)SbBool hasDefaultValues (void) constSbBool fieldsAreEqual (const SoFieldContainer *container) constvoid copyFieldValues (const SoFieldContainer *container, SbBool copyconnections=0)SbBool set (const char *const fielddata)void get (SbString &fielddata)virtual int getFields (SoFieldList &l) constvirtual int getAllFields (SoFieldList &l) constvirtual SoField * getField (const SbName &name) constvirtual SoField * getEventIn (const SbName &name) constvirtual SoField * getEventOut (const SbName &name) constSbBool getFieldName (const SoField *const field, SbName &name) constSbBool enableNotify (const SbBool flag)SbBool isNotifyEnabled (void) constSbBool set (const char *fielddata, SoInput *in)void get (SbString &fielddata, SoOutput *out)virtual SbBool validateNewFieldValue (SoField *field, void *newval)virtual void addWriteReference (SoOutput *out, SbBool isfromfield=0)SbBool getIsBuiltIn (void) constvoid setUserData (void *userdata) constvoid * getUserData (void) const
β Public Member Functions inherited from SoBase β
void ref (void) constvoid unref (void) constvoid unrefNoDelete (void) constint32_t getRefCount (void) constvoid touch (void)SbBool isOfType (SoType type) constvirtual SbName getName (void) constvirtual 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) constSbBool shouldWrite (void)void assertAlive (void) const
π Static Public Member Functions π
the static girlies, doing their thing without needing an instance, periodt:
static SoType getClassTypeId (void)β the class type id.static void initClass (void)β sets the class up.
π Static Public Member Functions inherited from SoIndexedShape π
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)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)static void initClasses (void)static uint32_t 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)static SoType getClassTypeId (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)static SoType getClassTypeId (void)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 *in, SoBase *&base, SoType expectedtype)static void setInstancePrefix (const SbString &c)static void setTraceRefs (SbBool trace)static SbBool getTraceRefs (void)static SbBool connectRoute (SoInput *in, const SbName &fromnodename, const SbName &fromfieldname, const SbName &tonodename, const SbName &tofieldname)static SbBool readRoute (SoInput *in)
π«Ά Protected Member Functions π«Ά
these are the protected ones β you only get to play with these if you're subclassing, iykyk. π
virtual const SoFieldData * getFieldData (void) constvirtual ~SoIndexedTriangleStripSet ()β the destructor.virtual SbBool generateDefaultNormals (SoState *state, SoNormalCache *nc)β default normals again, but theSoNormalCacheflavour.virtual void generatePrimitives (SoAction *action)β generates the primitives.
π¦ Protected Member Functions inherited from SoIndexedShape π¦
SoIndexedShape (void)virtual ~SoIndexedShape ()virtual void computeBBox (SoAction *action, SbBox3f &box, SbVec3f ¢er)int getNumVerts (const int startCoord)void setupIndices (const int numParts, const int numFaces, const SbBool needNormals, const SbBool needTexCoords)const int32_t * getNormalIndices (void)const int32_t * getColorIndices (void)const int32_t * getTexCoordIndices (void)SbBool getVertexData (SoState *state, const SoCoordinateElement *&coords, const SbVec3f *&normals, const int32_t *&cindices, const int32_t *&nindices, const int32_t *&tindices, const int32_t *&mindices, int &numcindices, const SbBool needNormals, SbBool &normalCacheUsed)
π 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) constSoNormalCache * generateAndReadLockNormalCache (SoState *const state)void getVertexData (SoState *state, const SoCoordinateElement *&coords, const SbVec3f *&normals, const SbBool neednormals)void readLockNormalCache (void)void readUnlockNormalCache (void)
okay that's the whole synopsis dump, which is honestly the longest part β and there's still more page coming. don't go anywhere, bestie, we're not done. πΈ
π«Ά Protected Member Functions inherited from SoShape
These are the protected ones SoShape passes down β like, you're not calling these from the outside, they're β¨family-onlyβ¨, iykyk. Here's the full lineup, no cap:
SoShape (void)
virtual ~SoShape ()
float getComplexityValue (SoAction *action)
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 SoTextureCoordinateElement *const tce, const float s, const float t, const SbVec3f &normal)
void generateVertex (SoPrimitiveVertex *const pv, const SbVec3f &point, const SbBool useTexFunc, const SoTextureCoordinateElement *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)
Notice generateVertex shows up twice π β once with s, t, normal, and once with s, t, r, normal. Two overloads, both iconic, both real. And computeObjectSpaceRay is also doubled up, the second one taking that const SbMatrix &matrix extra. Periodt. π
π«Ά Protected Member Functions inherited from SoNode
SoNode (void)
virtual ~SoNode ()
virtual SbBool readInstance (SoInput *in, unsigned short flags)
Short and sweet, as she should be π
π«Ά Protected Member Functions inherited from SoFieldContainer
SoFieldContainer (void)
~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
Look at all those consts at the end β so disciplined π
β Static Protected Member Functions
static const SoFieldData ** getFieldDataPtr (void)
That's it, that's the whole list. One queen, one job. π
β Static Protected Member Functions inherited from SoIndexedShape
static const SoFieldData ** getFieldDataPtr (void)
static SbBool areTexCoordsIndexed (SoAction *action)
β 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)
Obsessed with how getFieldDataPtr keeps showing up in literally every single one of these π¦ β it's the main character fr fr.
π Additional Inherited Members
πΈ Public Types inherited from SoShape
enum TriangleShape { TRIANGLE_STRIP, TRIANGLE_FAN, TRIANGLES, POLYGON, QUADS, QUAD_STRIP, POINTS, LINES, LINE_STRIP }
Nine shapes, all valid, all valid vibes β¨
πΈ 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 }
Those hex values though β powers of two, every single one π the way that's a bitmaskβ¦ it's giving bitwise baddie.
π Public Attributes inherited from SoIndexedShape
SoMFInt32 coordIndex
SoMFInt32 materialIndex
SoMFInt32 normalIndex
SoMFInt32 textureCoordIndex
π Public Attributes inherited from SoVertexShape
SoSFNode vertexProperty
π§ Protected Types inherited from SoBase
enum BaseFlags { IS_ENGINE = 0x01, IS_GROUP = 0x02 }
π§ Protected Attributes inherited from SoNode
uint32_t uniqueId
π§ Protected Attributes inherited from SoFieldContainer
SbBool isBuiltIn
β Static Protected Attributes inherited from SoNode
static uint32_t nextUniqueId = 0
static int nextActionMethodIndex = 0
π Detailed Description
Okay so here's the actual tea β The SoIndexedTriangleStripSet class keeps data for rendering and otherwise representing triangle strips. That's the whole job, and she does it.
Use nodes of this type as an effective way of drawing triangles which are strung together. Effective! Strung together! We love a low-effort high-reward queen π«Ά
For more information, see the documentation of the SoTriangleStripSet node.
To render several strips within the same node, just separate the coordinate indices with -1. Yes bestie, -1 is the little divider βοΈ For more information about indexed shapes, see documentation in SoIndexedShape and SoIndexedFaceSet.
Example scene graph, straight from the source, do not touch a single character π :
#Inventor V2.1 ascii
Separator {
Coordinate3 {
point [
-2 1 0, -1 -1 0, 0 1 0, 1 -1 0, 2 1 0, # first strip, z==0
-2 1 5, -1 -1 5, 0 1 5, 1 -1 5, 2 1 5 # second strip, z==5
]
}
IndexedTriangleStripSet {
coordIndex [
0, 1, 2, 3, 4, -1,
5, 6, 7, 8, 9, -1
]
}
}
See how coordIndex has that -1 sitting there between the two runs of numbers? That's the strip separator doing her thing π₯ Two strips, one node, zero drama.
FILE FORMAT/DEFAULTS:
IndexedTriangleStripSet {
vertexProperty NULL
coordIndex 0
materialIndex -1
normalIndex -1
textureCoordIndex -1
}
Note the defaults bestie π β vertexProperty starts NULL, coordIndex starts 0, and materialIndex, normalIndex and textureCoordIndex all start at -1. Write that down, it'll come up.
π οΈ Constructor & Destructor Documentation
SoIndexedTriangleStripSet::SoIndexedTriangleStripSet (void )
Constructor. Default field values will equal those set in the SoIndexedShape parent class. Inheriting the defaults, as she should πΈ
References SoIndexedTriangleStripSet().
Referenced by getFieldData(), and SoIndexedTriangleStripSet().
SoIndexedTriangleStripSet::~SoIndexedTriangleStripSet () [protected], [virtual]
Destructor.
That's it, that's all she says about it π β protected and virtual, goodbye girlie, you served π
β¨ Member Function Documentation β¨
π SoType SoIndexedTriangleStripSet::getTypeId (void ) const [virtual]
Okay bestie, this one hands you the type identification of any object derived from a class inheriting SoBase. It's what makes run-time type checking and "downward" casting possible. iykyk, it's giving main character energy for the whole type system π
Usage example, and yes, this is verbatim:
void foo(SoNode * node)
{
if (node->getTypeId() == SoFile::getClassTypeId()) {
SoFile * filenode = (SoFile *)node; // safe downward cast, knows the type
}
else if (node->getTypeId().isOfType(SoGroup::getClassTypeId())) {
SoGroup * group = (SoGroup *)node; // safe downward cast, knows the type
}
}
So if you're an application programmer wanting to extend the library with new nodes, engines, nodekits, draggers or whatever β listen up π«Ά β this method needs to be overridden in all subclasses. That's typically done as part of setting up the full type system for extension classes, which is usually accomplished by using the pre-defined macros available through, for instance, Inventor/nodes/SoSubNode.h (SO_NODE_INIT_CLASS and SO_NODE_CONSTRUCTOR for node classes), Inventor/engines/SoSubEngine.h (for engine classes) and so on.
For more info on writing Coin extensions, see the class documentation of the toplevel superclasses for the various class groups.
Reimplemented from SoIndexedShape.
πΈ const SoFieldData * SoIndexedTriangleStripSet::getFieldData (void ) const [protected], [virtual]
This one returns a pointer to the class-wide field data storage object for this instance. And if there are literally no fields present? It returns NULL. That's it, that's the whole vibe π
Reimplemented from SoIndexedShape.
References SoIndexedTriangleStripSet().
π¦ void SoIndexedTriangleStripSet::GLRender (SoGLRenderAction * action) [virtual]
Action method for the SoGLRenderAction β so, the render-time one β¨
This gets called during rendering traversals. Nodes influencing the rendering state in any way, or who wants to throw geometry primitives at OpenGL, override this method. Simple as that.
Reimplemented from SoShape.
References SoIndexedShape::coordIndex, SoAction::getState(), SoIndexedShape::getVertexData(), SoState::pop(), SoState::push(), SoVertexShape::readUnlockNormalCache(), SoVertexShape::shouldGLRender(), and SoVertexShape::vertexProperty.
π₯ void SoIndexedTriangleStripSet::getPrimitiveCount (SoGetPrimitiveCountAction * action) [virtual]
Action method for the SoGetPrimitiveCountAction, periodt.
It calculates the number of triangle, line segment and point primitives for the node and adds these to the counters of the action. Nodes influencing how geometry nodes calculate their primitive count also override this method to change the relevant state variables.
Reimplemented from SoShape.
References SoGetPrimitiveCountAction::addNumTriangles(), SoGetPrimitiveCountAction::canApproximateCount(), SoIndexedShape::coordIndex, and SoShape::shouldPrimitiveCount().
π SbBool SoIndexedTriangleStripSet::generateDefaultNormals (SoState * state, SoNormalBundle * bundle) [virtual]
ngl bestie, this API member is considered internal to the library, as it is not likely to be of interest to the application programmer. π
Subclasses should override this method to generate default normals using the SoNormalBundle class. TRUE should be returned if normals were generated, FALSE otherwise.
Default method returns FALSE.
This function is an extension for Coin, and it is not available in the original SGI Open Inventor v2.1 API.
Reimplemented from SoVertexShape.
π§ SbBool SoIndexedTriangleStripSet::generateDefaultNormals (SoState * state, SoNormalCache * cache) [protected], [virtual]
Again β internal to the library, not likely to be of interest to the application programmer. Same disclaimer, same energy π
Subclasses should override this method to generate default normals using the SoNormalCache class. This is more effective than using SoNormalGenerator. Return TRUE if normals were generated, FALSE otherwise.
Default method just returns FALSE.
This function is an extension for Coin, and it is not available in the original SGI Open Inventor v2.1 API.
Reimplemented from SoVertexShape.
References SoIndexedShape::coordIndex, SoMField::getNum(), SoMFVec3f::getValues(), SoBase::isOfType(), SoVertexProperty::normal, SoVertexProperty::normalBinding, SoVertexProperty::vertex, and SoVertexShape::vertexProperty.
β void SoIndexedTriangleStripSet::generatePrimitives (SoAction * action) [protected], [virtual]
This method implements action behavior for shape nodes for SoCallbackAction. It is invoked from SoShape::callback(). And real talk: subclasses should not override SoNode::callback().
The subclass implementation uses the convenience methods SoShape::beginShape(), SoShape::shapeVertex(), and SoShape::endShape(), with SoDetail instances, to pass the primitives making up the shape back to the caller.
Implements SoShape.
References SoShape::beginShape(), SoIndexedShape::coordIndex, SoShape::endShape(), SoAction::getState(), SoIndexedShape::getVertexData(), SoFaceDetail::incFaceIndex(), SoFaceDetail::incPartIndex(), SoState::pop(), SoState::push(), SoVertexShape::readUnlockNormalCache(), SoPointDetail::setCoordinateIndex(), SoPrimitiveVertex::setDetail(), SoFaceDetail::setFaceIndex(), SoPointDetail::setMaterialIndex(), SoPrimitiveVertex::setMaterialIndex(), SoPrimitiveVertex::setNormal(), SoPointDetail::setNormalIndex(), SoPrimitiveVertex::setPoint(), SoPointDetail::setTextureCoordIndex(), SoPrimitiveVertex::setTextureCoords(), SoShape::shapeVertex(), and SoVertexShape::vertexProperty.
π Author
Generated automatically by Doxygen for Coin from the source code. Not a human, not a bestie, just a tool doing its thing π
And that's the whole page, bestie!! π This was Coin Version 2.5.0, and the manpage itself is SoIndexedT...gleStripSet(3) β slay, you made it to the end, go take a nap, you've earned it ππ
π¦ where this page comes from
- fedora 43: Coin2-devel 2.5.0-52.fc43 Β· GPL-2.0-only
- fedora 43: Coin2-devel 2.5.0-52.fc43 Β· GPL-2.0-only
- fedora 44: Coin2-devel 2.5.0-54.fc44 Β· GPL-2.0-only
- fedora 44: Coin2-devel 2.5.0-54.fc44 Β· GPL-2.0-only
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash on : a language model's rewrite of the original, under its terms