---
name: "SoGLMultiTextureImageElement"
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/SoGLMultiTextureImageElement"
---

# SoGLMultiTextureImageElement(3)

The SoGLMultiTextureImageElement class is used to control the current GL texture for texture units.

## NAME

SoGLMultiTextureImageElement - The **SoGLMultiTextureImageElement** class is used to control the current GL texture for texture units.

## SYNOPSIS

\#include \<Inventor/elements/SoGLMultiTextureImageElement.h\>

Inherits **SoMultiTextureImageElement**.

### Classes

class **GLUnitData**\

### Public Member Functions

virtual void **init** (**SoState** \*state)\
 virtual void **push** (**SoState** \*state)\
 virtual void **pop** (**SoState** \*state, const **SoElement** \*prevTopElement)\

Public Member Functions inherited from **SoMultiTextureImageElement** virtual SbBool **matches** (const **SoElement** \*elem) const\
 **SoElement** \* **copyMatchInfo** (void) const\
 virtual void **setElt** (const int unit, const SbUniqueId nodeid, const **SbVec2s** &size, const int numComponents, const unsigned char \*bytes, const Wrap wrapS, const Wrap wrapT, const Model model, const **SbColor** &blendColor)\
 FIXME: write doc.  virtual void **setElt** (const int unit, const SbUniqueId nodeid, const **SbVec3s** &size, const int numComponents, const unsigned char \*bytes, const Wrap wrapS, const Wrap wrapT, const Wrap wrapR, const Model model, const **SbColor** &blendColor)\

Public Member Functions inherited from **SoElement** const **SoType** **getTypeId** (void) const\
 int **getStackIndex** (void) const\
 void **setDepth** (const int **depth**)\
 int **getDepth** (void) const\
 virtual void **print** (FILE \*file=stdout) const\
 virtual **~SoElement** ()\

### Static Public Member Functions

static **SoType** **getClassTypeId** (void)\
 static int **getClassStackIndex** (void)\
 static void \* **createInstance** (void)\
 static void **initClass** (void)\
 static void **set** (**SoState** \*const state, **SoNode** \*const node, const int unit, **SoGLImage** \*image, const Model model, const **SbColor** &blendColor)\
 static void **restore** (**SoState** \*state, const int unit)\
 static **SoGLImage** \* **get** (**SoState** \*state, const int unit, Model &model, **SbColor** &blendcolor)\
 static SbBool **hasTransparency** (**SoState** \*state)\
 static void **set** (**SoState** \*const state, **SoNode** \*const node, **SoGLImage** \*image, const Model model, const **SbColor** &blendColor)\
 static **SoGLImage** \* **get** (**SoState** \*state, Model &model, **SbColor** &blendcolor)\
 static int32\_t **getMaxGLTextureSize** (void)\

Static Public Member Functions inherited from **SoMultiTextureImageElement** static **SoType** **getClassTypeId** (void)\
 static int **getClassStackIndex** (void)\
 static void \* **createInstance** (void)\
 static void **initClass** (void)\
 static void **setDefault** (**SoState** \*const state, **SoNode** \*const node, const int unit=0)\
 static void **set** (**SoState** \*const state, **SoNode** \*const node, const int unit, const **SbVec2s** &size, const int numComponents, const unsigned char \*bytes, const Wrap wrapS, const Wrap wrapT, const Model model, const **SbColor** &blendColor)\
 FIXME: write doc.  static void **set** (**SoState** \*const state, **SoNode** \*const node, const int unit, const **SbVec3s** &size, const int numComponents, const unsigned char \*bytes, const Wrap wrapS, const Wrap wrapT, const Wrap wrapR, const Model model, const **SbColor** &blendColor)\
 static const unsigned char \* **get** (**SoState** \*const state, const int unit, **SbVec2s** &size, int &numComponents, Wrap &wrapS, Wrap &wrapT, Model &model, **SbColor** &blendColor)\
 FIXME: write doc.  static const unsigned char \* **get** (**SoState** \*const state, const int unit, **SbVec3s** &size, int &numComponents, Wrap &wrapS, Wrap &wrapT, Wrap &wrapR, Model &model, **SbColor** &blendColor)\
 static const unsigned char \* **getImage** (**SoState** \*const state, const int unit, **SbVec2s** &size, int &numComponents)\
 static const unsigned char \* **getImage** (**SoState** \*const state, const int unit, **SbVec3s** &size, int &numComponents)\
 static const **SbColor** & **getBlendColor** (**SoState** \*const state, const int unit=0)\
 static Model **getModel** (**SoState** \*const state, const int unit=0)\
 static Wrap **getWrapS** (**SoState** \*const state, const int unit=0)\
 static Wrap **getWrapT** (**SoState** \*const state, const int unit=0)\
 static Wrap **getWrapR** (**SoState** \*const state, const int unit=0)\
 static SbBool **containsTransparency** (**SoState** \*const state)\
 FIXME: write doc.  static const unsigned char \* **getDefault** (**SbVec2s** &size, int &numComponents)\
 FIXME: write doc.  static const unsigned char \* **getDefault** (**SbVec3s** &size, int &numComponents)\
 static void **set** (**SoState** \*const state, **SoNode** \*const node, const **SbVec2s** &size, const int numComponents, const unsigned char \*bytes, const int wrapS, const int wrapT, const int model, const **SbColor** &blendColor)\
 static void **set** (**SoState** \*const state, **SoNode** \*const node, const **SbVec2s** &size, const int numComponents, const unsigned char \*bytes, const Wrap wrapS, const Wrap wrapT, const Model model, const **SbColor** &blendColor)\
 static void **set** (**SoState** \*const state, **SoNode** \*const node, const **SbVec3s** &size, const int numComponents, const unsigned char \*bytes, const int wrapS, const int wrapT, const int wrapR, const int model, const **SbColor** &blendColor)\
 static void **set** (**SoState** \*const state, **SoNode** \*const node, const **SbVec3s** &size, const int numComponents, const unsigned char \*bytes, const Wrap wrapS, const Wrap wrapT, const Wrap wrapR, const Model model, const **SbColor** &blendColor)\
 static const unsigned char \* **get** (**SoState** \*const state, **SbVec2s** &size, int &numComponents, Wrap &wrapS, Wrap &wrapT, Model &model, **SbColor** &blendColor)\
 static const unsigned char \* **get** (**SoState** \*const state, **SbVec3s** &size, int &numComponents, Wrap &wrapS, Wrap &wrapT, Wrap &wrapR, Model &model, **SbColor** &blendColor)\
 static const unsigned char \* **get** (**SoState** \*const state, **SbVec2s** &size, int &numComponents, int &wrapS, int &wrapT, int &model, **SbColor** &blendColor)\
 static const unsigned char \* **get** (**SoState** \*const state, **SbVec3s** &size, int &numComponents, int &wrapS, int &wrapT, int &wrapR, int &model, **SbColor** &blendColor)\
 static const unsigned char \* **getImage** (**SoState** \*const state, **SbVec2s** &size, int &numComponents)\
 static const unsigned char \* **getImage** (**SoState** \*const state, **SbVec3s** &size, int &numComponents)\

Static Public Member Functions inherited from **SoElement** static void **initClass** (void)\
 static **SoType** **getClassTypeId** (void)\
 static int **getClassStackIndex** (void)\
 static void **initElements** (void)\
 static int **getNumStackIndices** (void)\
 static **SoType** **getIdFromStackIndex** (const int **stackIndex**)\

### Protected Member Functions

**SoGLMultiTextureImageElement** (void)\
 virtual **~SoGLMultiTextureImageElement** ()\
 virtual SbBool **hasTransparency** (const int unit=0) const\

Protected Member Functions inherited from **SoMultiTextureImageElement** virtual **~SoMultiTextureImageElement** ()\
 const **UnitData** & **getUnitData** (const int unit) const\
 int **getNumUnits** () const\

Protected Member Functions inherited from **SoElement** **SoElement** (void)\
 void **capture** (**SoState** \*const state) const\
 virtual void **captureThis** (**SoState** \*state) const\
 void **setTypeId** (const **SoType** **typeId**)\
 void **setStackIndex** (const int index)\
 **SoElement** \* **getNextInStack** (void) const\
 **SoElement** \* **getNextFree** (void) const\

### Additional Inherited Members

Public Types inherited from **SoMultiTextureImageElement** enum **Model** { **BLEND** = 0x0be2, **MODULATE** = 0x2100, **DECAL** = 0x2101, **REPLACE** = 0x1E01 }\
 enum **Wrap** { **CLAMP** = 0x2900, **REPEAT** = 0x2901, **CLAMP\_TO\_BORDER** = 0x812D }\

Static Protected Member Functions inherited from **SoElement** static **SoElement** \* **getElement** (**SoState** \*const state, const int **stackIndex**)\
 static const **SoElement** \* **getConstElement** (**SoState** \*const state, const int **stackIndex**)\
 static int **createStackIndex** (const **SoType** id)\

Protected Attributes inherited from **SoElement** **SoType** **typeId**\
 int **stackIndex**\
 int **depth**\

Static Protected Attributes inherited from **SoElement** static int **classStackIndex**\
 static **SoTypeList** \* **stackToType**\

## Detailed Description

The **SoGLMultiTextureImageElement** class is used to control the current GL texture for texture units.

FIXME: write doc.

## Constructor & Destructor Documentation

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

Constructor.

### SoGLMultiTextureImageElement::~SoGLMultiTextureImageElement (void ) \[protected\], \[virtual\]

Destructor.

## Member Function Documentation

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

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

### int SoGLMultiTextureImageElement::getClassStackIndex (void ) \[static\]

This static method returns the state stack index for the class.

### void \* SoGLMultiTextureImageElement::createInstance (void ) \[static\]

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

 Creates a new instance of the class type corresponding to the **SoType** object.

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

Initialize relevant common data for all instances, like the type system.

### void SoGLMultiTextureImageElement::init (SoState \* state) \[virtual\]

Initializes the element to its default value.

Reimplemented from **SoMultiTextureImageElement**.

### void SoGLMultiTextureImageElement::push (SoState \* state) \[virtual\]

This method is called every time a new element is required in one of the stacks. This happens when a writable element is requested, using **SoState::getElement()** or indirectly **SoElement::getElement()**, and the depth of the current element is less than the state depth.

Override this method if your element needs to copy data from the previous top of stack. The **push()** method is called on the new element, and the previous element can be found using **SoElement::getNextInStack()**.

Reimplemented from **SoMultiTextureImageElement**.

### void SoGLMultiTextureImageElement::pop (SoState \* state, const SoElement \* prevTopElement) \[virtual\]

This method is called when the state is popped, and the depth of the element is bigger than the current state depth. **pop()** is called on the new top of stack, and a pointer to the previous top of stack is passed in *prevTopElement*.

Override this method if you need to copy some state information from the previous top of stack.

Reimplemented from **SoElement**.

### void SoGLMultiTextureImageElement::set (SoState \*const state, SoNode \*const node, const int unit, SoGLImage \* image, const Model model, const SbColor & blendColor) \[static\]

Sets the current texture. Id *didapply* is TRUE, it is assumed that the texture image already is the current GL texture. Do not use this feature unless you know what you're doing.

### SbBool SoGLMultiTextureImageElement::hasTransparency (SoState \* state) \[static\]

Returns TRUE if any of the images have at least one transparent pixel.

**Since**

Coin 3.1

### SbBool SoGLMultiTextureImageElement::hasTransparency (const int unit = 0) const \[protected\], \[virtual\]

Called by **containsTransparency()**. Returns *TRUE* if image data has transparency. Default method does a very poor job of detecting this, since it returns *TRUE* when the number of components are 2 or

- 4\.

  Override whenever it is important to know this (SoGLTextureImageElement overrides it to avoid transparency handling where possible).

Reimplemented from **SoMultiTextureImageElement**.

### int32\_t SoGLMultiTextureImageElement::getMaxGLTextureSize (void ) \[static\]

The size returned by this function will just be a very coarse estimate as it only uses the more or less obsoleted technique of calling glGetIntegerv(GL\_MAX\_TEXTURE\_SIZE).

For a better estimate, use SoGLTextureImageElement::isTextureSizeLegal().

Note that this function needs an OpenGL context to be made current for it to work. Without that, you will most likely get a faulty return value or even a crash.

## Author

Generated automatically by Doxygen for Coin from the source code.
