SoTextureCoordinate2(3)
π¦ SoTextureCoordinate2 π¦
okay so bestie, welcome to the manual page for SoTextureCoordinate2(3) β yes that's the manual section 3, library functions manual, we're being official today π
πΈ NAME πΈ
SoTextureCoordinate2 β the class that holds a whole set of coordinates for mapping 2D textures. like, it's the little list of (u, v) spots that tell the renderer where a texture goes. she's the class that contains a set of coordinates for the mapping of 2D textures, no cap β¨
β¨ SYNOPSIS β¨
#include <Inventor/nodes/SoTextureCoordinate2.h>
Inherits SoNode.
She's a SoNode girlie. Always has been. π
π Public Member Functions π
virtual SoType getTypeId (void) constSoTextureCoordinate2 (void)virtual void doAction (SoAction *action)virtual void GLRender (SoGLRenderAction *action)virtual void callback (SoCallbackAction *action)virtual void pick (SoPickAction *action)
π Public Member Functions inherited from SoNode π
the whole ancestral group chat, fr fr:
void setOverride (const SbBool state)SbBool isOverride (void) constvoid setNodeType (const NodeType type)NodeType getNodeType (void) constvirtual SoNode * copy (SbBool copyconnections=0) constvirtual SbBool affectsState (void) constvirtual void GLRenderBelowPath (SoGLRenderAction *action)virtual void GLRenderInPath (SoGLRenderAction *action)virtual void GLRenderOffPath (SoGLRenderAction *action)virtual void getBoundingBox (SoGetBoundingBoxAction *action)virtual void getMatrix (SoGetMatrixAction *action)virtual void handleEvent (SoHandleEventAction *action)virtual void rayPick (SoRayPickAction *action)virtual void search (SoSearchAction *action)virtual void write (SoWriteAction *action)virtual void audioRender (SoAudioRenderAction *action)virtual void getPrimitiveCount (SoGetPrimitiveCountAction *action)virtual void grabEventsSetup (void)virtual void grabEventsCleanup (void)virtual void startNotify (void)virtual void notify (SoNotList *l)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 β
static SoType getClassTypeId (void)static void initClass (void)
π«Ά 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)
π§ Public Attributes π§
the actual data, the moment, the main character energy:
SoMFVec2f point
π Protected Member Functions π
virtual const SoFieldData * getFieldData (void) constvirtual ~SoTextureCoordinate2 ()
πΈ 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)~SoFieldContainer ()
β¨ Protected Member Functions inherited from SoBase β¨
SoBase (void)virtual ~SoBase ()virtual void destroy (void)SbBool hasMultipleWriteRefs (void) constSbBool writeHeader (SoOutput *out, SbBool isgroup, SbBool isengine) constvoid writeFooter (SoOutput *out) constvirtual const char * getFileFormatName (void) const
π Static Protected Member Functions π
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 π
yes bestie there's MORE. the lore goes deep.
π₯ 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
}
π 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 = 0static int nextActionMethodIndex = 0
and that's just part one of this absolute saga, bestie β there's more coming π
π¦ Detailed Description π¦
Okay bestie, listen. The SoTextureCoordinate2 class is literally just a lil container holding a set of coordinates used for mapping 2D textures. That's it. That's the whole job. π
When traversal runs into nodes of this type, the coordinates it's carrying get put onto the state stack. Then some shape nodes (like SoIndexedFaceSet, and honestly so many others) can grab those coordinates and use them for explicit, detailed control over how textures get mapped onto their surfaces. Iconic behavior, no notes.
If you're doing texturemapping with zeroSoTextureCoordinate2nodes in the scenegraph leading up to a shape node, don't panic β all shape types have default fallbacks. So you only actually needSoTextureCoordinate2nodes if the default mapping isn't serving the vision. π
And heads up, this part matters: an SoTextureCoordinate2 node will replace the coordinates already present in the state (if any). Not merge. Not negotiate. Replace. π
Here's a very simple example (in Inventor scenegraph file format β mapping it over to sourcecode is straightforward, bestie) showing how to set up two quadratic polygons: one mapped 1:1 to the texture, the other using only the upper left quarter of the texture. π
Separator {
Texture2 {
image 6 8 3
0x00ff0000 0x00ff0000 0x000000ff 0x000000ff 0x00ff00ff 0x00ff00ff
0x00ff0000 0x00ff0000 0x000000ff 0x000000ff 0x00ff00ff 0x00ff00ff
0x00ff0000 0x00ff0000 0x000000ff 0x000000ff 0x00ff00ff 0x00ff00ff
0x0000ff00 0x0000ff00 0x0000ffff 0x0000ffff 0x0000ff00 0x0000ff00
0x0000ff00 0x0000ff00 0x0000ffff 0x0000ffff 0x0000ff00 0x0000ff00
0x00ffff00 0x00ffff00 0x000000ff 0x000000ff 0x00ffffff 0x00ffffff
0x00ffff00 0x00ffff00 0x000000ff 0x000000ff 0x00ffffff 0x00ffffff
0x00ffff00 0x00ffff00 0x000000ff 0x000000ff 0x00ffffff 0x00ffffff
}
Coordinate3 { point [ -1 -1 0, 1 -1 0, 1 1 0, -1 1 0 ] }
# "1:1 mapping" to actual texture appearance. (Note that Y goes
# from bottom to top, versus the common way of specifying bitmap
# data from top to bottom.)
TextureCoordinate2 { point [ 0 1, 1 1, 1 0, 0 0 ] }
IndexedFaceSet {
coordIndex [ 0, 1, 2, 3, -1 ]
textureCoordIndex [ 0, 1, 2, 3, -1 ]
}
Translation { translation +4 0 0 }
# Top left corner.
TextureCoordinate2 { point [ 0 0.5, 0.5 0.5, 0.5 0, 0 0 ] }
IndexedFaceSet {
coordIndex [ 0, 1, 2, 3, -1 ]
textureCoordIndex [ 0, 1, 2, 3, -1 ]
}
}
π FILE FORMAT/DEFAULTS π
TextureCoordinate2 {
point [ ]
}
π See also π
SoTextureCoordinateFunction,SoTextureCoordinateBinding
β¨ Constructor & Destructor Documentation β¨
SoTextureCoordinate2::SoTextureCoordinate2 (void )
Constructor, bestie. It builds the thing. π«Ά
- References:
point, andSoTextureCoordinate2(). - Referenced by:
getFieldData(), andSoTextureCoordinate2().
SoTextureCoordinate2::~SoTextureCoordinate2 () [protected], [virtual]
Destructor. It cleans up after the thing. Farewell era. πΈ
π Member Function Documentation π
SoType SoTextureCoordinate2::getTypeId (void ) const [virtual]
Returns the type identification of an object derived from a class inheriting SoBase. This is what powers run-time type checking and "downward" casting. iykyk. π₯
Usage example, copy it exactly bestie:
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
}
}
For application programmers wanting to extend the library with new nodes, engines, nodekits, draggers or others: this method needs to be overridden in all subclasses. This is 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 information on writing Coin extensions, see the class documentation of the toplevel superclasses for the various class groups. π
- Implements:
SoBase.
const SoFieldData * SoTextureCoordinate2::getFieldData (void ) const [protected], [virtual]
Hands you back a pointer to the class-wide field data storage object for this instance. And if there are no fields present at all? It returns NULL. π
- Reimplemented from:
SoFieldContainer. - References:
SoTextureCoordinate2().
void SoTextureCoordinate2::doAction (SoAction * action) [virtual]
This function performs the typical operation of a node for any action. The all-rounder. The main character. π
- Reimplemented from:
SoNode. - References:
SoAction::getState(). - Referenced by:
callback(),GLRender(), andpick().
void SoTextureCoordinate2::GLRender (SoGLRenderAction * action) [virtual]
Action method for the SoGLRenderAction. It gets called during rendering traversals. Any node influencing the rendering state in any way β or any node who wants to throw geometry primitives at OpenGL β overrides this method. π₯
- Reimplemented from:
SoNode. - References:
doAction(),SoAction::getState(),point,SoBase::staticDataLock(), andSoBase::staticDataUnlock().
void SoTextureCoordinate2::callback (SoCallbackAction * action) [virtual]
Action method for SoCallbackAction. It simply updates the state according to how the node behaves for the render action, so the application programmer can use the SoCallbackAction for extracting information about the scene graph. π΅οΈββοΈ
- Reimplemented from:
SoNode. - References:
doAction().
void SoTextureCoordinate2::pick (SoPickAction * action) [virtual]
Action method for SoPickAction. Does the common processing for SoPickAction action instances. πΈ
- Reimplemented from:
SoNode. - References:
doAction().
π Member Data Documentation π
SoMFVec2f SoTextureCoordinate2::point
The set of 2D texture coordinates. Default value of the field is an empty set. π«
Texture coordinates are usually specified in normalized coordinates, i.e. in the range [0, 1]. (0, 0) is the lower left corner, while (1, 1) is the upper right corner of the texture image. And coordinates outside the [0, 1] range can be used to repeat the texture across a surface. Slay, tiling. β¨
π See also π
SoTexure2::wrapS,SoTexture2::wrapT- Referenced by:
GLRender(), andSoTextureCoordinate2().
π Author π
Generated automatically by Doxygen for Coin from the source code.
And that's the whole page, bestie!! πβ¨π This one came out of the Coin docs (Coin, Version 2.5.0, SoTextureCoordinate2(3)), auto-generated by Doxygen straight from the source code β so if you spot a typo in there, blame the robots, not me. π¦ Now go forth and map those textures 1:1. Periodt. π
π¦ 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