OpenBarnyard
 
Loading...
Searching...
No Matches
TTextureResourceHAL Class Reference

#include <TTextureResourceHAL_DX8.h>

Inheritance diagram for TTextureResourceHAL:
TTexture TResource TObject TNodeTree< T >::TNode

Public Member Functions

 TDECLARE_CLASS (TTextureResourceHAL, TTexture)
 
TFORCEINLINE void * operator new (size_t s)
 
TFORCEINLINE void * operator new (size_t s, void *where)
 
TFORCEINLINE void operator delete (void *ptr)
 
TFORCEINLINE void operator delete (void *ptr, void *where)
 
virtual TBOOL Validate () override
 
virtual void Invalidate () override
 
virtual TUINT GetWidth () override
 
virtual TUINT GetHeight () override
 
virtual TBOOL Lock (TTexture::LOCKSTATE &a_rLockState) override
 
virtual void Unlock () override
 
virtual void CreateFromT2Texture (T2Texture *a_pTexture) override
 
virtual TBOOL Create (void *a_pData, TUINT a_uiDataSize, TUINT a_eTextureFlags, TUINT a_uiWidth, TUINT a_uiHeight) override
 
virtual TBOOL Create (const TCHAR *a_szFileName, TUINT a_eTextureFlags) override
 
virtual TBOOL CreateEx (void *a_pData, TUINT a_uiDataSize, TUINT a_uiWidth, TUINT a_uiHeight, TUINT a_uiMipLevels, TTEXTURERESOURCEFORMAT a_eFormat, TUINT a_uiMipMapFlags) override
 
TBOOL CreateFromFormat ()
 
TBOOL CreateFromMemory8888 (TUINT a_uiWidth, TUINT a_uiHeight, TUINT a_uiLevels, void *a_pData)
 
TBOOL CreateFromMemory888 (TUINT a_uiWidth, TUINT a_uiHeight, TUINT a_uiLevels, void *a_pData)
 
TBOOL CreateFromMemory5551 (TUINT a_uiWidth, TUINT a_uiHeight, TUINT a_uiLevels, void *a_pData)
 
TBOOL CreateFromMemoryDDS (TUINT a_uiWidth, TUINT a_uiHeight, TUINT a_uiLevels, void *a_pData)
 
TBOOL CreateFromMemory4444 (TUINT a_uiWidth, TUINT a_uiHeight, TUINT a_uiLevels, void *a_pData)
 
TBOOL CreateFromFileDDS (TUINT a_uiWidth, TUINT a_uiHeight, TUINT a_uiLevels, const TCHAR *a_szFile)
 
IDirect3DTexture8 * GetD3DTexture ()
 
void SetD3DTexture (IDirect3DTexture8 *a_pD3DTexture)
 
ADDRESSINGMODE GetAddressUState () const
 
void SetAddressUState (ADDRESSINGMODE a_eAddressing)
 
ADDRESSINGMODE GetAddressVState () const
 
void SetAddressVState (ADDRESSINGMODE a_eAddressing)
 
D3DXIMAGE_INFO & GetImageInfo ()
 
const D3DXIMAGE_INFO & GetImageInfo () const
 
- Public Member Functions inherited from TTexture
 TDECLARE_CLASS (TTexture, TResource)
 
 TTexture ()
 
 ~TTexture ()
 
void SetAddressing (ADDRESSINGMODE a_eAddressing)
 
ADDRESSINGMODE GetAddressing () const
 
TBOOL CreateResource (void *a_pData, TUINT a_uiDataSize, TUINT a_eTextureFlags, TUINT a_uiWidth, TUINT a_uiHeight)
 
TBOOL CreateResource (const TCHAR *a_szFileName, TUINT a_eTextureFlags)
 
TBOOL CreateResource (void *a_pData, TUINT a_uiDataSize, TUINT a_uiWidth, TUINT a_uiHeight, TUINT a_uiMipLevels, TTEXTURERESOURCEFORMAT a_eFormat, TUINT a_uiFlags)
 
- Public Member Functions inherited from TResource
 TDECLARE_CLASS (TResource, TObject)
 
 TResource ()
 
 ~TResource ()
 
virtual TBOOL Create ()
 
virtual void DestroyResource ()
 
virtual TBOOL TryInvalidate ()
 
virtual TBOOL TryValidate ()
 
virtual void OnDestroy ()
 
TBOOL IsDead () const
 
TBOOL IsDying () const
 
TBOOL IsValid () const
 
TBOOL IsExternal () const
 
TBOOL IsCreated () const
 
TBOOL IsSceneObject () const
 
TBOOL IsInvalid () const
 
void SetState (TResourceState newState)
 
void AddState (TResourceState state)
 
void SetParent (TResource *a_pParent)
 
const TCHARGetName () const
 
void SetName (const TCHAR *name)
 
TBOOL RecurseSimple (t_RecurseCb a_pCallback, TResource *a_pResource, void *a_pUserData)
 
TRenderInterfaceGetRenderer () const
 
void SetRenderer (TRenderInterface *pRenderer)
 
TUINT32 GetUId () const
 
void SetUId (TUINT32 uid)
 
- Public Member Functions inherited from TObject
virtual Toshi::TClass * GetClass ()
 
virtual void Delete ()
 
virtual ~TObject ()
 
TBOOL IsExactly (TClass *a_pClass)
 
TBOOL IsA (TClass *a_pClass)
 
- Public Member Functions inherited from TNodeTree< T >::TNode
TBOOL IsChildOfDefaultRoot () const
 
TBOOL IsLinked () const
 
T * Parent () const
 
T * Next () const
 
T * Prev () const
 
TNodeTree< T > * Tree () const
 
T * Child () const
 

Static Public Member Functions

static void SetupFreeList (TINT a_iCapacity, TINT a_iGrowSize)
 
static TTextureResourceHALCreateNew ()
 
static TBOOL IsPPM (const TCHAR *a_szName)
 
- Static Public Member Functions inherited from TResource
static TBOOL Recurse (t_RecurseCb a_pCallback, TResource *a_pResource, TBOOL a_bFlag, void *a_pUserData)
 
- Static Public Member Functions inherited from TObject
static Toshi::TObject * CreateTObject ()
 
static Toshi::TObject * CreateTObjectInPlace (void *a_pPtr)
 
static void InitialiseClass ()
 
static void DeinitialiseClass ()
 
static TFORCEINLINE TClassGetClassStatic ()
 

Static Public Attributes

static Toshi::TFreeList ms_oFreeList = Toshi::TFreeList( sizeof( TTextureResourceHAL ), 0, 8, "TTextureResourceHAL" )
 
- Static Public Attributes inherited from TResource
static constexpr size_t MAXNAMELEN = 14
 
- Static Public Attributes inherited from TObject
static constexpr Toshi::TClass * PARENTCLASS = TNULL
 
static constinit Toshi::TClass ms_oClass = Toshi::TClass( "TObject", TObject::CreateTObject, TObject::CreateTObjectInPlace, TObject::InitialiseClass, TObject::DeinitialiseClass, 0, 2, sizeof( TObject ), alignof( TObject ) )
 

Additional Inherited Members

- Public Types inherited from TResource
using t_RecurseCb = TBOOL ( * )( TResource* a_pResource, void* a_pUserData )
 
- Public Types inherited from TObject
enum  { IsTObject = TTRUE }
 
- Public Attributes inherited from TTexture
friend TTextureFactory
 
- Public Attributes inherited from TResource
friend TRenderInterface
 
- Public Attributes inherited from TNodeTree< T >::TNode
friend TNodeTree
 
- Protected Member Functions inherited from TNodeTree< T >::TNode
 TNode ()
 
- Protected Attributes inherited from TTexture
ADDRESSINGMODE m_eAddressing
 
TUINT m_eTextureFlags
 
TTextureFactory::NameEntrym_pNameEntry
 
- Protected Attributes inherited from TNodeTree< T >::TNode
TNodeTree< T > * m_Tree
 
T * m_Next
 
T * m_Prev
 
T * m_Parent
 
T * m_Child
 

Detailed Description

Definition at line 10 of file TTextureResourceHAL_DX8.h.

Member Function Documentation

◆ Create() [1/2]

TBOOL TTextureResourceHAL::Create ( const TCHAR * a_szFileName,
TUINT a_eTextureFlags )
overridevirtual

Implements TTexture.

Definition at line 131 of file TTextureResourceHAL_DX8.cpp.

132{
133 if ( !CreateResource( a_szFileName, a_eTextureFlags ) )
134 {
135 return TFALSE;
136 }
137
138 m_eTextureFlags = a_eTextureFlags;
139 m_eAddressUState = ADDRESSINGMODE_WRAP;
140 m_eAddressVState = ADDRESSINGMODE_WRAP;
141 m_uiMipFlags = 1;
142
143 return TTRUE;
144}
@ ADDRESSINGMODE_WRAP
Definition TRender.h:40
#define TFALSE
Definition Typedefs.h:24
#define TTRUE
Definition Typedefs.h:25
TUINT m_eTextureFlags
Definition TTexture.h:77

◆ Create() [2/2]

TBOOL TTextureResourceHAL::Create ( void * a_pData,
TUINT a_uiDataSize,
TUINT a_eTextureFlags,
TUINT a_uiWidth,
TUINT a_uiHeight )
overridevirtual

Implements TTexture.

Definition at line 105 of file TTextureResourceHAL_DX8.cpp.

106{
107 TWARN( "Deprecated! Please use: TTextureResourceHAL::CreateEx()\n" );
108
109 if ( !CreateResource( a_pData, a_uiDataSize, a_eTextureFlags, a_uiWidth, a_uiHeight ) )
110 {
111 return TFALSE;
112 }
113
114 m_eTextureFlags = a_eTextureFlags;
115 m_uiWidth = a_uiWidth;
116 m_uiHeight = a_uiHeight;
117 m_uiMipLevels = 0;
118 m_eResourceFormat = TTEXTURERESOURCEFORMAT::Unknown;
119 m_uiMipFlags = 1;
120 m_bLoadFromMemory = TTRUE;
121 m_pData = a_pData;
122 m_uiDataSize = a_uiDataSize;
123 m_eAddressUState = ADDRESSINGMODE_WRAP;
124 m_eAddressVState = ADDRESSINGMODE_WRAP;
125
126 Validate();
127 return TTRUE;
128}
#define TWARN(...)
Definition Defines.h:152
virtual TBOOL Validate() override

◆ CreateEx()

TBOOL TTextureResourceHAL::CreateEx ( void * a_pData,
TUINT a_uiDataSize,
TUINT a_uiWidth,
TUINT a_uiHeight,
TUINT a_uiMipLevels,
TTEXTURERESOURCEFORMAT a_eFormat,
TUINT a_uiMipMapFlags )
overridevirtual

Reimplemented from TTexture.

Definition at line 147 of file TTextureResourceHAL_DX8.cpp.

148{
149 if ( !CreateResource( a_pData, a_uiDataSize, a_uiWidth, a_uiHeight, a_uiMipLevels, a_eFormat, a_uiMipMapFlags ) )
150 {
151 return TFALSE;
152 }
153
154 m_uiWidth = a_uiWidth;
155 m_pData = a_pData;
156 m_uiHeight = a_uiHeight;
157 m_uiDataSize = a_uiDataSize;
158 m_eTextureFlags = 0x40;
159 m_uiMipLevels = a_uiMipLevels;
160 m_eResourceFormat = a_eFormat;
161 m_uiMipFlags = a_uiMipMapFlags;
162 m_bLoadFromMemory = TTRUE;
163 m_eAddressUState = ADDRESSINGMODE_WRAP;
164 m_eAddressVState = ADDRESSINGMODE_WRAP;
165
166 Validate();
167 return TTRUE;
168}

◆ CreateFromFileDDS()

TBOOL TTextureResourceHAL::CreateFromFileDDS ( TUINT a_uiWidth,
TUINT a_uiHeight,
TUINT a_uiLevels,
const TCHAR * a_szFile )

Definition at line 350 of file TTextureResourceHAL_DX8.cpp.

351{
352 auto pRenderer = TSTATICCAST( TRenderD3DInterface, GetRenderer() );
353
354 HRESULT hRes = D3DXCreateTextureFromFileExA(
355 pRenderer->GetDirect3DDevice(),
356 a_szFile,
357 -1,
358 -1,
359 a_uiLevels,
360 0,
361 D3DFMT_UNKNOWN,
362 D3DPOOL_MANAGED,
363 D3DFILTER_LINEARMIPNEAREST,
364 D3DFILTER_LINEARMIPNEAREST,
365 0,
366 &m_ImageInfo,
367 NULL,
368 &m_pD3DTexture
369 );
370
371 if ( FAILED( hRes ) )
372 {
374 }
375
376 return hRes == S_OK;
377}
#define TSTATICCAST(POINTERTYPE, VALUE)
Definition Defines.h:69
#define TNULL
Definition Typedefs.h:23
static void PrintError(TINT32 a_eError, const TCHAR *a_szInfo)
Prints error text caused by some directx call.
TRenderInterface * GetRenderer() const

◆ CreateFromFormat()

TBOOL TTextureResourceHAL::CreateFromFormat ( )

Definition at line 171 of file TTextureResourceHAL_DX8.cpp.

172{
173 TUINT uiMipLevels = ( m_uiMipFlags & 1 ) ? m_uiMipLevels : 0;
174
175 switch ( m_eResourceFormat )
176 {
177 case TTEXTURERESOURCEFORMAT::R8G8B8A8:
178 return CreateFromMemory8888( m_uiWidth, m_uiHeight, uiMipLevels, m_pData );
179 case TTEXTURERESOURCEFORMAT::R8G8B8:
180 return CreateFromMemory888( m_uiWidth, m_uiHeight, uiMipLevels, m_pData );
181 case TTEXTURERESOURCEFORMAT::R5G5B5A1:
182 return CreateFromMemory5551( m_uiWidth, m_uiHeight, uiMipLevels, m_pData );
183 case TTEXTURERESOURCEFORMAT::DDS:
184 return CreateFromMemoryDDS( m_uiWidth, m_uiHeight, uiMipLevels, m_pData );
185 case TTEXTURERESOURCEFORMAT::R4G4B4A4:
186 return CreateFromMemory4444( m_uiWidth, m_uiHeight, uiMipLevels, m_pData );
187 default:
188 TASSERT( TFALSE, "Unknown format!" );
189 return TFALSE;
190 }
191}
#define TASSERT(X,...)
Definition Defines.h:138
unsigned int TUINT
Definition Typedefs.h:8
TBOOL CreateFromMemory888(TUINT a_uiWidth, TUINT a_uiHeight, TUINT a_uiLevels, void *a_pData)
TBOOL CreateFromMemory5551(TUINT a_uiWidth, TUINT a_uiHeight, TUINT a_uiLevels, void *a_pData)
TBOOL CreateFromMemory8888(TUINT a_uiWidth, TUINT a_uiHeight, TUINT a_uiLevels, void *a_pData)
TBOOL CreateFromMemory4444(TUINT a_uiWidth, TUINT a_uiHeight, TUINT a_uiLevels, void *a_pData)
TBOOL CreateFromMemoryDDS(TUINT a_uiWidth, TUINT a_uiHeight, TUINT a_uiLevels, void *a_pData)

◆ CreateFromMemory4444()

TBOOL TTextureResourceHAL::CreateFromMemory4444 ( TUINT a_uiWidth,
TUINT a_uiHeight,
TUINT a_uiLevels,
void * a_pData )

Definition at line 266 of file TTextureResourceHAL_DX8.cpp.

267{
268 auto pRenderer = TSTATICCAST( TRenderD3DInterface, GetRenderer() );
269
270 HRESULT hCreateRes = pRenderer->GetDirect3DDevice()->CreateTexture(
271 a_uiWidth,
272 a_uiHeight,
273 a_uiLevels,
274 0,
275 D3DFMT_A4R4G4B4,
276 D3DPOOL_MANAGED,
277 &m_pD3DTexture
278 );
279
280 if ( SUCCEEDED( hCreateRes ) )
281 {
282 D3DLOCKED_RECT rect;
283 m_pD3DTexture->LockRect( 0, &rect, NULL, D3DLOCK_NO_DIRTY_UPDATE | D3DLOCK_NOSYSLOCK );
284
285 if ( a_uiHeight != 0 )
286 {
287 TUINT16* pTexPixel = TSTATICCAST( TUINT16, rect.pBits );
288 TUINT16* pDataPixel = TSTATICCAST( TUINT16, a_pData );
289
290 for ( TUINT i = a_uiHeight; i != 0; i-- )
291 {
292 TUINT16 uiDataPixel = *pDataPixel;
293 *pTexPixel = ( ( ( ( uiDataPixel >> 12 ) << 4 | uiDataPixel & 15 ) << 4 | uiDataPixel >> 4 & 15 ) << 4 ) | uiDataPixel >> 8 & 15;
294 pTexPixel++;
295 pDataPixel++;
296 }
297 }
298
299 m_pD3DTexture->UnlockRect( 0 );
300
301 if ( a_uiLevels == 0 )
302 {
303 TFIXME( "Call some D3DX? function with 4 parameters with the first one being IDirect3DTexture (most likely not related to the engine)" );
304 TUtil::MemClear( &m_ImageInfo, sizeof( m_ImageInfo ) );
305 m_ImageInfo.Width = a_uiWidth;
306 m_ImageInfo.Height = a_uiHeight;
307 }
308
309 return TTRUE;
310 }
311 else
312 {
314 }
315
316 return TTRUE;
317}
#define TFIXME(DESC)
Definition Defines.h:135
uint16_t TUINT16
Definition Typedefs.h:15
static void MemClear(void *ptr, TSIZE size)
Definition TUtil.h:91

◆ CreateFromMemory5551()

TBOOL TTextureResourceHAL::CreateFromMemory5551 ( TUINT a_uiWidth,
TUINT a_uiHeight,
TUINT a_uiLevels,
void * a_pData )

Definition at line 259 of file TTextureResourceHAL_DX8.cpp.

260{
261 TIMPLEMENT();
262 return TFALSE;
263}
#define TIMPLEMENT()
Definition Defines.h:136

◆ CreateFromMemory888()

TBOOL TTextureResourceHAL::CreateFromMemory888 ( TUINT a_uiWidth,
TUINT a_uiHeight,
TUINT a_uiLevels,
void * a_pData )

Definition at line 201 of file TTextureResourceHAL_DX8.cpp.

202{
203 auto pRenderer = TSTATICCAST( TRenderD3DInterface, GetRenderer() );
204
205 HRESULT hCreateRes = pRenderer->GetDirect3DDevice()->CreateTexture(
206 a_uiWidth,
207 a_uiHeight,
208 a_uiLevels,
209 0,
210 D3DFMT_X8R8G8B8,
211 D3DPOOL_MANAGED,
212 &m_pD3DTexture
213 );
214
215 if ( SUCCEEDED( hCreateRes ) )
216 {
217 D3DLOCKED_RECT rect;
218 m_pD3DTexture->LockRect( 0, &rect, NULL, D3DLOCK_NO_DIRTY_UPDATE | D3DLOCK_NOSYSLOCK );
219
220 if ( a_uiHeight != 0 )
221 {
222 TUINT8* pTexPixel = TSTATICCAST( TUINT8, rect.pBits );
223 TUINT8* pDataPixel = TSTATICCAST( TUINT8, a_pData );
224
225 for ( TUINT i = a_uiHeight; i != 0; i-- )
226 {
227 TUINT8 uiDataPixel = *pDataPixel;
228 pTexPixel[ 0 ] = pDataPixel[ 2 ];
229 pTexPixel[ 1 ] = pDataPixel[ 1 ];
230 pTexPixel[ 2 ] = pDataPixel[ 0 ];
231 pTexPixel[ 3 ] = 255;
232
233 pTexPixel += 4;
234 pDataPixel += 3;
235 }
236 }
237
238 m_pD3DTexture->UnlockRect( 0 );
239
240 if ( a_uiLevels == 0 )
241 {
242 TFIXME( "Call some D3DX? function with 4 parameters with the first one being IDirect3DTexture (most likely not related to the engine)" );
243 TUtil::MemClear( &m_ImageInfo, sizeof( m_ImageInfo ) );
244 m_ImageInfo.Width = a_uiWidth;
245 m_ImageInfo.Height = a_uiHeight;
246 }
247
248 return TTRUE;
249 }
250 else
251 {
253 }
254
255 return TTRUE;
256}
uint8_t TUINT8
Definition Typedefs.h:17

◆ CreateFromMemory8888()

TBOOL TTextureResourceHAL::CreateFromMemory8888 ( TUINT a_uiWidth,
TUINT a_uiHeight,
TUINT a_uiLevels,
void * a_pData )

Definition at line 194 of file TTextureResourceHAL_DX8.cpp.

195{
196 TIMPLEMENT();
197 return TFALSE;
198}

◆ CreateFromMemoryDDS()

TBOOL TTextureResourceHAL::CreateFromMemoryDDS ( TUINT a_uiWidth,
TUINT a_uiHeight,
TUINT a_uiLevels,
void * a_pData )

Definition at line 320 of file TTextureResourceHAL_DX8.cpp.

321{
322 auto pRenderer = TSTATICCAST( TRenderD3DInterface, GetRenderer() );
323
324 HRESULT hRes = D3DXCreateTextureFromFileInMemoryEx(
325 pRenderer->GetDirect3DDevice(),
326 a_pData,
327 m_uiDataSize,
328 -1,
329 -1,
330 a_uiLevels,
331 0,
332 D3DFMT_UNKNOWN,
333 D3DPOOL_MANAGED,
334 D3DFILTER_LINEARMIPNEAREST,
335 D3DFILTER_LINEARMIPNEAREST,
336 0,
337 &m_ImageInfo,
338 NULL,
339 &m_pD3DTexture
340 );
341
342 if ( FAILED( hRes ) )
343 {
345 }
346
347 return hRes == S_OK;
348}

◆ CreateFromT2Texture()

void TTextureResourceHAL::CreateFromT2Texture ( T2Texture * a_pTexture)
overridevirtual

Implements TTexture.

Definition at line 87 of file TTextureResourceHAL_DX8.cpp.

88{
89 m_bIsToshi2 = TTRUE;
90 m_uiWidth = a_pTexture->GetWidth();
91 m_uiHeight = a_pTexture->GetHeight();
92 m_uiMipLevels = a_pTexture->GetMipLevels();
93 m_uiMipFlags = 0;
94 m_eResourceFormat = TTEXTURERESOURCEFORMAT::Unknown;
95 m_eAddressUState = ADDRESSINGMODE_WRAP;
96 m_eAddressVState = ADDRESSINGMODE_WRAP;
97 m_ImageInfo = a_pTexture->GetImageInfo();
98 m_pD3DTexture = a_pTexture->GetD3DTexture();
99
102}
const D3DXIMAGE_INFO & GetImageInfo() const
TUINT GetMipLevels() const
TUINT GetWidth() const
TUINT GetHeight() const
IDirect3DTexture8 * GetD3DTexture()
virtual TBOOL Validate()
Definition TResource.cpp:36
virtual TBOOL Create()
Definition TResource.cpp:28

◆ CreateNew()

static TTextureResourceHAL * TTextureResourceHAL::CreateNew ( )
inlinestatic

Definition at line 16 of file TTextureResourceHAL_DX8.h.

17 {
18 return new TTextureResourceHAL();
19 }

◆ GetAddressUState()

ADDRESSINGMODE TTextureResourceHAL::GetAddressUState ( ) const
inline

Definition at line 49 of file TTextureResourceHAL_DX8.h.

49{ return m_eAddressUState; }

◆ GetAddressVState()

ADDRESSINGMODE TTextureResourceHAL::GetAddressVState ( ) const
inline

Definition at line 52 of file TTextureResourceHAL_DX8.h.

52{ return m_eAddressVState; }

◆ GetD3DTexture()

IDirect3DTexture8 * TTextureResourceHAL::GetD3DTexture ( )
inline

Definition at line 46 of file TTextureResourceHAL_DX8.h.

46{ return m_pD3DTexture; }

◆ GetHeight()

TUINT TTextureResourceHAL::GetHeight ( )
overridevirtual

Implements TTexture.

Definition at line 40 of file TTextureResourceHAL_DX8.cpp.

41{
42 Validate();
43 return m_ImageInfo.Height;
44}

◆ GetImageInfo() [1/2]

D3DXIMAGE_INFO & TTextureResourceHAL::GetImageInfo ( )
inline

Definition at line 55 of file TTextureResourceHAL_DX8.h.

55{ return m_ImageInfo; }

◆ GetImageInfo() [2/2]

const D3DXIMAGE_INFO & TTextureResourceHAL::GetImageInfo ( ) const
inline

Definition at line 56 of file TTextureResourceHAL_DX8.h.

56{ return m_ImageInfo; }

◆ GetWidth()

TUINT TTextureResourceHAL::GetWidth ( )
overridevirtual

Implements TTexture.

Definition at line 33 of file TTextureResourceHAL_DX8.cpp.

34{
35 Validate();
36 return m_ImageInfo.Width;
37}

◆ Invalidate()

void TTextureResourceHAL::Invalidate ( )
overridevirtual

Reimplemented from TResource.

Definition at line 451 of file TTextureResourceHAL_DX8.cpp.

452{
453 if ( IsCreated() && IsValid() )
454 {
455 if ( m_bIsToshi2 == TTRUE )
456 {
457 m_pD3DTexture = TNULL;
458 }
459 else if ( m_pD3DTexture )
460 {
461 TFIXME( "Doesn't affect anything but here should be some manipulations with s_iHALMemoryUsage" );
462 m_pD3DTexture->Release();
463 }
464
466 }
467}
TBOOL IsCreated() const
Definition TResource.h:46
virtual void Invalidate()
Definition TResource.cpp:47
TBOOL IsValid() const
Definition TResource.h:44

◆ IsPPM()

TBOOL TTextureResourceHAL::IsPPM ( const TCHAR * a_szName)
static

Definition at line 380 of file TTextureResourceHAL_DX8.cpp.

381{
382 auto iLen = TStringManager::String8Length( a_szName );
383
384 if ( iLen >= 4 )
385 {
386 return TStringManager::String8Compare( a_szName + iLen - 4, ".ppm" ) == 0;
387 }
388
389 return TFALSE;
390}
static TINT String8Compare(const TCHAR *str1, const TCHAR *str2, TSIZE size=-1)
static TSIZE String8Length(const TCHAR *str)

◆ Lock()

TBOOL TTextureResourceHAL::Lock ( TTexture::LOCKSTATE & a_rLockState)
overridevirtual

Reimplemented from TTexture.

Definition at line 47 of file TTextureResourceHAL_DX8.cpp.

48{
49 if ( m_pD3DTexture )
50 {
51 D3DLOCKED_RECT rect;
52
53 HRESULT hRes = m_pD3DTexture->LockRect( 0, &rect, NULL, 0 );
54 TASSERT( SUCCEEDED( hRes ) );
55
56 if ( FAILED( hRes ) )
57 {
58 TRenderD3DInterface::PrintError( hRes, "Unable to lock texture!" );
59 }
60
61 if ( SUCCEEDED( hRes ) )
62 {
63 a_rLockState.Pitch = rect.Pitch;
64 a_rLockState.pBits = rect.pBits;
65 m_iNumLocks += 1;
66
67 return TTRUE;
68 }
69 }
70
71 return TFALSE;
72}

◆ operator delete() [1/2]

TFORCEINLINE void TTextureResourceHAL::operator delete ( void * ptr)
inline

Definition at line 14 of file TTextureResourceHAL_DX8.h.

◆ operator delete() [2/2]

TFORCEINLINE void TTextureResourceHAL::operator delete ( void * ptr,
void * where )
inline

Definition at line 14 of file TTextureResourceHAL_DX8.h.

◆ operator new() [1/2]

TFORCEINLINE void * TTextureResourceHAL::operator new ( size_t s)
inline

Definition at line 14 of file TTextureResourceHAL_DX8.h.

◆ operator new() [2/2]

TFORCEINLINE void * TTextureResourceHAL::operator new ( size_t s,
void * where )
inline

Definition at line 14 of file TTextureResourceHAL_DX8.h.

◆ SetAddressUState()

void TTextureResourceHAL::SetAddressUState ( ADDRESSINGMODE a_eAddressing)
inline

Definition at line 50 of file TTextureResourceHAL_DX8.h.

50{ m_eAddressUState = a_eAddressing; }

◆ SetAddressVState()

void TTextureResourceHAL::SetAddressVState ( ADDRESSINGMODE a_eAddressing)
inline

Definition at line 53 of file TTextureResourceHAL_DX8.h.

53{ m_eAddressVState = a_eAddressing; }

◆ SetD3DTexture()

void TTextureResourceHAL::SetD3DTexture ( IDirect3DTexture8 * a_pD3DTexture)
inline

Definition at line 47 of file TTextureResourceHAL_DX8.h.

47{ m_pD3DTexture = a_pD3DTexture; }

◆ SetupFreeList()

static void TTextureResourceHAL::SetupFreeList ( TINT a_iCapacity,
TINT a_iGrowSize )
inlinestatic

Definition at line 14 of file TTextureResourceHAL_DX8.h.

◆ TDECLARE_CLASS()

TTextureResourceHAL::TDECLARE_CLASS ( TTextureResourceHAL ,
TTexture  )

◆ Unlock()

void TTextureResourceHAL::Unlock ( )
overridevirtual

Reimplemented from TTexture.

Definition at line 75 of file TTextureResourceHAL_DX8.cpp.

76{
77 TASSERT( m_iNumLocks != 0 );
78
79 if ( m_iNumLocks != 0 && m_pD3DTexture )
80 {
81 m_pD3DTexture->UnlockRect( 0 );
82 m_iNumLocks -= 1;
83 }
84}

◆ Validate()

TBOOL TTextureResourceHAL::Validate ( )
overridevirtual

Reimplemented from TResource.

Definition at line 393 of file TTextureResourceHAL_DX8.cpp.

394{
395 if ( IsCreated() && IsValid() )
396 {
397 return TTRUE;
398 }
399
400 auto pRenderer = TSTATICCAST( TRenderD3DInterface, GetRenderer() );
401
402 if ( m_bLoadFromMemory )
403 {
404 // Load from memory
405 if ( m_pData && m_uiDataSize != 0 )
406 {
407 if ( HASANYFLAG( m_eTextureFlags, 0x40 ) )
408 {
409 if ( !CreateFromFormat() )
410 {
411 return TFALSE;
412 }
413 }
414 else
415 {
416 TUINT uiLayout = m_eTextureFlags & 0x38;
417
418 if ( uiLayout == 8 )
419 {
420 CreateFromMemory5551( m_uiWidth, m_uiHeight, 0, m_pData );
421 }
422 else if ( uiLayout == 16 )
423 {
424 CreateFromMemory4444( m_uiWidth, m_uiHeight, 0, m_pData );
425 }
426 else if ( uiLayout == 32 )
427 {
428 CreateFromMemory8888( m_uiWidth, m_uiHeight, 0, m_pData );
429 }
430 else
431 {
432 CreateFromMemoryDDS( m_uiWidth, m_uiHeight, -1, m_pData );
433 }
434 }
435 }
436 }
437 else
438 {
439 // Load from file
440 if ( m_pNameEntry && !IsPPM( m_pNameEntry->GetName() ) )
441 {
442 CreateFromFileDDS( m_uiWidth, m_uiHeight, -1, m_pNameEntry->GetName() );
443 }
444 }
445
446 TFIXME( "Doesn't affect anything but here should be some manipulations with s_iHALMemoryUsage" );
447 return TResource::Validate();
448}
#define HASANYFLAG(STATE, FLAG)
Definition Defines.h:5
static TBOOL IsPPM(const TCHAR *a_szName)
TBOOL CreateFromFileDDS(TUINT a_uiWidth, TUINT a_uiHeight, TUINT a_uiLevels, const TCHAR *a_szFile)
TTextureFactory::NameEntry * m_pNameEntry
Definition TTexture.h:78

Member Data Documentation

◆ ms_oFreeList

Toshi::TFreeList TTextureResourceHAL::ms_oFreeList = Toshi::TFreeList( sizeof( TTextureResourceHAL ), 0, 8, "TTextureResourceHAL" )
static

Definition at line 14 of file TTextureResourceHAL_DX8.h.


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