#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 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& 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 }