Gray C++ Libraries  0.0.2
A set of C++ libraries for MSVC, GNU on Windows, WinCE, Linux
cXTextureFile.h
Go to the documentation of this file.
1 //
4 //
5 
6 #ifndef _INC_cXTextureFile_H
7 #define _INC_cXTextureFile_H
8 #ifndef NO_PRAGMA_ONCE
9 #pragma once
10 #endif
11 
12 #include "../Resource/cXResourceFile.h"
13 #include "../DX/cDXTexture.h"
15 
16 namespace Gray3D
17 {
19  {
22 
25 
26  // When to load. (and how much)
27  TEXTURELOAD_NOW = 0x002,
28  TEXTURELOAD_SIZE = 0x004,
30 
31  // finding.
34 
35  // Filtering
40  };
41  typedef DWORD TEXTURELOAD_t;
42 
44  : public cDXTextureBase
45  , public cXResourceFile
46  {
55  public:
56  cXTextureFile(const FILECHAR_t* pstrTexPath, size_t nTextureFileSize = 0, TEXTURELOAD_t dwFlags = TEXTURELOAD_NOP);
57  virtual ~cXTextureFile(void);
58 
59  bool isResourceLoaded() const noexcept override
60  {
62  }
63 
64  STDMETHOD_(cString, get_Name)() const
65  {
66  return this->get_FilePath();
67  }
68 
69  virtual HRESULT InitDeviceObjects(cDXDevice* pDXDev);
70  virtual HRESULT DeleteDeviceObjects();
71  virtual bool UpdateOrigSize(); // not the same as allocated size.
72 
73  static HRESULT FindTextureFile(cStringF& sFilePath, cFileStatus* pRetStatus = nullptr);
74 
75  private:
77 
78  public:
80  static size_t sm_nAllocTotalBytes;
81 
82  const size_t m_nTextureFileSize;
83 
84  // temp data for any grouping by material draws. various objects can go there
85  static int sm_iBatchGeneration;
88 
89  protected:
90  // TEXTURELOAD_FILTER will make (stretch) the texture to a power of 2
92  };
93 
95 }
96 
97 #endif
#define GRAY3D_LINK
Definition: Gray3D.h:15
INT32 HRESULT
_WIN32 style error codes. INT32
Definition: SysTypes.h:465
bool isInitDevice() const noexcept
Definition: cDXBase.h:43
Definition: cDXDevice.h:20
Definition: cDXTexture.h:21
Definition: cXResourceFile.h:20
virtual bool isResourceLoaded() const noexcept
Definition: cXResourceFile.h:60
Definition: cXTextureFile.h:46
const size_t m_nTextureFileSize
size of this texture file, for total textures loaded statistics.
Definition: cXTextureFile.h:82
const TEXTURELOAD_t m_dwFlags
use D3DXCreateTextureFromFile() else use a no Filter version to avoid stretching
Definition: cXTextureFile.h:91
static int sm_iBatchGeneration
Definition: cXTextureFile.h:85
static size_t sm_nAllocTotalBytes
count total
Definition: cXTextureFile.h:80
STDMETHOD_(cString, get_Name)() const
Definition: cXTextureFile.h:64
bool isResourceLoaded() const noexcept override
Definition: cXTextureFile.h:59
cArrayPtr< CObject > m_aBatchUsers
cDXMeshMaterialX or CSceneTreeDef type objects in scene using this texture.
Definition: cXTextureFile.h:87
static ITERATE_t sm_nAllocs
count total textures loaded.
Definition: cXTextureFile.h:79
int m_iBatchGeneration
USE_ITEM_BATCHMESHMAT.
Definition: cXTextureFile.h:86
Definition: cArray.h:864
Definition: cFileStatus.h:58
Definition: Gray3D.cpp:12
cRefPtr< cXTextureFile > cXTextureFilePtr
Definition: cXTextureFile.h:94
DWORD TEXTURELOAD_t
mask of TEXTURELOAD_TYPE_
Definition: cXTextureFile.h:41
TEXTURELOAD_TYPE_
Definition: cXTextureFile.h:19
@ TEXTURELOAD_FILTER
Use the default image load filter (stretch the texture to a power of 2)
Definition: cXTextureFile.h:37
@ TEXTURELOAD_NOP
load default. demand load.
Definition: cXTextureFile.h:23
@ TEXTURELOAD_NONCRIT
Non critical, normal map type texture. OK if it doesn't exist.
Definition: cXTextureFile.h:24
@ TEXTURELOAD_SEARCH
search down the directory tree for this. might be a shared texture.
Definition: cXTextureFile.h:32
@ TEXTURELOAD_NORMALMAP
This is a normal map. real name = Name + N.DDS. NOTE: never stretch or lossy compress a normal map....
Definition: cXTextureFile.h:36
@ TEXTURELOAD_USESIZE
KEEP the exact size of the image. size my parent window.
Definition: cXTextureFile.h:38
@ TEXTURELOAD_NOW
Fully load the texture now, (synchronous load)
Definition: cXTextureFile.h:27
@ TEXTURELOAD_USEASPECT
KEEP the aspect ratio of the image. size my parent window.
Definition: cXTextureFile.h:39
@ TEXTURELOAD_DEFERRED
Don't load immediately, queue for later. (else load on demand)
Definition: cXTextureFile.h:29
@ TEXTURELOAD_MODELCHILD
this texture is a child of the last loaded model. (for search path)
Definition: cXTextureFile.h:33
@ TEXTURELOAD_SIZE
MUST have the size now. We can load actual pixels as TEXTURELOAD_DEFERRED or on demand.
Definition: cXTextureFile.h:28
int ITERATE_t
like size_t but signed
Definition: Index.h:28
char FILECHAR_t
a UTF8 char in a file name. like TCHAR
Definition: FileName.h:22