64 lines
1.1 KiB
C++
64 lines
1.1 KiB
C++
#pragma once
|
|
|
|
#include "render/OpenGlExtensions.h"
|
|
#include "utils/Utils.h"
|
|
|
|
#if defined EMSCRIPTEN || defined __ANDROID__
|
|
#define PNG_ENABLED
|
|
#endif
|
|
|
|
namespace ZL
|
|
{
|
|
|
|
struct TextureDataStruct {
|
|
size_t width;
|
|
size_t height;
|
|
std::vector<char> data;
|
|
|
|
enum Format {
|
|
R8, // Для шрифтов (GL_RED)
|
|
RGB, // BS_24BIT
|
|
RGBA // BS_32BIT
|
|
};
|
|
|
|
|
|
enum MipmapType {
|
|
NONE,
|
|
GENERATE
|
|
};
|
|
|
|
Format format = RGBA;
|
|
MipmapType mipmap = GENERATE;
|
|
};
|
|
class Texture
|
|
{
|
|
size_t width = 0;
|
|
size_t height = 0;
|
|
GLuint texID = 0;
|
|
|
|
public:
|
|
|
|
Texture(const TextureDataStruct& texData);
|
|
|
|
//Cubemap texture:
|
|
Texture(const std::array<TextureDataStruct, 6>& texDataArray);
|
|
|
|
~Texture();
|
|
|
|
GLuint getTexID();
|
|
|
|
size_t getWidth();
|
|
size_t getHeight();
|
|
|
|
|
|
};
|
|
|
|
TextureDataStruct CreateTextureDataFromBmp24(const std::string& fullFileName, const std::string& ZIPFileName="");
|
|
TextureDataStruct CreateTextureDataFromBmp32(const std::string& fullFileName, const std::string& ZIPFileName="");
|
|
#ifdef PNG_ENABLED
|
|
TextureDataStruct CreateTextureDataFromPng(const std::string& fullFileName, const std::string& ZIPFileName = "");
|
|
#endif
|
|
|
|
|
|
}
|