![]() |
Kodi Documentation 22.0
Kodi is an open source media player and entertainment hub.
|
Texture loader class, subclasses of which depend on the render spec (DX, GL etc.) More...
#include <Texture.h>
Public Member Functions | |
CTexture (unsigned int width=0, unsigned int height=0, XB_FMT format=XB_FMT_A8R8G8B8) | |
virtual | ~CTexture () |
bool | LoadFromMemory (unsigned int width, unsigned int height, unsigned int pitch, XB_FMT format, bool hasAlpha, const unsigned char *pixels) |
bool | UploadFromMemory (unsigned int width, unsigned int height, unsigned int pitch, unsigned char *pixels, KD_TEX_FMT format=KD_TEX_FMT_SDR_RGBA8, KD_TEX_ALPHA alpha=KD_TEX_ALPHA_OPAQUE, KD_TEX_SWIZ swizzle=KD_TEX_SWIZ_RGBA) |
Attempts to upload a texture directly from a provided buffer Unlike LoadFromMemory() which copies the texture into an intermediate buffer, the texture gets uploaded directly to the GPU if circumstances allow. | |
bool | LoadPaletted (unsigned int width, unsigned int height, unsigned int pitch, XB_FMT format, const unsigned char *pixels, const COLOR *palette) |
void | Update (unsigned int width, unsigned int height, unsigned int pitch, XB_FMT format, const unsigned char *pixels, bool loadToGPU) |
void | LoadToGPUAsync () |
Uploads the texture to the GPU. | |
virtual void | CreateTextureObject ()=0 |
virtual void | DestroyTextureObject ()=0 |
virtual void | LoadToGPU ()=0 |
virtual void | SyncGPU () |
Blocks execution until the previous GFX commands have been processed. | |
virtual void | BindToUnit (unsigned int unit)=0 |
virtual bool | SupportsFormat (KD_TEX_FMT textureFormat, KD_TEX_SWIZ textureSwizzle) |
Checks if the processing pipeline can handle the texture format/swizzle. | |
![]() | |
CTextureBase ()=default | |
~CTextureBase ()=default | |
bool | HasAlpha () const |
void | SetAlpha (bool hasAlpha) |
void | SetMipmapping () |
sets mipmapping. do not use in new code. will be replaced with proper scaling. | |
bool | IsMipmapped () const |
return true if we want to mipmap | |
void | SetScalingMethod (TEXTURE_SCALING scalingMethod) |
sets the scaling method. scanout systems might support more than NN/linear. | |
TEXTURE_SCALING | GetScalingMethod () const |
returns the scaling method. | |
int32_t | GetOrientation () const |
void | SetOrientation (int orientation) |
void | SetCacheMemory (bool bCacheMemory) |
retains a shadow copy of the texture on the CPU side. | |
bool | GetCacheMemory () const |
returns true if a shadow copy is kept on the CPU side. | |
uint8_t * | GetPixels () const |
returns a pointer to the staging texture. | |
uint32_t | GetPitch () const |
return the size of one row in bytes. | |
uint32_t | GetRows () const |
return the number of rows (number of blocks in the Y direction). | |
uint32_t | GetTextureWidth () const |
return the total width of the texture, which might be scaled to fit its displayed size. | |
uint32_t | GetTextureHeight () const |
return the total height of the texture, which might be scaled to fit its displayed size. | |
uint32_t | GetWidth () const |
return the total width of "active" area, which might be equal or lower than the texture width due to alignment. | |
uint32_t | GetHeight () const |
return the total height of "active" area, which might be equal or lower than the texture height due to alignment. | |
uint32_t | GetOriginalWidth () const |
return the original width of the image, before scaling/cropping | |
uint32_t | GetOriginalHeight () const |
return the original height of the image, before scaling/cropping | |
KD_TEX_SWIZ | GetSwizzle () const |
return the texture swizzle | |
void | Allocate (uint32_t width, uint32_t height, XB_FMT format) |
void | ClampToEdge () |
Static Public Member Functions | |
static std::unique_ptr< CTexture > | CreateTexture (unsigned int width=0, unsigned int height=0, XB_FMT format=XB_FMT_A8R8G8B8) |
static std::unique_ptr< CTexture > | LoadFromFile (const std::string &texturePath, unsigned int idealWidth=0, unsigned int idealHeight=0, CAspectRatio::AspectRatio aspectRatio=CAspectRatio::CENTER, const std::string &strMimeType="") |
Load a texture from a file Loads a texture from a file, restricting in size if needed based on maxHeight and maxWidth. Note that these are the ideal size to load at - the returned texture may be smaller or larger than these. | |
static std::unique_ptr< CTexture > | LoadFromFileInMemory (unsigned char *buffer, size_t bufferSize, const std::string &mimeType, unsigned int idealWidth=0, unsigned int idealHeight=0, CAspectRatio::AspectRatio aspectRatio=CAspectRatio::CENTER) |
Load a texture from a file in memory Loads a texture from a file in memory, restricting in size if needed based on maxHeight and maxWidth. Note that these are the ideal size to load at - the returned texture may be smaller or larger than these. | |
![]() | |
static uint32_t | PadPow2 (uint32_t x) |
rounds to power of two. deprecated. | |
static bool | SwapBlueRed (uint8_t *pixels, uint32_t height, uint32_t pitch, uint32_t elements=4, uint32_t offset=0) |
swaps the blue/red channel. deprecated in this form. | |
Protected Member Functions | |
bool | LoadFromFileInMem (unsigned char *buffer, size_t size, const std::string &mimeType, unsigned int idealWidth, unsigned int idealHeight, CAspectRatio::AspectRatio aspectRatio) |
bool | LoadFromFileInternal (const std::string &texturePath, unsigned int idealWidth, unsigned int idealHeight, CAspectRatio::AspectRatio aspectRatio, const std::string &strMimeType="") |
bool | LoadIImage (IImage *pImage, unsigned char *buffer, unsigned int bufSize, unsigned int idealWidth, unsigned int idealHeight, CAspectRatio::AspectRatio aspectRatio) |
![]() | |
uint32_t | GetPitch (uint32_t width) const |
uint32_t | GetRows (uint32_t height) const |
uint32_t | GetBlockWidth () const |
uint32_t | GetBlockHeight () const |
uint32_t | GetBlockSize () const |
return the size of a compression block (tile) in bytes. | |
void | SetKDFormat (XB_FMT xbFMT) |
bool | ConvertToLegacy (uint32_t width, uint32_t height, uint8_t *src) |
Textures might be in a single/dual channel format with L/A/I/LA swizzle. DX and GLES 2.0 don't handle some/all at the moment. This function can convert the texture into a traditional BGRA format. | |
Additional Inherited Members | |
![]() | |
uint32_t | m_imageWidth {0} |
uint32_t | m_imageHeight {0} |
uint32_t | m_textureWidth {0} |
uint32_t | m_textureHeight {0} |
uint32_t | m_originalWidth {0} |
original image width before scaling or cropping | |
uint32_t | m_originalHeight {0} |
original image height before scaling or cropping | |
uint8_t * | m_pixels {nullptr} |
bool | m_loadedToGPU {false} |
KD_TEX_FMT | m_textureFormat {KD_TEX_FMT_UNKNOWN} |
KD_TEX_SWIZ | m_textureSwizzle {KD_TEX_SWIZ_RGBA} |
KD_TEX_COL | m_textureColorspace {KD_TEX_COL_REC709} |
KD_TEX_TRANSFER | m_textureTransfer {KD_TEX_TRANSFER_SRGB} |
KD_TEX_ALPHA | m_textureAlpha {KD_TEX_ALPHA_STRAIGHT} |
XB_FMT | m_format {XB_FMT_UNKNOWN} |
int32_t | m_orientation {0} |
bool | m_mipmapping {false} |
TEXTURE_SCALING | m_scalingMethod {TEXTURE_SCALING::LINEAR} |
bool | m_bCacheMemory {false} |
Texture loader class, subclasses of which depend on the render spec (DX, GL etc.)
CTexture::CTexture | ( | unsigned int | width = 0, |
unsigned int | height = 0, | ||
XB_FMT | format = XB_FMT_A8R8G8B8 ) |
|
virtual |
Implemented in CDXTexture, CGLESTexture, and CGLTexture.
|
static |
|
pure virtual |
Implemented in CDXTexture, CGLESTexture, and CGLTexture.
|
pure virtual |
Implemented in CDXTexture, CGLESTexture, and CGLTexture.
|
static |
Load a texture from a file Loads a texture from a file, restricting in size if needed based on maxHeight and maxWidth. Note that these are the ideal size to load at - the returned texture may be smaller or larger than these.
texturePath | the path of the texture to load. |
idealWidth | the ideal width of the texture (defaults to 0, no ideal width). |
idealHeight | the ideal height of the texture (defaults to 0, no ideal height). |
aspectRatio | the aspect ratio mode of the texture (defaults to "center"). |
strMimeType | mimetype of the given texture if available (defaults to empty) |
|
protected |
|
static |
Load a texture from a file in memory Loads a texture from a file in memory, restricting in size if needed based on maxHeight and maxWidth. Note that these are the ideal size to load at - the returned texture may be smaller or larger than these.
buffer | the memory buffer holding the file. |
bufferSize | the size of buffer. |
mimeType | the mime type of the file in buffer. |
idealWidth | the ideal width of the texture (defaults to 0, no ideal width). |
idealHeight | the ideal height of the texture (defaults to 0, no ideal height). |
aspectRatio | the aspect ratio mode of the texture (defaults to "center"). |
|
protected |
bool CTexture::LoadFromMemory | ( | unsigned int | width, |
unsigned int | height, | ||
unsigned int | pitch, | ||
XB_FMT | format, | ||
bool | hasAlpha, | ||
const unsigned char * | pixels ) |
|
protected |
bool CTexture::LoadPaletted | ( | unsigned int | width, |
unsigned int | height, | ||
unsigned int | pitch, | ||
XB_FMT | format, | ||
const unsigned char * | pixels, | ||
const COLOR * | palette ) |
|
pure virtual |
Implemented in CDXTexture, CGLESTexture, and CGLTexture.
void CTexture::LoadToGPUAsync | ( | ) |
Uploads the texture to the GPU.
|
inlinevirtual |
Checks if the processing pipeline can handle the texture format/swizzle.
format | the format of the texture. |
Reimplemented in CGLESTexture, and CGLTexture.
|
inlinevirtual |
Blocks execution until the previous GFX commands have been processed.
Reimplemented in CGLTexture.
void CTexture::Update | ( | unsigned int | width, |
unsigned int | height, | ||
unsigned int | pitch, | ||
XB_FMT | format, | ||
const unsigned char * | pixels, | ||
bool | loadToGPU ) |
bool CTexture::UploadFromMemory | ( | unsigned int | width, |
unsigned int | height, | ||
unsigned int | pitch, | ||
unsigned char * | pixels, | ||
KD_TEX_FMT | format = KD_TEX_FMT_SDR_RGBA8, | ||
KD_TEX_ALPHA | alpha = KD_TEX_ALPHA_OPAQUE, | ||
KD_TEX_SWIZ | swizzle = KD_TEX_SWIZ_RGBA ) |
Attempts to upload a texture directly from a provided buffer Unlike LoadFromMemory() which copies the texture into an intermediate buffer, the texture gets uploaded directly to the GPU if circumstances allow.
width | the width of the texture. |
height | the height of the texture. |
pitch | the pitch of the texture. |
pixels | pointer to the texture buffer. |
format | the format of the texture. |
alpha | the alpha type of the texture. |
swizzle | the swizzle pattern of the texture. |