#pragma once #include "./texture.hpp" #include // fwd typedef struct SDL_Surface SDL_Surface; namespace MM { class Engine; } namespace MM::OpenGL { struct TextureLoaderFile final { std::shared_ptr load(Engine& engine, const std::string& path) const; }; struct TextureLoaderConstBuffer final { std::shared_ptr load(const uint8_t* data, size_t size) const; }; struct TextureLoaderSDLSurface final { std::shared_ptr load(SDL_Surface* surface) const; }; struct TextureLoaderEmpty final { template std::shared_ptr load(Args&& ... args) const { return Texture::createEmpty(std::forward(args)...); } }; } // MM::OpenGL