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

#include <T2GLTexture_GL.h>

Inheritance diagram for T2TextureManager:
TSingleton< T2TextureManager >

Public Member Functions

 T2TextureManager ()
 
 ~T2TextureManager ()=default
 
T2GLTextureGetLastTexture () const
 
T2GLTextureGetInvalidTexture () const
 
T2GLTextureGetWhiteTexture () const
 
T2GLTextureFindTexture (const TCHAR *a_pchTexName)
 
void AddTexture (T2GLTexture *a_pTexture)
 
void RemoveTexture (T2GLTexture *a_pTexture)
 
- Public Member Functions inherited from TSingleton< T2TextureManager >
 TSingleton (const TSingleton &)=delete
 
 TSingleton (const TSingleton &&)=delete
 
TSingletonoperator= (const TSingleton &)=delete
 
TSingletonoperator= (const TSingleton &&)=delete
 

Friends

class T2GLTexture
 

Additional Inherited Members

- Static Public Member Functions inherited from TSingleton< T2TextureManager >
static TFORCEINLINE T2TextureManagerCreateSingleton (Args &&... args)
 
static TFORCEINLINE D * CreateSingleton (Args &&... args)
 
static TFORCEINLINE void DestroySingleton ()
 
static TFORCEINLINE T2TextureManagerGetSingletonSafe ()
 
static TFORCEINLINE TBOOL IsSingletonCreated ()
 
static TFORCEINLINE T2TextureManagerGetSingleton ()
 
- Protected Member Functions inherited from TSingleton< T2TextureManager >
TFORCEINLINE TSingleton ()
 
TFORCEINLINE ~TSingleton ()
 
- Static Protected Attributes inherited from TSingleton< T2TextureManager >
static T2TextureManagerms_pSingleton
 

Detailed Description

Definition at line 226 of file T2GLTexture_GL.h.

Constructor & Destructor Documentation

◆ T2TextureManager()

T2TextureManager::T2TextureManager ( )

Definition at line 46 of file T2GLTexture_GL.cpp.

47 : m_pLastTexture( TNULL )
48{
49 {
50 // White texture
51 constexpr int WhiteTextureWidth = 8;
52 constexpr int WhiteTextureHeight = 8;
53 constexpr int WhiteTextureSize = WhiteTextureWidth * WhiteTextureHeight * 4;
54
55 TUINT8* srcData = (TUINT8*)TMemalign( WhiteTextureSize, 16 );
56 TUtil::MemSet( srcData, 0xFF, WhiteTextureSize );
57
58 m_pWhiteTexture = new T2GLTexture;
59 m_pWhiteTexture->Create( TEXTURE_FORMAT_R8G8B8A8_UNORM, WhiteTextureWidth, WhiteTextureHeight, srcData );
60 m_pWhiteTexture->SetName( "white" );
61 m_pWhiteTexture->m_pNextTexture = TNULL;
62 m_pWhiteTexture->m_pPrevTexture = TNULL;
63 TFree( srcData );
64 }
65
66 {
67 // Invalid texture
68 constexpr int InvalidTextureWidth = 128;
69 constexpr int InvalidTextureHeight = 128;
70 constexpr int InvalidTextureSize = InvalidTextureWidth * InvalidTextureHeight * 4;
71
72 TUINT8* srcData = (TUINT8*)TMemalign( InvalidTextureSize, 16 );
73
74 for ( TUINT8* pos = srcData; pos < srcData + InvalidTextureSize; pos += 4 )
75 {
76 *( pos ) = rand() % 256;
77 *( pos + 1 ) = rand() % 256;
78 *( pos + 2 ) = rand() % 256;
79 *( pos + 3 ) = rand() % 256;
80 }
81
82 m_pInvalidTexture = new T2GLTexture;
83 m_pInvalidTexture->Create( TEXTURE_FORMAT_R8G8B8A8_UNORM, 8, 8, srcData );
84 m_pInvalidTexture->SetName( "invalid" );
85 m_pInvalidTexture->m_pNextTexture = TNULL;
86 m_pInvalidTexture->m_pPrevTexture = TNULL;
87 TFree( srcData );
88 }
89}
void * TMemalign(TSIZE a_uiAlignment, TSIZE a_uiSize, Toshi::TMemory::MemBlock *a_pMemBlock)
Allocates aligned memory from a specific memory block.
Definition TMemory.cpp:1020
void TFree(void *a_pMem)
Frees previously allocated memory.
Definition TMemory.cpp:1054
@ TEXTURE_FORMAT_R8G8B8A8_UNORM
uint8_t TUINT8
Definition Typedefs.h:17
#define TNULL
Definition Typedefs.h:23
friend class T2GLTexture
static void MemSet(void *ptr, TINT value, TSIZE size)
Definition TUtil.h:89

◆ ~T2TextureManager()

T2TextureManager::~T2TextureManager ( )
default

Member Function Documentation

◆ AddTexture()

void T2TextureManager::AddTexture ( T2GLTexture * a_pTexture)

Definition at line 109 of file T2GLTexture_GL.cpp.

110{
111 a_pTexture->m_pPrevTexture = GetLastTexture();
112 a_pTexture->m_pNextTexture = TNULL;
113
114 if ( a_pTexture->m_pPrevTexture != TNULL )
115 a_pTexture->m_pPrevTexture->m_pNextTexture = a_pTexture;
116
117 m_pLastTexture = a_pTexture;
118}
T2GLTexture * GetLastTexture() const

◆ FindTexture()

T2GLTexture * T2TextureManager::FindTexture ( const TCHAR * a_pchTexName)

Definition at line 91 of file T2GLTexture_GL.cpp.

92{
93 T2GLTexture* pCurrentTex = m_pLastTexture;
94
95 while ( TTRUE )
96 {
97 if ( pCurrentTex == TNULL )
98 return m_pInvalidTexture;
99
100 if ( !T2String8::CompareNoCase( pCurrentTex->GetName(), a_pchTexName ) )
101 break;
102
103 pCurrentTex = pCurrentTex->m_pPrevTexture;
104 }
105
106 return pCurrentTex;
107}
#define TTRUE
Definition Typedefs.h:25
const TCHAR * GetName() const
static TINT CompareNoCase(const TCHAR *str1, const TCHAR *str2, TSIZE size=-1)
Definition T2String8.cpp:60

◆ GetInvalidTexture()

T2GLTexture * T2TextureManager::GetInvalidTexture ( ) const
inline

Definition at line 237 of file T2GLTexture_GL.h.

237{ return m_pInvalidTexture; }

◆ GetLastTexture()

T2GLTexture * T2TextureManager::GetLastTexture ( ) const
inline

Definition at line 236 of file T2GLTexture_GL.h.

236{ return m_pLastTexture; }

◆ GetWhiteTexture()

T2GLTexture * T2TextureManager::GetWhiteTexture ( ) const
inline

Definition at line 238 of file T2GLTexture_GL.h.

238{ return m_pWhiteTexture; }

◆ RemoveTexture()

void T2TextureManager::RemoveTexture ( T2GLTexture * a_pTexture)

Definition at line 120 of file T2GLTexture_GL.cpp.

121{
122 if ( a_pTexture->m_pPrevTexture )
123 a_pTexture->m_pPrevTexture->m_pNextTexture = a_pTexture->m_pNextTexture;
124
125 if ( a_pTexture->m_pNextTexture )
126 a_pTexture->m_pNextTexture->m_pPrevTexture = a_pTexture->m_pPrevTexture;
127
128 if ( m_pLastTexture == a_pTexture )
129 m_pLastTexture = a_pTexture->m_pPrevTexture;
130
131 a_pTexture->m_pNextTexture = TNULL;
132 a_pTexture->m_pPrevTexture = TNULL;
133}

Friends And Related Symbol Documentation

◆ T2GLTexture

friend class T2GLTexture
friend

Definition at line 230 of file T2GLTexture_GL.h.


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