SimpleEngine/include/simpleengine/gfx/texture.h

81 lines
2.1 KiB
C
Raw Normal View History

#pragma once
#ifdef __linux__
#include <GL/glew.h>
#include <GL/gl.h>
#else
#include <gl/glew.h>
#include <gl/gl.h>
#endif
#include <GLFW/glfw3.h>
#include <glm/glm.hpp>
#ifdef __linux__
#include <SOIL2.h>
#else
#include <SOIL2/SOIL2.h>
#endif
#include <stdexcept>
#include <vector>
#include <iostream>
namespace simpleengine::gfx {
class Texture {
private:
unsigned char* img_data;
unsigned int texture_id;
unsigned int image_type;
public:
/**
* @brief The type of the texture
*
*/
enum Type {
TexT_DIFFUSE,
TexT_SPECULAR
};
int height;
int width;
int channels;
2021-12-09 21:24:26 +00:00
float shine_damper = 1.f;
float reflectivity = 0.f;
Type type;
/**
* @brief Construct a new Texture object from a path.
*
* @param path The path of the image for the Texture.
* @param img_2d Whether or not the texture is 2D.
* @param mipmap Whether or not to generate mipmaps for this texture.
*/
Texture(const char* path, bool img_2d = true, bool mipmap = true);
/**
* @brief Construct a new Texture object from the loaded file buffer.
*
* @param buffer The bytes of the loaded file.
* @param buffer_length The length of the buffer.
* @param img_2d Whether or not the texture is 2D.
* @param mipmap Whether or not to generate mipmaps for this texture.
*/
Texture(const unsigned char *const buffer, int buffer_length, bool img_2d = true, bool mipmap = true);
/**
* @brief Construct a new Texture object from the loaded file buffer.
*
* @param buffer The bytes of the loaded file.
* @param img_2d Whether or not the texture is 2D.
* @param mipmap Whether or not to generate mipmaps for this texture.
*/
Texture(std::vector<unsigned char> buffer, bool img_2d = true, bool mipmap = true);
void bind() const;
unsigned int get_texture_id() const;
};
}