2023-01-02 13:17:18 -06:00
|
|
|
#ifndef GX_TEXTURE_HPP
|
|
|
|
|
#define GX_TEXTURE_HPP
|
|
|
|
|
|
|
|
|
|
#include "gx/Types.hpp"
|
|
|
|
|
#include "gx/texture/CGxTex.hpp"
|
|
|
|
|
#include "gx/texture/CTexture.hpp"
|
|
|
|
|
|
2024-09-06 12:31:08 -04:00
|
|
|
enum EImageFormat {
|
|
|
|
|
IMAGE_FORMAT_TGA = 0x0,
|
|
|
|
|
IMAGE_FORMAT_BLP = 0x1,
|
|
|
|
|
NUM_IMAGE_FORMATS = 0x2
|
|
|
|
|
};
|
|
|
|
|
|
2023-01-02 13:17:18 -06:00
|
|
|
typedef HOBJECT HTEXTURE;
|
|
|
|
|
|
|
|
|
|
typedef void (TEXTURE_CALLBACK)(EGxTexCommand, uint32_t, uint32_t, uint32_t, uint32_t, void*, uint32_t&, const void*&);
|
|
|
|
|
|
|
|
|
|
class CImVector;
|
|
|
|
|
|
|
|
|
|
void AsyncTextureWait(CTexture*);
|
|
|
|
|
|
|
|
|
|
uint32_t CalcLevelCount(uint32_t, uint32_t);
|
|
|
|
|
|
|
|
|
|
uint32_t CalcLevelOffset(uint32_t, uint32_t, uint32_t, uint32_t);
|
|
|
|
|
|
|
|
|
|
uint32_t CalcLevelSize(uint32_t, uint32_t, uint32_t, uint32_t);
|
|
|
|
|
|
|
|
|
|
uint32_t GetBitDepth(uint32_t);
|
|
|
|
|
|
|
|
|
|
uint32_t GxCalcTexelStrideInBytes(EGxTexFormat, uint32_t);
|
|
|
|
|
|
|
|
|
|
int32_t GxTexCreate(CGxTexParms const&, CGxTex*&);
|
|
|
|
|
|
|
|
|
|
int32_t GxTexCreate(EGxTexTarget, uint32_t, uint32_t, uint32_t, EGxTexFormat, EGxTexFormat, CGxTexFlags, void*, void (*)(EGxTexCommand, uint32_t, uint32_t, uint32_t, uint32_t, void*, uint32_t&, const void*&), const char*, CGxTex*&);
|
|
|
|
|
|
2024-09-06 12:31:08 -04:00
|
|
|
int32_t GxTexCreate(uint32_t, uint32_t, EGxTexFormat, CGxTexFlags, void*, void (*)(EGxTexCommand, uint32_t, uint32_t, uint32_t, uint32_t, void*, uint32_t&, const void*&), CGxTex*&);
|
|
|
|
|
|
2023-01-02 13:17:18 -06:00
|
|
|
void GxTexDestroy(CGxTex* texId);
|
|
|
|
|
|
|
|
|
|
void GxTexParameters(const CGxTex* texId, CGxTexParms& parms);
|
|
|
|
|
|
|
|
|
|
bool GxTexReusable(CGxTexParms&);
|
|
|
|
|
|
|
|
|
|
void GxTexSetWrap(CGxTex* texId, EGxTexWrapMode wrapU, EGxTexWrapMode wrapV);
|
|
|
|
|
|
|
|
|
|
void GxTexUpdate(CGxTex*, int32_t, int32_t, int32_t, int32_t, int32_t);
|
|
|
|
|
|
|
|
|
|
void GxTexUpdate(CGxTex*, CiRect&, int32_t);
|
|
|
|
|
|
|
|
|
|
TEXTURE_CALLBACK GxuUpdateSingleColorTexture;
|
|
|
|
|
|
|
|
|
|
MipBits* MippedImgAllocA(uint32_t, uint32_t, uint32_t, const char*, int32_t);
|
|
|
|
|
|
|
|
|
|
uint32_t MippedImgCalcSize(uint32_t, uint32_t, uint32_t);
|
|
|
|
|
|
2024-09-06 12:31:08 -04:00
|
|
|
void MippedImgSet(uint32_t fourCC, uint32_t width, uint32_t height, MipBits* bits);
|
|
|
|
|
|
2023-01-02 13:17:18 -06:00
|
|
|
CGxTex* TextureAllocGxTex(EGxTexTarget, uint32_t, uint32_t, uint32_t, EGxTexFormat, CGxTexFlags, void*, void (*userFunc)(EGxTexCommand, uint32_t, uint32_t, uint32_t, uint32_t, void*, uint32_t&, const void*&), EGxTexFormat);
|
|
|
|
|
|
|
|
|
|
HTEXTURE TextureCacheGetTexture(char*, char*, CGxTexFlags);
|
|
|
|
|
|
|
|
|
|
HTEXTURE TextureCacheGetTexture(const CImVector&);
|
|
|
|
|
|
|
|
|
|
void TextureCacheNewTexture(CTexture*, CGxTexFlags);
|
|
|
|
|
|
|
|
|
|
void TextureCacheNewTexture(CTexture*, const CImVector&);
|
|
|
|
|
|
|
|
|
|
HTEXTURE TextureCreate(const char*, CGxTexFlags, CStatus*, int32_t);
|
|
|
|
|
|
|
|
|
|
HTEXTURE TextureCreate(uint32_t, uint32_t, EGxTexFormat, EGxTexFormat, CGxTexFlags, void*, void (*)(EGxTexCommand, uint32_t, uint32_t, uint32_t, uint32_t, void*, uint32_t&, const void*&), const char*, int32_t);
|
|
|
|
|
|
|
|
|
|
HTEXTURE TextureCreate(EGxTexTarget, uint32_t, uint32_t, uint32_t, EGxTexFormat, EGxTexFormat, CGxTexFlags, void*, void (*)(EGxTexCommand, uint32_t, uint32_t, uint32_t, uint32_t, void*, uint32_t&, const void*&), const char*, int32_t);
|
|
|
|
|
|
|
|
|
|
HTEXTURE TextureCreateSolid(const CImVector&);
|
|
|
|
|
|
|
|
|
|
int32_t TextureGetDimensions(HTEXTURE, uint32_t*, uint32_t*, int32_t);
|
|
|
|
|
|
|
|
|
|
void TextureIncreasePriority(CTexture*);
|
|
|
|
|
|
|
|
|
|
void TextureInitialize(void);
|
|
|
|
|
|
|
|
|
|
int32_t TextureIsSame(HTEXTURE textureHandle, const char* fileName);
|
|
|
|
|
|
2024-09-06 12:31:08 -04:00
|
|
|
MipBits* TextureLoadImage(const char* filename, uint32_t* width, uint32_t* height, PIXEL_FORMAT* dataFormat, int32_t* isOpaque, CStatus* status, uint32_t* alphaBits, int32_t a8);
|
|
|
|
|
|
2023-01-02 13:17:18 -06:00
|
|
|
void TextureFreeGxTex(CGxTex* texId);
|
|
|
|
|
|
2024-09-06 12:31:08 -04:00
|
|
|
void TextureFreeMippedImg(MipBits* image, PIXEL_FORMAT format, uint32_t width, uint32_t height);
|
|
|
|
|
|
2023-01-02 13:17:18 -06:00
|
|
|
CGxTex* TextureGetGxTex(CTexture*, int32_t, CStatus*);
|
|
|
|
|
|
|
|
|
|
CGxTex* TextureGetGxTex(HTEXTURE, int32_t, CStatus*);
|
|
|
|
|
|
|
|
|
|
CTexture* TextureGetTexturePtr(HTEXTURE);
|
|
|
|
|
|
|
|
|
|
#endif
|