#pragma once #include "OpenGlExtensions.h" #include "Utils.h" #ifdef EMSCRIPTEN #define PNG_ENABLED #endif namespace ZL { struct TextureDataStruct { size_t width; size_t height; std::vector data; enum BitSize { BS_24BIT, BS_32BIT }; BitSize bitSize; }; 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 }