Pyrogenesis trunk
|
Represents a texture object. More...
#include <TextureManager.h>
Public Member Functions | |
~CTexture () | |
size_t | GetWidth () const |
Returns the width (in pixels) of the current texture. More... | |
size_t | GetHeight () const |
Returns the height (in pixels) of the current texture. More... | |
bool | HasAlpha () const |
Returns whether the current texture has an alpha channel. More... | |
u32 | GetBaseColor () const |
Returns the ARGB value of the lowest mipmap level (i.e. More... | |
size_t | GetUploadedSize () const |
Returns total number of bytes uploaded for this texture. More... | |
void | UploadBackendTextureIfNeeded (Renderer::Backend::IDeviceCommandContext *deviceCommandContext) |
Uploads a texture data to a backend texture if successfully loaded. More... | |
Renderer::Backend::ITexture * | GetBackendTexture () |
Returns a backend texture if successfully uploaded, else fallback. More... | |
const Renderer::Backend::ITexture * | GetBackendTexture () const |
bool | TryLoad () |
Attempt to load the texture data quickly, as with GetUploadedBackendTextureIfNeeded(). More... | |
bool | IsLoaded () const |
Returns whether the texture data is currently loaded. More... | |
bool | IsUploaded () const |
Returns whether the texture data is currently uploaded. More... | |
void | Prefetch () |
Activate the prefetching optimisation for this texture. More... | |
Private Types | |
enum | { UNLOADED , PREFETCH_NEEDS_LOADING , PREFETCH_NEEDS_CONVERTING , PREFETCH_IS_CONVERTING , HIGH_NEEDS_CONVERTING , HIGH_IS_CONVERTING , LOADED , UPLOADED } |
Private Member Functions | |
NONCOPYABLE (CTexture) | |
CTexture (std::unique_ptr< Renderer::Backend::ITexture > texture, Renderer::Backend::ITexture *fallback, const CTextureProperties &props, CTextureManagerImpl *textureManager) | |
void | ResetBackendTexture (std::unique_ptr< Renderer::Backend::ITexture > backendTexture, Renderer::Backend::ITexture *fallbackBackendTexture) |
Private Attributes | |
const CTextureProperties | m_Properties |
std::unique_ptr< Renderer::Backend::ITexture > | m_BackendTexture |
Renderer::Backend::ITexture * | m_FallbackBackendTexture = nullptr |
u32 | m_BaseColor |
std::unique_ptr< Tex > | m_TextureData |
size_t | m_UploadedSize = 0 |
uint32_t | m_BaseLevelOffset = 0 |
enum CTexture:: { ... } | m_State |
CTextureManagerImpl * | m_TextureManager |
std::weak_ptr< CTexture > | m_Self |
Friends | |
class | CTextureManagerImpl |
class | CPredefinedTexture |
struct | TextureCacheCmp |
struct | TPequal_to |
struct | TPhash |
Represents a texture object.
The texture data may or may not have been loaded yet. Before it has been loaded, all operations will act on a default 1x1-pixel grey texture instead.
|
private |
|
default |
|
explicitprivate |
Renderer::Backend::ITexture * CTexture::GetBackendTexture | ( | ) |
Returns a backend texture if successfully uploaded, else fallback.
const Renderer::Backend::ITexture * CTexture::GetBackendTexture | ( | ) | const |
u32 CTexture::GetBaseColor | ( | ) | const |
Returns the ARGB value of the lowest mipmap level (i.e.
the average of the whole texture). Returns 0 if the texture has no mipmaps.
size_t CTexture::GetHeight | ( | ) | const |
Returns the height (in pixels) of the current texture.
size_t CTexture::GetUploadedSize | ( | ) | const |
Returns total number of bytes uploaded for this texture.
size_t CTexture::GetWidth | ( | ) | const |
Returns the width (in pixels) of the current texture.
bool CTexture::HasAlpha | ( | ) | const |
Returns whether the current texture has an alpha channel.
|
inline |
Returns whether the texture data is currently loaded.
|
inline |
Returns whether the texture data is currently uploaded.
|
private |
void CTexture::Prefetch | ( | ) |
Activate the prefetching optimisation for this texture.
Use this if it is likely the texture will be needed in the near future. It will be loaded in the background so that it is likely to be ready when it is used by Bind().
|
private |
bool CTexture::TryLoad | ( | ) |
Attempt to load the texture data quickly, as with GetUploadedBackendTextureIfNeeded().
Returns whether the texture data is currently loaded (but not uploaded).
void CTexture::UploadBackendTextureIfNeeded | ( | Renderer::Backend::IDeviceCommandContext * | deviceCommandContext | ) |
Uploads a texture data to a backend texture if successfully loaded.
If the texture data hasn't been loaded yet, this may wait a short while to load it. If loading takes too long then it will return sooner and the data will be loaded in a background thread, so this does not guarantee the texture really will be uploaded.
|
friend |
|
friend |
|
friend |
|
friend |
|
friend |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
enum { ... } CTexture::m_State |
|
private |
|
private |
|
private |