OGRE  2.0
Object-Oriented Graphics Rendering Engine
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
Ogre::TextureDefinitionBase Class Reference

Centralized class for dealing with declarations of textures in Node & Workspace definitions. More...

#include <OgreTextureDefinition.h>

+ Inheritance diagram for Ogre::TextureDefinitionBase:
+ Collaboration diagram for Ogre::TextureDefinitionBase:

Classes

class  TextureDefinition
 Local texture definition. More...
 

Public Types

enum  BoolSetting { BoolFalse, BoolTrue, BoolUndefined }
 
enum  TextureSource { TEXTURE_INPUT, TEXTURE_LOCAL, TEXTURE_GLOBAL, NUM_TEXTURES_SOURCES }
 

Public Member Functions

 TextureDefinitionBase (TextureSource defaultSource)
 
TextureDefinitionaddTextureDefinition (const String &name)
 Creates a TextureDefinition with a given name, must be unique. More...
 
virtual IdString addTextureSourceName (const String &name, size_t index, TextureSource textureSource)
 Adds a texture name, whether a real one or an alias, and where to grab it from. More...
 
size_t getNumInputChannels (void) const
 This has O(N) complexity! (not cached, we look in mNameToChannelMap) More...
 
void getTextureSource (IdString name, size_t &index, TextureSource &textureSource) const
 Retrieves in which container to look for when looking to which texture is a given name associated with. More...
 
void operator delete (void *ptr)
 
void operator delete (void *ptr, void *)
 
void operator delete (void *ptr, const char *, int, const char *)
 
void operator delete[] (void *ptr)
 
void operator delete[] (void *ptr, const char *, int, const char *)
 
void * operator new (size_t sz, const char *file, int line, const char *func)
 operator new, with debug line info More...
 
void * operator new (size_t sz)
 
void * operator new (size_t sz, void *ptr)
 placement operator new More...
 
void * operator new[] (size_t sz, const char *file, int line, const char *func)
 array operator new, with debug line info More...
 
void * operator new[] (size_t sz)
 
void setNumLocalTextureDefinitions (size_t numTDs)
 Reserves enough memory for all texture definitions. More...
 

Static Public Member Functions

static CompositorChannel createTexture (const TextureDefinition &textureDef, const String &texName, const RenderTarget *finalTarget, RenderSystem *renderSys)
 
static void createTextures (const TextureDefinitionVec &textureDefs, CompositorChannelVec &inOutTexContainer, IdType id, bool uniqueNames, const RenderTarget *finalTarget, RenderSystem *renderSys)
 Utility function to create the textures based on a given set of texture definitions and put them in a container. More...
 
static void destroyTextures (CompositorChannelVec &inOutTexContainer, RenderSystem *renderSys)
 createTextures More...
 
static void recreateResizableTextures (const TextureDefinitionVec &textureDefs, CompositorChannelVec &inOutTexContainer, const RenderTarget *finalTarget, RenderSystem *renderSys, const CompositorNodeVec &connectedNodes, const CompositorPassVec *passes)
 Destroys & recreates only the textures that depend on the main RT (i.e. More...
 

Protected Types

typedef map< IdString, uint32 >
::type 
NameToChannelMap
 
typedef vector
< TextureDefinition >::type 
TextureDefinitionVec
 

Static Protected Member Functions

static void decodeTexSource (uint32 encodedVal, size_t &outIdx, TextureSource &outTexSource)
 
static uint32 encodeTexSource (size_t index, TextureSource textureSource)
 

Protected Attributes

TextureSource mDefaultLocalTextureSource
 TextureSource to use by addLocalTextureDefinition. More...
 
TextureDefinitionVec mLocalTextureDefs
 
NameToChannelMap mNameToChannelMap
 Similar to. More...
 

Friends

class CompositorNode
 
class CompositorWorkspace
 

Detailed Description

Centralized class for dealing with declarations of textures in Node & Workspace definitions.

Note that shadow nodes use their own system

Author
Matias N. Goldberg
Version
1.0

Definition at line 54 of file OgreTextureDefinition.h.

Member Typedef Documentation

Definition at line 114 of file OgreTextureDefinition.h.

Member Enumeration Documentation

Enumerator
BoolFalse 
BoolTrue 
BoolUndefined 

Definition at line 65 of file OgreTextureDefinition.h.

Enumerator
TEXTURE_INPUT 
TEXTURE_LOCAL 

We got the texture through an input channel.

TEXTURE_GLOBAL 

We own the texture.

NUM_TEXTURES_SOURCES 

It's a global texture. Ask the manager for it.

Definition at line 57 of file OgreTextureDefinition.h.

Constructor & Destructor Documentation

Ogre::TextureDefinitionBase::TextureDefinitionBase ( TextureSource  defaultSource)

Member Function Documentation

TextureDefinition* Ogre::TextureDefinitionBase::addTextureDefinition ( const String name)

Creates a TextureDefinition with a given name, must be unique.

Remarks
WARNING: Calling this function may invalidate all previous returned pointers unless you've properly called setLocalTextureDefinitions
addTextureSourceName remarks for what it can throw
Textures are local when the derived class is a Node definition, and it's global when the derived class is a Workspace definition
Parameters
nameThe name of the texture. Names are usually valid only throughout this node. We need the name, not its hash because we need to validate the global_ prefix is used correctly.
virtual IdString Ogre::TextureDefinitionBase::addTextureSourceName ( const String name,
size_t  index,
TextureSource  textureSource 
)
virtual

Adds a texture name, whether a real one or an alias, and where to grab it from.

Remarks
Throws if a texture with same name already exists, or if the name makes improper usage of the 'global' prefix.
This is a generic way to add input channels, by calling:
addTextureSourceName( "myRT", 0, TextureDefinitionBase::TEXTURE_INPUT );

You're assigning an alias named "myRT" to channel Input #0 For local or global textures, the index parameter documentation

Parameters
fullNameThe name of the texture. Names are usually valid only throughout this node. We need the name, not its hash because we need to validate the global_ prefix is used correctly.
indexIndex in the container where the texture is located, eg. this->mLocalTextureDefs[index] for local textures, workspace->mLocalTextureDefs[index] for global textures, and this->mInTextures[index] for input channels.
textureSourceSource where the index must be used (eg. TEXTURE_LOCAL means mLocalTextureDefs)
Returns
IdString of the fullName paremeter, for convenience

Reimplemented in Ogre::CompositorShadowNodeDef.

static CompositorChannel Ogre::TextureDefinitionBase::createTexture ( const TextureDefinition textureDef,
const String texName,
const RenderTarget finalTarget,
RenderSystem renderSys 
)
static
static void Ogre::TextureDefinitionBase::createTextures ( const TextureDefinitionVec textureDefs,
CompositorChannelVec inOutTexContainer,
IdType  id,
bool  uniqueNames,
const RenderTarget finalTarget,
RenderSystem renderSys 
)
static

Utility function to create the textures based on a given set of texture definitions and put them in a container.

Remarks
Useful because both Workspace & CompositorNode share the same functionality (create global/local textures respectively) without having to create a whole base class just for one function. It's confusing that Nodes & Workspace would share the same base class, as if they were the same base object or share similar functionality (when in fact, workspace manages nodes)
Parameters
textureDefsArray of texture definitions
inOutTexContainerWhere we'll store the newly created RTs & textures
idUnique id in the case we want textures to have unique names (uniqueNames must be true)
uniqueNamesSet to true if each RT will have a unique name based on given Id, or we don't. The latter is useful for global textures (let them get access through materials)
finalTargetThe final render target (usually the render window) we have to clone parameters from (eg. when using auto width & height, or fsaa settings)
renderSysThe RenderSystem to use
static void Ogre::TextureDefinitionBase::decodeTexSource ( uint32  encodedVal,
size_t &  outIdx,
TextureSource outTexSource 
)
staticprotected
static void Ogre::TextureDefinitionBase::destroyTextures ( CompositorChannelVec inOutTexContainer,
RenderSystem renderSys 
)
static

createTextures

static uint32 Ogre::TextureDefinitionBase::encodeTexSource ( size_t  index,
TextureSource  textureSource 
)
inlinestaticprotected

Definition at line 127 of file OgreTextureDefinition.h.

size_t Ogre::TextureDefinitionBase::getNumInputChannels ( void  ) const

This has O(N) complexity! (not cached, we look in mNameToChannelMap)

void Ogre::TextureDefinitionBase::getTextureSource ( IdString  name,
size_t &  index,
TextureSource textureSource 
) const

Retrieves in which container to look for when looking to which texture is a given name associated with.

Remarks
Throws if name is not found.
Parameters
nameThe name of the texture. Names are usually valid only throughout this node.
index[out] The index at the container in which the texture associated with the output channel is stored
textureSource[out] Where to get this texture from
template<class Alloc >
void Ogre::AllocatedObject< Alloc >::operator delete ( void *  ptr)
inlineinherited

Definition at line 96 of file OgreMemoryAllocatedObject.h.

template<class Alloc >
void Ogre::AllocatedObject< Alloc >::operator delete ( void *  ptr,
void *   
)
inlineinherited

Definition at line 102 of file OgreMemoryAllocatedObject.h.

template<class Alloc >
void Ogre::AllocatedObject< Alloc >::operator delete ( void *  ptr,
const char *  ,
int  ,
const char *   
)
inlineinherited

Definition at line 108 of file OgreMemoryAllocatedObject.h.

template<class Alloc >
void Ogre::AllocatedObject< Alloc >::operator delete[] ( void *  ptr)
inlineinherited

Definition at line 113 of file OgreMemoryAllocatedObject.h.

template<class Alloc >
void Ogre::AllocatedObject< Alloc >::operator delete[] ( void *  ptr,
const char *  ,
int  ,
const char *   
)
inlineinherited

Definition at line 119 of file OgreMemoryAllocatedObject.h.

template<class Alloc >
void* Ogre::AllocatedObject< Alloc >::operator new ( size_t  sz,
const char *  file,
int  line,
const char *  func 
)
inlineinherited

operator new, with debug line info

Definition at line 68 of file OgreMemoryAllocatedObject.h.

template<class Alloc >
void* Ogre::AllocatedObject< Alloc >::operator new ( size_t  sz)
inlineinherited

Definition at line 73 of file OgreMemoryAllocatedObject.h.

template<class Alloc >
void* Ogre::AllocatedObject< Alloc >::operator new ( size_t  sz,
void *  ptr 
)
inlineinherited

placement operator new

Definition at line 79 of file OgreMemoryAllocatedObject.h.

template<class Alloc >
void* Ogre::AllocatedObject< Alloc >::operator new[] ( size_t  sz,
const char *  file,
int  line,
const char *  func 
)
inlineinherited

array operator new, with debug line info

Definition at line 86 of file OgreMemoryAllocatedObject.h.

template<class Alloc >
void* Ogre::AllocatedObject< Alloc >::operator new[] ( size_t  sz)
inlineinherited

Definition at line 91 of file OgreMemoryAllocatedObject.h.

static void Ogre::TextureDefinitionBase::recreateResizableTextures ( const TextureDefinitionVec textureDefs,
CompositorChannelVec inOutTexContainer,
const RenderTarget finalTarget,
RenderSystem renderSys,
const CompositorNodeVec connectedNodes,
const CompositorPassVec passes 
)
static

Destroys & recreates only the textures that depend on the main RT (i.e.

the RenderWindow) resolution

Parameters
textureDefsArray of texture definitions, so we know which ones depend on main RT's resolution
inOutTexContainerWhere we'll replace the RTs & textures
finalTargetThe final render target (usually the render window) we have to clone parameters from (eg. when using auto width & height, or fsaa settings)
renderSysThe RenderSystem to use
connectedNodesArray of connected nodes that may be using our textures and need to be notified.
passesArray of Compositor Passes which may contain the texture being recreated When the pointer is null, we don't iterate through it.
void Ogre::TextureDefinitionBase::setNumLocalTextureDefinitions ( size_t  numTDs)
inline

Reserves enough memory for all texture definitions.

Remarks
Calling this function is not obligatory, but recommended
Parameters
numPassesThe number of texture definitions expected to contain.

Definition at line 189 of file OgreTextureDefinition.h.

Friends And Related Function Documentation

friend class CompositorNode
friend

Definition at line 111 of file OgreTextureDefinition.h.

friend class CompositorWorkspace
friend

Definition at line 112 of file OgreTextureDefinition.h.

Member Data Documentation

TextureSource Ogre::TextureDefinitionBase::mDefaultLocalTextureSource
protected

TextureSource to use by addLocalTextureDefinition.

Could be either TEXTURE_LOCAL or TEXTURE_GLOBAL (depends on our derived class)

Definition at line 119 of file OgreTextureDefinition.h.

TextureDefinitionVec Ogre::TextureDefinitionBase::mLocalTextureDefs
protected

Definition at line 120 of file OgreTextureDefinition.h.

NameToChannelMap Ogre::TextureDefinitionBase::mNameToChannelMap
protected

Similar to.

See also
CompositorNodeDef::mOutChannelMapping, associates a given name with the input, local or global textures.

Definition at line 125 of file OgreTextureDefinition.h.


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