My Project
|
Texture Entity distinguish one template from other The following type are all supported by texture entity. More...
#include <TextureEntityDirectX.h>
Public Member Functions | |
virtual AssetEntity::AssetType | GetType () |
TextureEntityDirectX (const AssetKey &key) | |
virtual HRESULT | InitDeviceObjects () |
virtual HRESULT | RestoreDeviceObjects () |
virtual HRESULT | InvalidateDeviceObjects () |
virtual HRESULT | DeleteDeviceObjects () |
virtual bool | SetRenderTarget (int nIndex=0) |
virtual HRESULT | LoadFromMemory (const char *buffer, DWORD nFileSize, UINT nMipLevels, D3DFORMAT dwTextureFormat=D3DFMT_UNKNOWN, void **ppTexture=NULL) |
load from memory buffer. More... | |
virtual bool | IsLoaded () |
most assets are loaded asynchronously. More... | |
int | GetFrameCount () |
For animated textures. More... | |
virtual const TextureInfo * | GetTextureInfo () |
get texture info. More... | |
virtual DeviceTexturePtr_type | GetTexture () |
Get the texture for rendering. | |
void | SetTexture (LPDIRECT3DTEXTURE9 pSrcTexture) |
the internal texture managed. More... | |
void | CreateTexture (LPDIRECT3DTEXTURE9 pSrcTexture, D3DFORMAT dwFormat=D3DFMT_DXT3, int width=256, int height=256, UINT MipLevels=0) |
Copy pSrcTexture's surface to the current texture. More... | |
HRESULT | CreateTextureFromFile_Serial (RenderDevicePtr pDev=NULL, const char *sFileName=NULL, IDirect3DTexture9 **ppTexture=NULL, D3DFORMAT dwTextureFormat=D3DFMT_UNKNOWN, UINT nMipLevels=D3DX_DEFAULT, Color dwColorKey=0) |
this function is mostly used internally. More... | |
virtual bool | SaveToFile (const char *filename, D3DFORMAT dwFormat, int width, int height, UINT MipLevels=1, DWORD Filter=D3DX_DEFAULT, Color ColorKey=0) |
save any texture to a different texture file format and save with full mipmapping to disk. | |
void | SetSurface (LPDIRECT3DSURFACE9 pSurface) |
secretly, change the m_pSurface | |
LPDIRECT3DSURFACE9 | GetSurface () |
Get the surface. | |
D3DFORMAT | GetD3DFormat () |
get d3d format | |
![]() | |
TextureEntity (const AssetKey &key) | |
virtual bool | LoadFromImage (ImageEntity *image, D3DFORMAT dwTextureFormat=D3DFMT_UNKNOWN, UINT nMipLevels=0, void **ppTexture=NULL) |
Initializes a texture from an ImageEntity object. More... | |
virtual HRESULT | CreateTextureFromFile_Async (void *pContext, RenderDevicePtr pDev=NULL, const char *sFileName=NULL, void **ppTexture=NULL, D3DFORMAT dwTextureFormat=D3DFMT_UNKNOWN, UINT nMipLevels=D3DX_DEFAULT, Color dwColorKey=0) |
this function is mostly used internally. More... | |
bool | IsAsyncLoad () const |
whether to async loading the texture. More... | |
void | SetAsyncLoad (bool val) |
virtual void | SetSamplerStateBlocky (bool bIsBlocky) |
whether we will use blocky or non-blocky (anti-aliased) texture | |
virtual bool | IsSamplerStateBlocky () |
void | SetColorKey (Color colorKey) |
Color | GetColorKey () |
bool | IsPending () |
whether the asset is being loaded. More... | |
void | SetRawData (char *pData, int nSize) |
set raw texture data from which to load the texture. More... | |
char * | GetRawData () |
get raw data | |
int | GetRawDataSize () |
get raw data size | |
bool | GiveupRawDataOwnership () |
give up raw data ownership and reset raw data to empty | |
virtual void | SetTextureInfo (const TextureInfo &tInfo) |
reset the texture info. More... | |
virtual int32 | GetWidth () |
virtual int32 | GetHeight () |
virtual bool | IsFlipY () |
in most cases this is false, where the image origin is at left, top. More... | |
int | GetHitCount () |
void | SetHitCount (int nHitCount) |
void | MakeInvalid () |
make the current texture an invalid one. More... | |
void | Refresh (const char *sFilename=NULL, bool bLazyLoad=false) |
refresh this texture surface with a local file. More... | |
AnimatedTextureInfo * | GetAnimatedTextureInfo () |
get the animated texture information struct. More... | |
void | SetTextureFPS (float FPS) |
For animated textures. More... | |
void | EnableTextureAutoAnimation (bool bEnable) |
For animated textures. More... | |
void | SetCurrentFrameNumber (int nFrame) |
For animated textures. More... | |
int | GetCurrentFrameNumber () |
For animated textures. More... | |
int | GetFrameCount () |
For animated textures. More... | |
![]() | |
AssetEntity (const AssetKey &key) | |
ATTRIBUTE_DEFINE_CLASS (AssetEntity) | |
virtual int | InstallFields (CAttributeClass *pClass, bool bOverride) |
this class should be implemented if one wants to add new attribute. More... | |
ATTRIBUTE_METHOD1 (AssetEntity, GetLocalFileName_s, const char **) | |
ATTRIBUTE_METHOD1 (AssetEntity, SetLocalFileName_s, const char *) | |
ATTRIBUTE_METHOD1 (AssetEntity, GetRemoteAssetURL_s, const char **) | |
ATTRIBUTE_METHOD1 (AssetEntity, IsValid_s, bool *) | |
ATTRIBUTE_METHOD1 (AssetEntity, IsLoaded_s, bool *) | |
ATTRIBUTE_METHOD1 (AssetEntity, IsLocked_s, bool *) | |
ATTRIBUTE_METHOD1 (AssetEntity, IsInitialized_s, bool *) | |
ATTRIBUTE_METHOD1 (AssetEntity, GetState_s, int *) | |
ATTRIBUTE_METHOD1 (AssetEntity, SetState_s, int) | |
virtual const std::string & | GetIdentifier () |
virtual bool | AutoSync (bool bForceSync=false, bool bLazyLoading=true) |
call this function to automatically sync with the remote server according to current asset state More... | |
virtual const string & | GetLocalFileName () |
the actual local file name. More... | |
virtual void | SetLocalFileName (const char *sFileName) |
virtual string | GetRemoteAssetURL () |
get the remote server url of this asset. More... | |
virtual CParameterBlock * | GetParamBlock (bool bCreateIfNotExist=false) |
get effect parameter block with this object. More... | |
bool | IsValid () |
whether this is a valid resource object. More... | |
bool | IsInitialized () |
whether initialized. More... | |
virtual int | Release () |
call this function to safely release this asset. More... | |
AssetKey & | GetKey () |
return the key object. More... | |
AssetState | GetState () |
return the asset state. More... | |
void | SetState (AssetState state) |
set the asset state. More... | |
virtual IAttributeFields * | GetAttributeObject () |
get the attribute object of this asset. More... | |
virtual HRESULT | RendererRecreated () |
callback of listening the event that renderer was recreated on Android/WP8 all opengl related id has already become invalid at this time, no need to release them, just recreate them all in this function. | |
virtual void | Cleanup () |
Clean up additional resources. More... | |
void | LoadAsset () |
load asset. More... | |
void | UnloadAsset () |
unload asset. More... | |
void | GarbageCollectMe () |
if its reference count is zero, unload this asset object. More... | |
bool | IsLocked () |
whether this is a locked resource resource. More... | |
virtual bool | Lock (int nMethod=0) |
Lock the object. More... | |
virtual void | UnLock () |
UnLock the object. | |
virtual bool | GetBoundingBox (Vector3 *pMin, Vector3 *pMax) |
Get AABB bounding box of the asset object. More... | |
![]() | |
virtual int | GetAttributeClassID () |
attribute class ID should be identical, unless one knows how overriding rules work. More... | |
virtual const char * | GetAttributeClassName () |
a static string, describing the attribute class object's name | |
virtual const char * | GetAttributeClassDescription () |
a static string, describing the attribute class object | |
virtual int | GetChildAttributeColumnCount () |
we support multi-dimensional child object. More... | |
virtual int | GetChildAttributeObjectCount (int nColumnIndex=0) |
get the number of child objects (row count) in the given column. More... | |
virtual IAttributeFields * | GetChildAttributeObject (int nRowIndex, int nColumnIndex=0) |
virtual IAttributeFields * | GetChildAttributeObject (const std::string &sName) |
get attribute by child object. More... | |
ATTRIBUTE_METHOD1 (IAttributeFields, GetName_s, const char **) | |
ATTRIBUTE_METHOD1 (IAttributeFields, SetName_s, const char *) | |
ATTRIBUTE_METHOD (IAttributeFields, PrintObject_s) | |
ATTRIBUTE_METHOD (IAttributeFields, AddRef_s) | |
ATTRIBUTE_METHOD1 (IAttributeFields, GetRefCount_s, int *) | |
ATTRIBUTE_METHOD1 (IAttributeFields, SetTime_s, int) | |
ATTRIBUTE_METHOD1 (IAttributeFields, GetTime_s, int *) | |
ATTRIBUTE_METHOD (IAttributeFields, Release_s) | |
virtual void | SetIdentifier (const std::string &sID) |
virtual bool | IsModified () |
whether some of the fields are modified.It is up to the implementation class to provide this functionality if necessary. More... | |
virtual void | SetModified (bool bModified) |
set whether any field has been modified. More... | |
virtual bool | ValidateFields () |
validate all fields and return true if validation passed. More... | |
virtual string | GetValidationMessage () |
get the recent validation message due to the most recent call to ValidateFields() | |
virtual bool | ResetField (int nFieldID) |
Reset the field to its initial or default value. More... | |
virtual bool | InvokeEditor (int nFieldID, const std::string &sParameters) |
Invoke an (external) editor for a given field. More... | |
virtual bool | AddChildAttributeObject (IAttributeFields *pChild, int nRowIndex=-1, int nColumnIndex=0) |
add child object. More... | |
virtual void * | QueryObjectByName (const std::string &sObjectType) |
convert to object of a given type. More... | |
virtual void * | QueryObject (int nObjectType) |
convert to object of a given type. More... | |
virtual int | GetTime () |
get the current local time in case it is animated in milli seconds frames. More... | |
virtual void | SetTime (int nTime) |
virtual CDynamicAttributeField * | GetDynamicField (const std::string &sName) |
Get a dynamic field with a given name. More... | |
virtual CDynamicAttributeField * | GetDynamicField (int nIndex) |
Get a dynamic field with a given index. More... | |
virtual const char * | GetDynamicFieldNameByIndex (int nIndex) |
get field name by index | |
virtual int | GetDynamicFieldCount () |
how many dynamic field this object currently have. More... | |
virtual int | SetDynamicField (const std::string &sName, const CVariable &value) |
set a dynamic field with a given name. More... | |
virtual int | AddDynamicField (const std::string &sName, ATTRIBUTE_FIELDTYPE dwType) |
add dynamic field and return field index | |
virtual void | RemoveAllDynamicFields () |
remove all dynamic fields | |
virtual int | SaveDynamicFieldsToString (std::string &output) |
save only text dynamic fields to fieldname = value text strings. More... | |
virtual int | LoadDynamicFieldsFromString (const std::string &input) |
load only text dynamic fields from string More... | |
CAttributeClass * | GetAttributeClass () |
get the main attribute class object. More... | |
void | PrintObject () |
print the content of this object to a text file at temp/doc/[ClassName].txt. More... | |
![]() | |
virtual void | Clone (IObject *obj) const |
Clone the object's contains to a pointer. More... | |
virtual IObject * | Clone () const |
Clone the object's contains and return a pointer to the newly created object. More... | |
virtual bool | Equals (const IObject *obj) const |
Compare the object with another object. More... | |
virtual const IType * | GetType () const |
virtual std::string | ToString () const |
WeakPtr_type & | GetWeakReference () |
get weak reference object. More... | |
virtual int | ProcessObjectEvent (const ObjectEvent &event) |
this function is only used to backward compatibility of ParaObject:AddEvent() function. More... | |
![]() | |
void | addref () const |
add reference count of the object. More... | |
bool | delref () const |
decrease reference count of the object. More... | |
int | GetRefCount () const |
get the reference count | |
CRefCounted * | AddToAutoReleasePool () |
addref and releases the ownership sometime soon automatically (usually at the end of the current frame). More... | |
Static Public Member Functions | |
static void | GetFormatAndMipLevelFromFileName (const string &filename, D3DFORMAT *pdwTextureFormat, UINT *pnMipLevels) |
determine the texture format and mip level from file name. More... | |
static void | GetFormatAndMipLevelFromFileNameEx (const string &filename, D3DFORMAT *pdwTextureFormat, UINT *pnMipLevels) |
determine the texture format and mip level from file name. More... | |
static void | LoadImage (char *sBufMemFile, int sizeBuf, int &width, int &height, byte **ppBuffer, bool bAlpha) |
load image of any format to buffer. More... | |
static bool | LoadImageOfFormat (const std::string &sTextureFileName, char *sBufMemFile, int sizeBuf, int &width, int &height, byte **ppBuffer, int *pBytesPerPixel=NULL, int nFormat=-1) |
this function uses FreeImage lib and support more formats. More... | |
static bool | LoadImageOfFormatEx (const std::string &sTextureFileName, char *sBufMemFile, int sizeBuf, int &width, int &height, byte **ppBuffer, int *pBytesPerPixel=NULL, int nFormat=-1, ImageExtendInfo *info=nullptr) |
static bool | StretchRect (TextureEntityDirectX *pSrcTexture, TextureEntityDirectX *pDestTexture) |
Copy render target content from one surface to another. More... | |
static TextureEntity * | CreateTexture (const uint8 *pTexels, int width, int height, int rowLength, int bytesPerPixel, uint32 nMipLevels=0, D3DPOOL dwCreatePool=D3DPOOL_MANAGED, DWORD nFormat=0) |
create a texture entity from memory buffer. More... | |
static TextureEntity * | CreateTexture (const char *pFileName, uint32 nMipLevels=0, D3DPOOL dwCreatePool=D3DPOOL_MANAGED) |
![]() | |
static int | GetFormatByFileName (const std::string &filename) |
static void | LoadImage (char *sBufMemFile, int sizeBuf, int &width, int &height, byte **ppBuffer, bool bAlpha) |
load image of any format to buffer. More... | |
static bool | LoadImageOfFormat (const std::string &sTextureFileName, char *sBufMemFile, int sizeBuf, int &width, int &height, byte **ppBuffer, int *pBytesPerPixel=NULL, int nFormat=-1) |
this function uses FreeImage lib and support more formats. More... | |
static bool | LoadImageOfFormatEx (const std::string &sTextureFileName, char *sBufMemFile, int sizeBuf, int &width, int &height, byte **ppBuffer, int *pBytesPerPixel=NULL, int nFormat=-1, ImageExtendInfo *info=nullptr) |
static TextureEntity * | CreateTexture (const uint8 *pTexels, int width, int height, int rowLength, int bytesPerPixel, uint32 nMipLevels=0, D3DPOOL dwCreatePool=D3DPOOL_MANAGED, DWORD nFormat=0) |
create a texture entity from memory buffer. More... | |
static TextureEntity * | CreateTexture (const char *pFileName, uint32 nMipLevels=0, D3DPOOL dwCreatePool=D3DPOOL_MANAGED) |
create a texture entity from file path. More... | |
![]() | |
static const string & | GetAssetServerUrl () |
get the asset server url. More... | |
static void | SetAssetServerUrl (const char *pStr) |
set the asset server url. More... | |
![]() | |
static HRESULT | GetAttributeClassID_s (IAttributeFields *cls, int *p1) |
static HRESULT | GetAttributeClassName_s (IAttributeFields *cls, const char **p1) |
static bool | OpenWithDefaultEditor (const char *sFilename, bool bWaitOnReturn=false) |
Open a given file with the default registered editor in the game engine. More... | |
Public Attributes | |
union { | |
LPDIRECT3DTEXTURE9 m_pTexture | |
static texture | |
LPDIRECT3DCUBETEXTURE9 m_pCubeTexture | |
cube texture | |
LPDIRECT3DSURFACE9 m_pSurface | |
RenderTarget. | |
LPDIRECT3DTEXTURE9 * m_pTextureSequence | |
animated texture sequence | |
}; | |
![]() | |
enum ParaEngine::TextureEntity::_SurfaceType | SurfaceType |
union { | |
TextureInfo * m_pTextureInfo | |
currently all surface types except the animated texture use this struct | |
AnimatedTextureInfo * m_pAnimatedTextureInfo | |
only animated texture use this type. | |
}; | |
it may be different struct for different surface type, but all must inherit from TextureInfo virtual base | |
char * | m_pRawData |
raw data | |
int32 | m_nRawDataSize |
raw data size | |
int32 | m_nHitCount |
Color | m_dwColorKey |
bool | m_bAsyncLoad |
whether to async loading the texture. More... | |
![]() | |
AssetKey | m_key |
this is the unique key object. More... | |
bool | m_bIsInitialized |
whether this entity is initialized;Entity is by default lazily initialized | |
bool | m_bIsValid |
whether this is a valid resource object. More... | |
Additional Inherited Members | |
![]() | |
enum | _SurfaceType { RenderTarget = 0, StaticTexture, TextureSequence, SysMemoryTexture, BlpTexture, TerrainHighResTexture, CubeTexture, FlashTexture, HTMLTexture, TextureSurface, DEPTHSTENCIL } |
![]() | |
enum | AssetState { ASSET_STATE_NORMAL, ASSET_STATE_LOCAL, ASSET_STATE_REMOTE, ASSET_STATE_CACHE, ASSET_STATE_SYNC_START, ASSET_STATE_SYNC_SUCCEED, ASSET_STATE_SYNC_FAIL, ASSET_STATE_FAILED_TO_LOAD } |
the asset state. More... | |
enum | AssetType { base =0, texture, mesh, multianimation, spritevertex, font, sound, mdx, parax, database, effectfile, dllplugin, datagrid, cadMesh, image } |
each asset type has a unique asset type number | |
![]() | |
typedef ParaEngine::weak_ptr< IObject, IAttributeFields > | WeakPtr_type |
![]() | |
typedef ParaEngine::weak_ptr< IObject > | WeakPtr_type |
![]() | |
static const std::string | DEFAULT_STATIC_TEXTURE = "Texture/whitedot.png" |
default texture to replaced downloading one. More... | |
static int | g_nTextureLOD = 0 |
Most detailed level-of-detail value to set for the mipmap chain. More... | |
static bool | g_bEnable32bitsTexture = true |
whether we will load files whose name ends with _32bits as 32 bits textures. More... | |
![]() | |
virtual CAttributeClass * | CreateAttributeClass () |
initialize fields | |
virtual CDynamicAttributesSet * | GetDynamicAttributes (bool bCreateIfNotExist=false) |
![]() | |
WeakPtr_type | m_weak_reference |
![]() | |
int | m_refcount |
Texture Entity distinguish one template from other The following type are all supported by texture entity.
void ParaEngine::TextureEntityDirectX::CreateTexture | ( | LPDIRECT3DTEXTURE9 | pSrcTexture, |
D3DFORMAT | dwFormat = D3DFMT_DXT3 , |
||
int | width = 256 , |
||
int | height = 256 , |
||
UINT | MipLevels = 0 |
||
) |
Copy pSrcTexture's surface to the current texture.
the current texture must be created with TextureEntity::StaticTexture in order to use this function. it will delete existing texture if any and create using the pSrcTexture. this function is mostly used to dynamically compose textures for some avatars, please see ParaXAnimInstance.cpp for more information.
pSrcTexture | it can be any texture, such as a render target. |
|
static |
create a texture entity from memory buffer.
HRESULT ParaEngine::TextureEntityDirectX::CreateTextureFromFile_Serial | ( | RenderDevicePtr | pDev = NULL , |
const char * | sFileName = NULL , |
||
IDirect3DTexture9 ** | ppTexture = NULL , |
||
D3DFORMAT | dwTextureFormat = D3DFMT_UNKNOWN , |
||
UINT | nMipLevels = D3DX_DEFAULT , |
||
Color | dwColorKey = 0 |
||
) |
this function is mostly used internally.
It will load the texture from disk, unpack it and create the texture. when this function returns, the texture will be already loaded to device pool.
pDev | if NULL, the default render device is used |
sFileName | if NULL, m_asset->GetLocalFileName() is used. |
ppTexture | if this is NULL, the m_asset->m_pTexture is sued. |
dwTextureFormat | the format of the texture, default to D3DFMT_UNKNOWN |
nMipLevels | Mip levels, default to D3DX_DEFAULT |
dwColorKey | color key. default to 0(disabled). Use COLOR_XRGB(0,0,0) if blank is treated transparent. |
|
static |
determine the texture format and mip level from file name.
the texture is usually static texture. the rules are below: if file extension is "dds", both format and mip levels are loaded from the file. if file extension is "png" and file name ends with "_32bits", format is D3DFMT_A8R8G8B8, mip level is 1. if file extension is "png" and file name does not ends with "_32bits", format is DXT3, complete mip level chain is created. if file extension is "png" and file path contains "blocks", we will use 32bits texture and full mipmap levels. if filename further contains "leaves" it will only has 1 mip level. in all other cases, such as "tga", format is D3DFMT_UNKNOWN and mip level is D3DX_DEFAULT.
|
static |
determine the texture format and mip level from file name.
the texture is usually static texture. the rules are below: if file extension is "dds", both format and mip levels are loaded from the file. if file extension is "png" and file name CONTAINS "_32bits", format is D3DFMT_A8R8G8B8, mip level is 1. if file extension is "png" and file name does not CONTAINS "_32bits", format is DXT3, complete mip level chain is created. in all other cases, such as "tga", format is D3DFMT_UNKNOWN and mip level is D3DX_DEFAULT.
int ParaEngine::TextureEntityDirectX::GetFrameCount | ( | ) |
For animated textures.
Get the total frames in the animated texture. this provides a short cut to animated textures
|
virtual |
get texture info.
return NULL if the texture has never been set before.
Reimplemented from ParaEngine::TextureEntity.
|
virtual |
most assets are loaded asynchronously.
This allows us to check if an asset is loaded. For example, we can LoadAsset() for a number of assets that need preloading. and then use a timer to check if they are initialized and remove from the uninialized list.
Reimplemented from ParaEngine::TextureEntity.
|
virtual |
load from memory buffer.
ppTexture | if NULL, we will save to current asset, if not we will save to this object. |
Reimplemented from ParaEngine::TextureEntity.
|
static |
load image of any format to buffer.
sBufMemFile | the memory file buffer. |
sizeBuf | size of the memory file buffer |
width | [out] |
height | [out] |
ppBuffer | buffer containing the read data. it may be 4 bytes per pixel or 3 bytes per pixel. this function will allocate buffer using new [] operator, the caller is reponsible to delete it using delete [] operator. |
bAlpha | if (bAlpha) D3DFMT_A8R8G8B8 4 bytes per pixel else D3DFMT_R8G8B8 3 bytes per pixel. |
|
static |
this function uses FreeImage lib and support more formats.
and width, height can be any number instead of square of 2.
sTextureFileName | only used for file format deduction. |
nFormat | default to 32bits ARGB. PixelFormat24bppRGB, PixelFormat16bppGrayScale, PixelFormat8bppIndexed, PixelFormat32bppARGB, etc |
void ParaEngine::TextureEntityDirectX::SetTexture | ( | LPDIRECT3DTEXTURE9 | pSrcTexture | ) |
the internal texture managed.
it will add reference to pSrcTexture
|
static |
Copy render target content from one surface to another.
they may be of different resolution