You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

37 lines
943 B

#ifndef TEXTURE_H
#define TEXTURE_H
#include "declarations.h"
class Texture : public std::enable_shared_from_this<Texture>
{
public:
/// Create a texture, width and height must be a multiple of 2
Texture(int width, int height, int channels, uchar* pixels = NULL);
virtual ~Texture();
/// Enable texture bilinear filter (smooth scaled textures)
virtual void enableBilinearFilter();
/// Get OpenGL texture id
virtual uint getId() const { return m_textureId; }
/// Copy pixels from OpenGL texture
uchar* getPixels();
int getWidth() const { return m_size.width(); }
int getHeight() const { return m_size.height(); }
const Size getSize() const { return m_size; }
const Size& getGlSize() const { return m_glSize; }
protected:
Texture() { }
uint internalLoadGLTexture(uchar* pixels, int channels, int w, int h);
uint m_textureId;
Size m_size;
Size m_glSize;
};
#endif