leocad/common/lc_texture.h

80 lines
1.3 KiB
C
Raw Normal View History

#pragma once
2013-08-09 06:57:18 +02:00
#define LC_TEXTURE_WRAPU 0x01
#define LC_TEXTURE_WRAPV 0x02
#define LC_TEXTURE_MIPMAPS 0x04
#define LC_TEXTURE_POINT 0x00
#define LC_TEXTURE_LINEAR 0x10
#define LC_TEXTURE_BILINEAR 0x20
#define LC_TEXTURE_TRILINEAR 0x30
#define LC_TEXTURE_ANISOTROPIC 0x40
#define LC_TEXTURE_FILTER_MASK 0xf0
#define LC_TEXTURE_FILTER_SHIFT 4
2013-08-09 06:57:18 +02:00
#define LC_TEXTURE_NAME_LEN 256
class Image;
class lcTexture
{
public:
lcTexture();
~lcTexture();
void CreateGridTexture();
bool Load(const QString& FileName, int Flags = 0);
2013-08-09 06:57:18 +02:00
bool Load(lcMemFile& File, int Flags = 0);
bool Load(Image& image, int Flags);
bool Load(Image* images, int NumLevels, int Flags);
2013-08-09 06:57:18 +02:00
void Unload();
int AddRef()
{
mRefCount++;
if (mRefCount == 1)
Load();
return mRefCount;
}
int Release()
{
mRefCount--;
if (!mRefCount)
Unload();
return mRefCount;
}
void SetTemporary(bool Temporary)
{
mTemporary = Temporary;
}
bool IsTemporary() const
{
return mTemporary;
}
2013-08-09 06:57:18 +02:00
int mWidth;
int mHeight;
char mName[LC_TEXTURE_NAME_LEN];
GLuint mTexture;
protected:
bool Load();
bool mTemporary;
2013-08-09 06:57:18 +02:00
int mRefCount;
};
2014-10-05 07:21:51 +02:00
lcTexture* lcLoadTexture(const QString& FileName, int Flags);
void lcReleaseTexture(lcTexture* Texture);
extern lcTexture* gGridTexture;