nenuzhno-engine_iter1/src/graphics/texture.h

50 lines
1.1 KiB
C++

#pragma once
//TODO split interface and implementation
#include "graphics/platform_gl.h"
#ifdef ANDROID
#include "GLES2/gl2ext.h"
#define GL_COMPRESSED_RGBA_S3TC_DXT5_EXT 0x83F3
#define GL_RGBA16F GL_RGBA
#define GL_HALF_FLOAT GL_HALF_FLOAT_OES
//GL_EXT_texture_format_BGRA8888
#define GL_BGRA GL_BGRA_EXT
#else
//#include "GL/glext.h"
#endif
#define GL_COMPRESSED_RGB_S3TC_DXT1 GL_COMPRESSED_RGB_S3TC_DXT1_EXT
#define GL_COMPRESSED_RGBA_S3TC_DXT5 GL_COMPRESSED_RGBA_S3TC_DXT5_EXT
#define FMT_BGR8 0x321
#define FMT_ARGB8 0x4321
#define FMT_V8U8 0xF8E8
void ResampleBGR(uint8_t *data, int size);
void ResampleBGRA(uint8_t *data, int size);
class Texture
{
public:
int width;
int height;
GLuint id;
GLuint target;
GLuint type;
GLuint fmt;
GLuint infmt;
Texture();
~Texture();
bool Create(int w, int h);
void Bind();
void SetWrap(int wrap);
void SetFilter(int min, int mag);
void Upload(GLint level, GLuint format, const void *data);
void Upload(GLint level, GLuint iformat, GLuint format, GLuint tp, const void *data);
void Upload(GLint level, int w, int h, const void *data);
void UploadCompressed(GLuint iformat, int size, const void *data);
};