.TH "SoTexture2" 3 "Tue Jun 23 2026 23:48:38" "Version 4.0.10" "Coin" \" -*- nroff -*- .ad l .nh .SH NAME SoTexture2 \- The \fBSoTexture2\fP class is used to map a 2D texture onto subsequent geometry in the scene graph\&. .SH SYNOPSIS .br .PP .PP \fR#include \fP .PP Inherits \fBSoTexture\fP\&. .SS "Public Types" .in +1c .ti -1c .RI "enum \fBModel\fP { \fBMODULATE\fP = SoMultiTextureImageElement::MODULATE, \fBDECAL\fP = SoMultiTextureImageElement::DECAL, \fBBLEND\fP = SoMultiTextureImageElement::BLEND, \fBREPLACE\fP = SoMultiTextureImageElement::REPLACE }" .br .ti -1c .RI "enum \fBWrap\fP { \fBREPEAT\fP = SoMultiTextureImageElement::REPEAT, \fBCLAMP\fP = SoMultiTextureImageElement::CLAMP }" .br .in -1c Public Types inherited from \fBSoNode\fP .in +1c .ti -1c .RI "enum \fBNodeType\fP { \fBINVENTOR\fP = 0x0000, \fBVRML1\fP = 0x0001, \fBVRML2\fP = 0x0002, \fBINVENTOR_1\fP = 0x0004, \fBINVENTOR_2_0\fP = 0x0008, \fBINVENTOR_2_1\fP = 0x0010, \fBINVENTOR_2_5\fP = 0x0020, \fBINVENTOR_2_6\fP = 0x0040, \fBCOIN_1_0\fP = 0x0080, \fBCOIN_2_0\fP = 0x0100, \fBEXTENSION\fP = 0x0200, \fBCOIN_2_2\fP = 0x0400, \fBCOIN_2_3\fP = 0x0800, \fBCOIN_2_4\fP = 0x1000, \fBINVENTOR_5_0\fP = 0x2000, \fBCOIN_2_5\fP = 0x4000, \fBCOIN_3_0\fP = 0x8000, \fBINVENTOR_6_0\fP = 0x10000, \fBCOIN_4_0\fP = 0x20000 }" .br .in -1c .SS "Public Member Functions" .in +1c .ti -1c .RI "virtual \fBSoType\fP \fBgetTypeId\fP (void) const" .br .ti -1c .RI "\fBSoTexture2\fP (void)" .br .ti -1c .RI "virtual void \fBdoAction\fP (\fBSoAction\fP *action)" .br .ti -1c .RI "virtual void \fBGLRender\fP (\fBSoGLRenderAction\fP *action)" .br .ti -1c .RI "virtual void \fBcallback\fP (\fBSoCallbackAction\fP *action)" .br .ti -1c .RI "virtual void \fBrayPick\fP (\fBSoRayPickAction\fP *action)" .br .in -1c Public Member Functions inherited from \fBSoNode\fP .in +1c .ti -1c .RI "void \fBsetOverride\fP (const SbBool state)" .br .ti -1c .RI "SbBool \fBisOverride\fP (void) const" .br .ti -1c .RI "void \fBsetNodeType\fP (const \fBNodeType\fP type)" .br .ti -1c .RI "\fBNodeType\fP \fBgetNodeType\fP (void) const" .br .ti -1c .RI "virtual \fBSoNode\fP * \fBcopy\fP (SbBool copyconnections=FALSE) const" .br .ti -1c .RI "virtual SbBool \fBaffectsState\fP (void) const" .br .ti -1c .RI "virtual void \fBGLRenderBelowPath\fP (\fBSoGLRenderAction\fP *action)" .br .ti -1c .RI "virtual void \fBGLRenderInPath\fP (\fBSoGLRenderAction\fP *action)" .br .ti -1c .RI "virtual void \fBGLRenderOffPath\fP (\fBSoGLRenderAction\fP *action)" .br .ti -1c .RI "virtual void \fBgetBoundingBox\fP (\fBSoGetBoundingBoxAction\fP *action)" .br .ti -1c .RI "virtual void \fBgetMatrix\fP (\fBSoGetMatrixAction\fP *action)" .br .ti -1c .RI "virtual void \fBhandleEvent\fP (\fBSoHandleEventAction\fP *action)" .br .ti -1c .RI "virtual void \fBpick\fP (\fBSoPickAction\fP *action)" .br .ti -1c .RI "virtual void \fBsearch\fP (\fBSoSearchAction\fP *action)" .br .ti -1c .RI "virtual void \fBwrite\fP (\fBSoWriteAction\fP *action)" .br .ti -1c .RI "virtual void \fBaudioRender\fP (\fBSoAudioRenderAction\fP *action)" .br .ti -1c .RI "virtual void \fBgetPrimitiveCount\fP (\fBSoGetPrimitiveCountAction\fP *action)" .br .ti -1c .RI "virtual void \fBgrabEventsSetup\fP (void)" .br .ti -1c .RI "virtual void \fBgrabEventsCleanup\fP (void)" .br .ti -1c .RI "virtual void \fBstartNotify\fP (void)" .br .ti -1c .RI "SbUniqueId \fBgetNodeId\fP (void) const" .br .ti -1c .RI "virtual \fBSoChildList\fP * \fBgetChildren\fP (void) const" .br .ti -1c .RI "virtual void \fBwriteInstance\fP (\fBSoOutput\fP *out)" .br .ti -1c .RI "virtual \fBSoNode\fP * \fBaddToCopyDict\fP (void) const" .br .ti -1c .RI "virtual void \fBcopyContents\fP (const \fBSoFieldContainer\fP *from, SbBool copyconnections)" .br .ti -1c .RI "virtual \fBSoFieldContainer\fP * \fBcopyThroughConnection\fP (void) const" .br .in -1c Public Member Functions inherited from \fBSoFieldContainer\fP .in +1c .ti -1c .RI "void \fBsetToDefaults\fP (void)" .br .ti -1c .RI "SbBool \fBhasDefaultValues\fP (void) const" .br .ti -1c .RI "SbBool \fBfieldsAreEqual\fP (const \fBSoFieldContainer\fP *container) const" .br .ti -1c .RI "void \fBcopyFieldValues\fP (const \fBSoFieldContainer\fP *container, SbBool copyconnections=FALSE)" .br .ti -1c .RI "SbBool \fBset\fP (const char *const fielddata)" .br .ti -1c .RI "void \fBget\fP (\fBSbString\fP &fielddata)" .br .ti -1c .RI "virtual int \fBgetFields\fP (\fBSoFieldList\fP &l) const" .br .ti -1c .RI "virtual int \fBgetAllFields\fP (\fBSoFieldList\fP &l) const" .br .ti -1c .RI "virtual \fBSoField\fP * \fBgetField\fP (const \fBSbName\fP &name) const" .br .ti -1c .RI "virtual \fBSoField\fP * \fBgetEventIn\fP (const \fBSbName\fP &name) const" .br .ti -1c .RI "virtual \fBSoField\fP * \fBgetEventOut\fP (const \fBSbName\fP &name) const" .br .ti -1c .RI "SbBool \fBgetFieldName\fP (const \fBSoField\fP *const field, \fBSbName\fP &name) const" .br .ti -1c .RI "SbBool \fBenableNotify\fP (const SbBool flag)" .br .ti -1c .RI "SbBool \fBisNotifyEnabled\fP (void) const" .br .ti -1c .RI "SbBool \fBset\fP (const char *fielddata, \fBSoInput\fP *input)" .br .ti -1c .RI "void \fBget\fP (\fBSbString\fP &fielddata, \fBSoOutput\fP *out)" .br .ti -1c .RI "virtual SbBool \fBvalidateNewFieldValue\fP (\fBSoField\fP *field, void *newval)" .br .ti -1c .RI "virtual void \fBaddWriteReference\fP (\fBSoOutput\fP *out, SbBool isfromfield=FALSE)" .br .ti -1c .RI "SbBool \fBgetIsBuiltIn\fP (void) const" .br .ti -1c .RI "virtual void \fBgetFieldsMemorySize\fP (size_t &managed, size_t &unmanaged) const" .br .ti -1c .RI "void \fBsetUserData\fP (void *userdata) const" .br .ti -1c .RI "void * \fBgetUserData\fP (void) const" .br .in -1c Public Member Functions inherited from \fBSoBase\fP .in +1c .ti -1c .RI "void \fBref\fP (void) const" .br .ti -1c .RI "void \fBunref\fP (void) const" .br .ti -1c .RI "void \fBunrefNoDelete\fP (void) const" .br .ti -1c .RI "int32_t \fBgetRefCount\fP (void) const" .br .ti -1c .RI "void \fBtouch\fP (void)" .br .ti -1c .RI "SbBool \fBisOfType\fP (\fBSoType\fP type) const" .br .RI "Returns \fRTRUE\fP if the type of this object is either of the same type or inherited from \fItype\fP\&. " .ti -1c .RI "virtual \fBSbName\fP \fBgetName\fP (void) const" .br .ti -1c .RI "virtual void \fBsetName\fP (const \fBSbName\fP &newname)" .br .ti -1c .RI "void \fBaddAuditor\fP (void *const auditor, const \fBSoNotRec::Type\fP type)" .br .ti -1c .RI "void \fBremoveAuditor\fP (void *const auditor, const \fBSoNotRec::Type\fP type)" .br .ti -1c .RI "const \fBSoAuditorList\fP & \fBgetAuditors\fP (void) const" .br .ti -1c .RI "SbBool \fBshouldWrite\fP (void)" .br .ti -1c .RI "void \fBassertAlive\fP (void) const" .br .in -1c .SS "Static Public Member Functions" .in +1c .ti -1c .RI "static \fBSoType\fP \fBgetClassTypeId\fP (void)" .br .ti -1c .RI "static void \fBinitClass\fP (void)" .br .RI "Sets up initialization for data common to all instances of this class, like submitting necessary information to the Coin type system\&. " .ti -1c .RI "static SbBool \fBreadImage\fP (const \fBSbString\fP &fname, int &w, int &h, int &nc, unsigned char *&bytes)" .br .in -1c Static Public Member Functions inherited from \fBSoTexture\fP .in +1c .ti -1c .RI "static \fBSoType\fP \fBgetClassTypeId\fP (void)" .br .ti -1c .RI "static void \fBinitClass\fP (void)" .br .RI "Sets up initialization for data common to all instances of this class, like submitting necessary information to the Coin type system\&. " .ti -1c .RI "static void \fBcleanupClass\fP (void)" .br .in -1c Static Public Member Functions inherited from \fBSoNode\fP .in +1c .ti -1c .RI "static uint32_t \fBgetCompatibilityTypes\fP (const \fBSoType\fP &nodetype)" .br .ti -1c .RI "static \fBSoType\fP \fBgetClassTypeId\fP (void)" .br .ti -1c .RI "static \fBSoNode\fP * \fBgetByName\fP (const \fBSbName\fP &name)" .br .ti -1c .RI "static int \fBgetByName\fP (const \fBSbName\fP &name, \fBSoNodeList\fP &l)" .br .ti -1c .RI "static void \fBinitClass\fP (void)" .br .RI "Sets up initialization for data common to all instances of this class, like submitting necessary information to the Coin type system\&. " .ti -1c .RI "static void \fBinitClasses\fP (void)" .br .ti -1c .RI "static SbUniqueId \fBgetNextNodeId\fP (void)" .br .ti -1c .RI "static int \fBgetActionMethodIndex\fP (const \fBSoType\fP type)" .br .ti -1c .RI "static void \fBgetBoundingBoxS\fP (\fBSoAction\fP *action, \fBSoNode\fP *node)" .br .ti -1c .RI "static void \fBGLRenderS\fP (\fBSoAction\fP *action, \fBSoNode\fP *node)" .br .ti -1c .RI "static void \fBcallbackS\fP (\fBSoAction\fP *action, \fBSoNode\fP *node)" .br .ti -1c .RI "static void \fBgetMatrixS\fP (\fBSoAction\fP *action, \fBSoNode\fP *node)" .br .ti -1c .RI "static void \fBhandleEventS\fP (\fBSoAction\fP *action, \fBSoNode\fP *node)" .br .ti -1c .RI "static void \fBpickS\fP (\fBSoAction\fP *action, \fBSoNode\fP *node)" .br .ti -1c .RI "static void \fBrayPickS\fP (\fBSoAction\fP *action, \fBSoNode\fP *node)" .br .ti -1c .RI "static void \fBsearchS\fP (\fBSoAction\fP *action, \fBSoNode\fP *node)" .br .ti -1c .RI "static void \fBwriteS\fP (\fBSoAction\fP *action, \fBSoNode\fP *node)" .br .ti -1c .RI "static void \fBaudioRenderS\fP (\fBSoAction\fP *action, \fBSoNode\fP *node)" .br .ti -1c .RI "static void \fBgetPrimitiveCountS\fP (\fBSoAction\fP *action, \fBSoNode\fP *node)" .br .in -1c Static Public Member Functions inherited from \fBSoFieldContainer\fP .in +1c .ti -1c .RI "static void \fBinitClass\fP (void)" .br .RI "Sets up initialization for data common to all instances of this class, like submitting necessary information to the Coin type system\&. " .ti -1c .RI "static \fBSoType\fP \fBgetClassTypeId\fP (void)" .br .RI "This static method returns the \fBSoType\fP object associated with objects of this class\&. " .ti -1c .RI "static void \fBcleanupClass\fP (void)" .br .ti -1c .RI "static void \fBinitCopyDict\fP (void)" .br .ti -1c .RI "static void \fBaddCopy\fP (const \fBSoFieldContainer\fP *orig, const \fBSoFieldContainer\fP *copy)" .br .ti -1c .RI "static \fBSoFieldContainer\fP * \fBcheckCopy\fP (const \fBSoFieldContainer\fP *orig)" .br .ti -1c .RI "static \fBSoFieldContainer\fP * \fBfindCopy\fP (const \fBSoFieldContainer\fP *orig, const SbBool copyconnections)" .br .ti -1c .RI "static void \fBcopyDone\fP (void)" .br .in -1c Static Public Member Functions inherited from \fBSoBase\fP .in +1c .ti -1c .RI "static void \fBinitClass\fP (void)" .br .RI "Sets up initialization for data common to all instances of this class, like submitting necessary information to the Coin type system\&. " .ti -1c .RI "static \fBSoType\fP \fBgetClassTypeId\fP (void)" .br .RI "This static method returns the \fBSoType\fP object associated with objects of this class\&. " .ti -1c .RI "static void \fBaddName\fP (\fBSoBase\fP *const base, const char *const name)" .br .ti -1c .RI "static void \fBremoveName\fP (\fBSoBase\fP *const base, const char *const name)" .br .ti -1c .RI "static void \fBincrementCurrentWriteCounter\fP (void)" .br .ti -1c .RI "static void \fBdecrementCurrentWriteCounter\fP (void)" .br .ti -1c .RI "static \fBSoBase\fP * \fBgetNamedBase\fP (const \fBSbName\fP &name, \fBSoType\fP type)" .br .ti -1c .RI "static int \fBgetNamedBases\fP (const \fBSbName\fP &name, \fBSoBaseList\fP &baselist, \fBSoType\fP type)" .br .ti -1c .RI "static SbBool \fBread\fP (\fBSoInput\fP *input, \fBSoBase\fP *&base, \fBSoType\fP expectedtype)" .br .ti -1c .RI "static void \fBsetInstancePrefix\fP (const \fBSbString\fP &c)" .br .ti -1c .RI "static void \fBsetTraceRefs\fP (SbBool trace)" .br .ti -1c .RI "static SbBool \fBgetTraceRefs\fP (void)" .br .ti -1c .RI "static SbBool \fBconnectRoute\fP (\fBSoInput\fP *input, const \fBSbName\fP &fromnodename, const \fBSbName\fP &fromfieldname, const \fBSbName\fP &tonodename, const \fBSbName\fP &tofieldname)" .br .ti -1c .RI "static SbBool \fBreadRoute\fP (\fBSoInput\fP *input)" .br .in -1c .SS "Public Attributes" .in +1c .ti -1c .RI "\fBSoSFString\fP \fBfilename\fP" .br .ti -1c .RI "\fBSoSFImage\fP \fBimage\fP" .br .ti -1c .RI "\fBSoSFEnum\fP \fBwrapS\fP" .br .ti -1c .RI "\fBSoSFEnum\fP \fBwrapT\fP" .br .ti -1c .RI "\fBSoSFEnum\fP \fBmodel\fP" .br .ti -1c .RI "\fBSoSFColor\fP \fBblendColor\fP" .br .ti -1c .RI "\fBSoSFBool\fP \fBenableCompressedTexture\fP" .br .in -1c .SS "Protected Member Functions" .in +1c .ti -1c .RI "virtual const \fBSoFieldData\fP * \fBgetFieldData\fP (void) const" .br .ti -1c .RI "virtual \fB~SoTexture2\fP ()" .br .ti -1c .RI "virtual SbBool \fBreadInstance\fP (\fBSoInput\fP *in, unsigned short flags)" .br .ti -1c .RI "virtual void \fBnotify\fP (\fBSoNotList\fP *list)" .br .ti -1c .RI "int \fBgetReadStatus\fP (void)" .br .ti -1c .RI "void \fBsetReadStatus\fP (int s)" .br .in -1c Protected Member Functions inherited from \fBSoNode\fP .in +1c .ti -1c .RI "\fBSoNode\fP (void)" .br .ti -1c .RI "virtual \fB~SoNode\fP ()" .br .in -1c Protected Member Functions inherited from \fBSoFieldContainer\fP .in +1c .ti -1c .RI "\fBSoFieldContainer\fP (void)" .br .ti -1c .RI "virtual \fB~SoFieldContainer\fP ()" .br .in -1c Protected Member Functions inherited from \fBSoBase\fP .in +1c .ti -1c .RI "\fBSoBase\fP (void)" .br .ti -1c .RI "virtual \fB~SoBase\fP ()" .br .ti -1c .RI "virtual void \fBdestroy\fP (void)" .br .ti -1c .RI "SbBool \fBhasMultipleWriteRefs\fP (void) const" .br .ti -1c .RI "SbBool \fBwriteHeader\fP (\fBSoOutput\fP *out, SbBool isgroup, SbBool isengine) const" .br .ti -1c .RI "void \fBwriteFooter\fP (\fBSoOutput\fP *out) const" .br .ti -1c .RI "virtual const char * \fBgetFileFormatName\fP (void) const" .br .ti -1c .RI "virtual \fBSoNotRec\fP \fBcreateNotRec\fP (void)" .br .in -1c .SS "Static Protected Member Functions" .in +1c .ti -1c .RI "static const \fBSoFieldData\fP ** \fBgetFieldDataPtr\fP (void)" .br .in -1c Static Protected Member Functions inherited from \fBSoTexture\fP .in +1c .ti -1c .RI "static const \fBSoFieldData\fP ** \fBgetFieldDataPtr\fP (void)" .br .in -1c Static Protected Member Functions inherited from \fBSoNode\fP .in +1c .ti -1c .RI "static const \fBSoFieldData\fP ** \fBgetFieldDataPtr\fP (void)" .br .ti -1c .RI "static void \fBsetNextActionMethodIndex\fP (int index)" .br .ti -1c .RI "static int \fBgetNextActionMethodIndex\fP (void)" .br .ti -1c .RI "static void \fBincNextActionMethodIndex\fP (void)" .br .ti -1c .RI "static void \fBsetCompatibilityTypes\fP (const \fBSoType\fP &nodetype, const uint32_t bitmask)" .br .in -1c Static Protected Member Functions inherited from \fBSoBase\fP .in +1c .ti -1c .RI "static uint32_t \fBgetCurrentWriteCounter\fP (void)" .br .ti -1c .RI "static void \fBstaticDataLock\fP (void)" .br .ti -1c .RI "static void \fBstaticDataUnlock\fP (void)" .br .in -1c .SS "Additional Inherited Members" Protected Types inherited from \fBSoBase\fP .in +1c .ti -1c .RI "enum \fBBaseFlags\fP { \fBIS_ENGINE\fP = 0x01, \fBIS_GROUP\fP = 0x02 }" .br .in -1c Protected Attributes inherited from \fBSoNode\fP .in +1c .ti -1c .RI "SbUniqueId \fBuniqueId\fP" .br .in -1c Protected Attributes inherited from \fBSoFieldContainer\fP .in +1c .ti -1c .RI "SbBool \fBisBuiltIn\fP" .br .in -1c Static Protected Attributes inherited from \fBSoNode\fP .in +1c .ti -1c .RI "static SbUniqueId \fBnextUniqueId\fP = 1" .br .ti -1c .RI "static int \fBnextActionMethodIndex\fP = 0" .br .in -1c .SH "Detailed Description" .PP The \fBSoTexture2\fP class is used to map a 2D texture onto subsequent geometry in the scene graph\&. Shape nodes within the scope of \fBSoTexture2\fP nodes in the scene graph (i\&.e\&. below the same \fBSoSeparator\fP and to the right hand side of the \fBSoTexture2\fP) will have the texture applied according to each shape type's individual characteristics\&. See the documentation of the various shape types (\fBSoFaceSet\fP, \fBSoCube\fP, \fBSoSphere\fP, etc\&.) for information about the specifics of how the textures will be applied\&. .PP For a simple usage example, see the class documentation for \fBSoSFImage\fP\&. .PP One common flaw with many programs that have support for exporting VRML or Inventor files, is that the same texture file is exported several times, but as different nodes\&. This can cause excessive texture memory usage and slow rendering\&. Below is an example program that fixes this by replacing all instances of the same texture with a pointer to the first node: .PP .PP .nf #include #include #include #include #include #include #include int main(int argc, char ** argv) { if (argc < 2) return \-1; SoDB::init(); SoInput in; if (!in\&.openFile(argv[1])) return \-1; SoSeparator * root = SoDB::readAll(&in); if (!root) return \-1; root\->ref(); SoSearchAction sa; sa\&.setType(SoTexture2::getClassTypeId()); sa\&.setInterest(SoSearchAction::ALL); sa\&.setSearchingAll(TRUE); sa\&.apply(root); SoPathList & pl = sa\&.getPaths(); SbDict namedict; for (int i = 0; i < pl\&.getLength(); i++) { SoFullPath * p = (SoFullPath*) pl[i]; if (p\->getTail()\->isOfType(SoTexture2::getClassTypeId())) { SoTexture2 * tex = (SoTexture2*) p\->getTail(); if (tex\->filename\&.getValue()\&.getLength()) { SbName name = tex\->filename\&.getValue()\&.getString(); unsigned long key = (unsigned long) ((void*) name\&.getString()); void * tmp; if (!namedict\&.find(key, tmp)) { // new texture\&. just insert into list (void) namedict\&.enter(key, tex); } else if (tmp != (void*) tex) { // replace with node found in dict SoGroup * parent = (SoGroup*) p\->getNodeFromTail(1); int idx = p\->getIndexFromTail(0); parent\->replaceChild(idx, (SoNode*) tmp); } } } } sa\&.reset(); // output fixed scene to stdout SoOutput out; SoWriteAction wa(&out); wa\&.apply(root); root\->unref(); } .fi .PP .PP When working with Inventor files, one often wants to embed external texture image files into the Inventor files themselves\&. Here's a minimal, standalone example which shows how that can be accomplished by calling \fBSoField::touch()\fP on the \fBSoTexture2::image\fP fields before scene graph export: .PP .PP .nf #include #include #include #include #include int main(void) { if (argc == 1) { fprintf(stderr,"Usage: %s > outfile\&.iv\\n", argv[0]); return \-1; } SoDB::init(); // open the file (don't use stdin) to enable Coin to search for textures // relative to the input file\&. SoInput in; if (!in\&.openFile(argv[1])) { return \-1; } SoSeparator * root = SoDB::readAll(&in); if (!root) { exit(1); } root\->ref(); SoSearchAction searchaction; searchaction\&.setType(SoTexture2::getClassTypeId()); searchaction\&.setSearchingAll(TRUE); searchaction\&.setInterest(SoSearchAction::ALL); searchaction\&.apply(root); const SoPathList & pl = searchaction\&.getPaths(); for (int i=0; i < pl\&.getLength(); i++) { SoFullPath * fp = (SoFullPath *)pl[i]; SoTexture2 * tex = (SoTexture2 *)fp\->getTail(); assert(tex\->getTypeId() == SoTexture2::getClassTypeId()); tex\->image\&.touch(); } SoWriteAction wa; wa\&.apply(root); root\->unref(); return 0; } .fi .PP .PP Run the example by piping the iv-file you want to do texture embedding on from stdin, e\&.g\&. like this: .PP .PP .nf $ \&./test < input\&.iv .fi .PP .PP \fBFILE FORMAT/DEFAULTS:\fP .PP .nf Texture2 { filename "" image 0 0 0 wrapS REPEAT wrapT REPEAT model MODULATE blendColor 0 0 0 enableCompressedTexture FALSE } .fi .PP .SH "Member Enumeration Documentation" .PP .SS "enum \fBSoTexture2::Model\fP" Texture mapping model, for deciding how to "merge" the texture map with the object it is mapped onto\&. .PP \fBEnumerator\fP .in +1c .TP \f(BIMODULATE \fP Texture color is multiplied by the polygon color\&. The result will be Phong shaded (if light model is PHONG)\&. .TP \f(BIDECAL \fP Texture image overwrites polygon shading\&. Textured pixels will not be Phong shaded\&. Has undefined behaviour for grayscale and grayscale-alpha textures\&. .TP \f(BIBLEND \fP This model is normally used with monochrome textures (i\&.e\&. textures with one or two components)\&. The first component, the intensity, is then used to blend between the shaded color of the polygon and the \fBSoTexture2::blendColor\fP\&. .TP \f(BIREPLACE \fP Texture image overwrites polygon shading\&. Textured pixels will not be Phong shaded\&. Supports grayscale and grayscale alpha textures\&. This feature requires OpenGL 1\&.1\&. MODULATE will be used if OpenGL version < 1\&.1 is detected\&. .PP Please note that using this texture model will make your Inventor files incompatible with older versions of Coin and Inventor\&. You need Coin >= 2\&.2 or TGS Inventor 4\&.0 to load Inventor files that uses the REPLACE texture model\&. .PP \fBSince\fP .RS 4 Coin 2\&.2 .PP TGS Inventor 4\&.0 .RE .PP .SS "enum \fBSoTexture2::Wrap\fP" Enumeration of wrapping strategies which can be used when the texture map doesn't cover the full extent of the geometry\&. .PP \fBEnumerator\fP .in +1c .TP \f(BIREPEAT \fP Repeat texture when coordinate is not between 0 and 1\&. .TP \f(BICLAMP \fP Clamp coordinate between 0 and 1\&. .SH "Constructor & Destructor Documentation" .PP .SS "SoTexture2::SoTexture2 (void )" Constructor\&. .SS "SoTexture2::~SoTexture2 ()\fR [protected]\fP, \fR [virtual]\fP" Destructor\&. Frees up internal resources used to store texture image data\&. .SH "Member Function Documentation" .PP .SS "\fBSoType\fP SoTexture2::getClassTypeId (void )\fR [static]\fP" This static method returns the \fBSoType\fP object associated with objects of this class\&. .SS "\fBSoType\fP SoTexture2::getTypeId (void ) const\fR [virtual]\fP" Returns the type identification of an object derived from a class inheriting \fBSoBase\fP\&. This is used for runtime type checking and "downward" casting\&. .PP Reimplemented from \fBSoTexture\fP\&. .SS "const \fBSoFieldData\fP ** SoTexture2::getFieldDataPtr (void )\fR [static]\fP, \fR [protected]\fP" \fIThis API member is considered internal to the library, as it is not likely to be of interest to the application programmer\&.\fP .br .br Returns the \fBSoFieldData\fP class which holds information about fields in this node\&. .SS "const \fBSoFieldData\fP * SoTexture2::getFieldData (void ) const\fR [protected]\fP, \fR [virtual]\fP" Returns a pointer to the class-wide field data storage object for this instance\&. If no fields are present, returns \fRNULL\fP\&. .PP Reimplemented from \fBSoTexture\fP\&. .SS "void SoTexture2::doAction (\fBSoAction\fP * action)\fR [virtual]\fP" This function performs the typical operation of a node for any action\&. .PP Reimplemented from \fBSoTexture\fP\&. .SS "void SoTexture2::GLRender (\fBSoGLRenderAction\fP * action)\fR [virtual]\fP" Action method for the \fBSoGLRenderAction\fP\&. .PP This is called during rendering traversals\&. Nodes influencing the rendering state in any way or want to throw geometry primitives at OpenGL override this method\&. .PP Reimplemented from \fBSoTexture\fP\&. .SS "void SoTexture2::callback (\fBSoCallbackAction\fP * action)\fR [virtual]\fP" Action method for \fBSoCallbackAction\fP\&. .PP Simply updates the state according to how the node behaves for the render action, so the application programmer can use the \fBSoCallbackAction\fP for extracting information about the scene graph\&. .PP Reimplemented from \fBSoTexture\fP\&. .SS "void SoTexture2::rayPick (\fBSoRayPickAction\fP * action)\fR [virtual]\fP" Action method for \fBSoRayPickAction\fP\&. .PP Checks the ray specification of the \fIaction\fP and tests for intersection with the data of the node\&. .PP Nodes influencing relevant state variables for how picking is done also override this method\&. .PP Reimplemented from \fBSoNode\fP\&. .SS "SbBool SoTexture2::readImage (const \fBSbString\fP & fname, int & w, int & h, int & nc, unsigned char *& bytes)\fR [static]\fP" Not implemented in Coin; should probably not have been public in the original SGI Open Inventor API\&. We'll consider to implement it if requested\&. .SS "SbBool SoTexture2::readInstance (\fBSoInput\fP * in, unsigned short flags)\fR [protected]\fP, \fR [virtual]\fP" This method is mainly intended for internal use during file import operations\&. .PP It reads a definition of an instance from the input stream \fIin\fP\&. The input stream state points to the start of a serialized / persistent representation of an instance of this class type\&. .PP \fRTRUE\fP or \fRFALSE\fP is returned, depending on if the instantiation and configuration of the new object of this class type went OK or not\&. The import process should be robust and handle corrupted input streams by returning \fRFALSE\fP\&. .PP \fIflags\fP is used internally during binary import when reading user extension nodes, group nodes or engines\&. .PP Reimplemented from \fBSoNode\fP\&. .SS "void SoTexture2::notify (\fBSoNotList\fP * l)\fR [protected]\fP, \fR [virtual]\fP" Notifies all auditors for this instance when changes are made\&. .PP Reimplemented from \fBSoNode\fP\&. .SS "int SoTexture2::getReadStatus (void )\fR [protected]\fP" Returns read status\&. 1 for success, 0 for failure\&. .SS "void SoTexture2::setReadStatus (int s)\fR [protected]\fP" Sets read status\&. .PP \fBSee also\fP .RS 4 \fBgetReadStatus()\fP .RE .PP .SH "Member Data Documentation" .PP .SS "\fBSoSFString\fP SoTexture2::filename" Texture filename, referring to a file on disk in a supported image bitmap format\&. .PP By default contains an empty string, which means the texture will be fetched from \fBSoTexture2::image\fP and not from disk\&. (Specify either this field or use \fBSoTexture2::image\fP, not both\&.) .PP FIXME: Section about simage is outdated\&. .PP For reading texture image files from disk, Coin uses the "simage" library from Kongsberg Oil & Gas Technologies\&. This library must be installed for it to be possible to load any image files at all\&. .PP The set of image formats you can actually read with the simage library depends on how the simage library was built, as simage is again dependent on a few other low level file import/export libraries (for instance for JPEG, GIF, TIFF and PNG support)\&. To make sure all wanted formats are supported, you should build the simage library yourself\&. .PP The set of image formats guaranteed to be supported by simage is Targa (\&.tga), PIC (\&.pic), SGI RGB (\&.rgb, \&.bw) and XWD (\&.xwd)\&. .PP For more information about the simage library, including download and build instructions, see the \fRCoin repository\fP\&. .SS "\fBSoSFImage\fP SoTexture2::image" Inline image data\&. Defaults to contain an empty image\&. .PP See documentation of the \fBSoSFImage\fP class for a very detailed description of how the format specification for the image data is laid out, and what different image formats for color textures, semi-transparent textures, grayscale textures, etc\&., are supported\&. .SS "\fBSoSFEnum\fP SoTexture2::wrapS" Wrapping strategy for the S coordinate when the texture map is narrower than the object to map onto\&. .PP Default value is \fBSoTexture2::REPEAT\fP\&. .SS "\fBSoSFEnum\fP SoTexture2::wrapT" Wrapping strategy for the T coordinate when the texture map is shorter than the object to map onto\&. .PP Default value is \fBSoTexture2::REPEAT\fP\&. .SS "\fBSoSFEnum\fP SoTexture2::model" Texture mapping model for how the texture map is "merged" with the polygon primitives it is applied to\&. Default value is \fBSoTexture2::MODULATE\fP\&. .SS "\fBSoSFColor\fP SoTexture2::blendColor" Blend color\&. Used when \fBSoTexture2::model\fP is \fBSoTexture2::BLEND\fP\&. .PP Default color value is [0, 0, 0], black, which means no contribution to the blending is made\&. .SS "\fBSoSFBool\fP SoTexture2::enableCompressedTexture" Hint to Coin that compressed textures should be used if this is supported by the graphics hardware and OpenGL drivers\&. Using compressed textures usually reduces texture memory usage for a texture by 4-6 times\&. .PP \fBSince\fP .RS 4 Coin 2\&.4\&.2 .PP TGS Inventor 4\&.0 .RE .PP .SH "Author" .PP Generated automatically by Doxygen for Coin from the source code\&.