## Public API Reference

- Main Page
- Modules
- Namespaces
- Classes
- Files
- Related Pages

- Alphabetical List
- Class List
- Class Hierarchy
- Class Members

# iTextureManager Struct Reference
[3D]

This is the standard texture manager interface. More...

`#include <ivideo/txtmgr.h>`

Inheritance diagram for iTextureManager:

[legend]
List of all members.

## Public Member Functions

virtual csPtr< iSuperLightmap > | CreateSuperLightmap (int width, int height)=0
| Create a new super lightmap with the specified dimensions.
virtual void | GetLightmapRendererCoords (int slmWidth, int slmHeight, int lm_x1, int lm_y1, int lm_x2, int lm_y2, float &lm_u1, float &lm_v1, float &lm_u2, float &lm_v2)=0
| Retrieve the coordinates of a lightmap in the its superlightmap, in a system the renderer uses internally.
virtual void | GetMaxTextureSize (int &w, int &h, int &aspect)=0
| Request maximum texture dimensions.
virtual int | GetTextureFormat ()=0
| Query the basic format of textures that can be registered with this texture manager.
virtual csPtr< iTextureHandle > | RegisterTexture (iImage *image, int flags)=0
| Register a texture.

## Detailed Description

This is the standard texture manager interface.

A 3D rasterizer will have to implement a subclass of this one and return a pointer to it in Graphics3D. This class is responsible for receiving all textures from the 3D engine, converting them to an internal format if needed, calculating a palette if needed, and calculating all lookup tables related to the textures. Mipmap creation is also done in this class.

Main creators of instances implementing this interface:

- The 3D renderers create an instance of this.

Main ways to get pointers to this interface:

- iGraphics3D::GetTextureManager()

Definition at line 164 of file txtmgr.h.

## Member Function Documentation

virtual csPtr<iSuperLightmap> iTextureManager::CreateSuperLightmap | ( | int | width,
|  | int | height
| ) | `[pure virtual]`

| Create a new super lightmap with the specified dimensions.

virtual void iTextureManager::GetLightmapRendererCoords | ( | int | slmWidth,
|  | int | slmHeight,
|  | int | lm_x1,
|  | int | lm_y1,
|  | int | lm_x2,
|  | int | lm_y2,
|  | float & | lm_u1,
|  | float & | lm_v1,
|  | float & | lm_u2,
|  | float & | lm_v2
| ) | `[pure virtual]`

| Retrieve the coordinates of a lightmap in the its superlightmap, in a system the renderer uses internally. Calculate lightmap U/Vs within this bounds when they are intended to be passed to the renderer.

virtual void iTextureManager::GetMaxTextureSize | ( | int & | w,
|  | int & | h,
|  | int & | aspect
| ) | `[pure virtual]`

| Request maximum texture dimensions.

virtual int iTextureManager::GetTextureFormat | ( |  | ) | `[pure virtual]`

| Query the basic format of textures that can be registered with this texture manager. It is very likely that the texture manager will reject the texture if it is in an improper format. The alpha channel is optional; the texture can have it and can not have it. Only the bits that fit the CS_IMGFMT_MASK mask matters.

virtual csPtr<iTextureHandle> iTextureManager::RegisterTexture | ( | iImage * | image,
|  | int | flags
| ) | `[pure virtual]`

Register a texture.

The given input image is IncRef'd and DecRef'ed later when no longer needed. If you want to keep the input image make sure you have called IncRef yourselves.

The texture is not converted immediately. Instead, you can make intermediate calls to iTextureHandle::SetKeyColor ().

This function returns a handle which should be given to the 3D rasterizer or 2D driver when drawing or otherwise using the texture.

The `flags' contains one or several of CS_TEXTURE_XXX flags OR'ed together. They define the mode texture is going to be used in.

The texture manager will reject the texture if it is an inappropiate format (see GetTextureFormat () method).

The texture is unregistered at destruction, i.e. as soon as the last reference to the texture handle is released.

Param target specifies the texture target. Defines for that can be found in ivideo/texture.h

Note! This function will NOT scale the texture to fit hardware restrictions. This is done later before texture is first used.

The documentation for this struct was generated from the following file:

- ivideo/txtmgr.h