gzdoom/src/gl/textures/gl_hwtexture.h

91 lines
1.6 KiB
C
Raw Normal View History

#ifndef __GLTEXTURE_H
#define __GLTEXTURE_H
#ifdef LoadImage
#undef LoadImage
#endif
#define SHADED_TEXTURE -1
#define DIRECT_PALETTE -2
#include "tarray.h"
class FCanvasTexture;
class AActor;
// For error catching while changing parameters.
enum EInvalid
{
Invalid = 0
};
enum ETranslation
{
TRANS_Alpha = INT_MAX
};
enum
{
GLT_CLAMPX=1,
GLT_CLAMPY=2
};
class FHardwareTexture
{
public:
enum
{
MAX_TEXTURES = 16
};
private:
struct TranslatedTexture
{
unsigned int glTexID;
int translation;
bool mipmapped;
void Delete();
};
public:
static unsigned int lastbound[MAX_TEXTURES];
static int lastactivetexture;
static int max_texturesize;
static int GetTexDimension(int value);
private:
short texwidth, texheight;
bool forcenocompression;
TranslatedTexture glDefTex;
TArray<TranslatedTexture> glTex_Translated;
unsigned int glDepthID; // only used by camera textures
void LoadImage(unsigned char * buffer,int w, int h, TranslatedTexture *glTex, bool mipmap, bool alphatexture, int texunit);
TranslatedTexture * GetTexID(int translation);
int GetDepthBuffer();
void Resize(int width, int height, unsigned char *src_data, unsigned char *dst_data);
public:
FHardwareTexture(int w, int h, bool nocompress);
~FHardwareTexture();
static void Unbind(int texunit);
static void UnbindAll();
void BindToFrameBuffer();
unsigned int Bind(int texunit, int translation, bool alphatexture, bool needmipmap);
unsigned int CreateTexture(unsigned char * buffer, int w, int h, int texunit, bool mipmap, int translation, bool alphatexture);
void Clean(bool all);
};
#endif