crystalspace.jbind.interfaces.ivideo.txtmgr
Interface iTextureManager
- All Superinterfaces:
- iBase, iPointer
- All Known Implementing Classes:
- csTextureManager
- public interface iTextureManager
- extends iBase
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.
- Author:
- Java wrapper - Quentin Anciaux, c++ version -
http://crystal.sourceforge.net/docs/online/pubapi/structiTextureManager.php
Method Summary |
iSuperLightmap |
createSuperLightmap(int width,
int height)
Create a new super lightmap with the specified dimensions. |
void |
freeImages()
Call this function if you want to release all iImage's as given to this
texture manager. |
void |
freeMaterials()
Call this function if you want to release all iMaterial's as given to this
texture manager. |
float[] |
getLightmapRendererCoords(int slmWidth,
int slmHeight,
int lm_x1,
int lm_y1,
int lm_x2,
int lm_y2)
Retrieve the coordinates of a lightmap in the its superlightmap, in a
system the renderer uses internally. |
int[] |
getMaxTextureSize()
Request maximum texture dimensions. |
int |
getTextureFormat()
Query the basic format of textures that can be registered with this
texture manager. |
void |
prepareMaterials()
Prepare all materials. |
void |
prepareTextures()
After all textures have been added, this function does all needed
calculations (palette, lookup tables, mipmaps, ...);. |
iMaterialHandle |
registerMaterial(iMaterial material)
Register a material. |
iMaterialHandle |
registerMaterial(iTextureHandle txthandle)
Register a material based on a texture handle. |
iTextureHandle |
registerTexture(iImage image,
int flags)
Register a texture. |
void |
setVerbose(boolean vb)
Set verbose mode on/off. |
createSuperLightmap
public iSuperLightmap createSuperLightmap(int width,
int height)
- Create a new super lightmap with the specified dimensions.
- Parameters:
width
- height
-
- Returns:
freeImages
public void freeImages()
- Call this function if you want to release all iImage's as given to this
texture manager. After FreeImages(); has been called it is no longer
allowed to call Prepare(); again. So the advantage of calling
FreeImages(); is that you gain memory (may be a lot); but the disadvantage
is that when you want to add textures later you have to reload them all
and start all over.
freeMaterials
public void freeMaterials()
- Call this function if you want to release all iMaterial's as given to this
texture manager.
getLightmapRendererCoords
public float[] getLightmapRendererCoords(int slmWidth,
int slmHeight,
int lm_x1,
int lm_y1,
int lm_x2,
int lm_y2)
- 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.
- Parameters:
slmWidth
- slmHeight
- lm_x1
- lm_y1
- lm_x2
- lm_y2
-
- Returns:
getMaxTextureSize
public int[] getMaxTextureSize()
- Request maximum texture dimensions.
- Returns:
getTextureFormat
public int getTextureFormat()
- 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.
- Returns:
prepareMaterials
public void prepareMaterials()
- Prepare all materials.
prepareTextures
public void prepareTextures()
- After all textures have been added, this function does all needed
calculations (palette, lookup tables, mipmaps, ...);. PrepareTextures ();
must be able to handle being called twice or more without ill effects.
Note that it is in this stage that the original image that is attached to
a texture is scaled so that it fits hardware requirements. So it is
important to realize that calling this function may actually change the
images from which you created the textures!
registerMaterial
public iMaterialHandle registerMaterial(iTextureHandle txthandle)
- Register a material based on a texture handle. This is a short-cut to
quickly make materials based on a single texture. The material is
unregistered at destruction, i.e. as soon as the last reference to the
material handle is released.
- Parameters:
txthandle
-
- Returns:
registerMaterial
public iMaterialHandle registerMaterial(iMaterial material)
- Register a material. The input material is IncRef'd and DecRef'ed later
when FreeMaterials (); is called or the material handle is destroyed by
calling DecRef on it enough times. If you want to keep the input material
make sure you have called IncRef yourselves. The material is unregistered
at destruction, i.e. as soon as the last reference to the material handle
is released.
- Parameters:
material
-
- Returns:
registerTexture
public iTextureHandle registerTexture(iImage image,
int flags)
- Register a texture. The given input image is IncRef'd and DecRef'ed later
when FreeImages (); is called. 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 ();. Finally, if you want to merge the texture
into the current environment, you should call txt->Prepare();.
Alternatively you can call the PrepareTextures (); method to compute a
optimal palette and convert all the textures into the internal format.
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. If
CS_USE_NEW_RENDERER is enabled 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
when Prepare(); is called.
- Parameters:
image
- flags
-
- Returns:
setVerbose
public void setVerbose(boolean vb)
- Set verbose mode on/off. In verbose mode, texture manager will Printf();
through the system driver during all initialization and preparation
operations.
- Parameters:
vb
-