Extra2D/include/assets/loaders/texture_loader.h

40 lines
939 B
C++

#pragma once
#include <assets/asset_loader.h>
#include <renderer/texture.h>
namespace extra2d {
/**
* @brief 纹理资源加载器
*
* 支持从文件或内存加载纹理资源
*/
class TextureLoader : public AssetLoader<Texture> {
public:
/**
* @brief 从文件加载纹理
* @param path 文件路径
* @return 纹理指针,失败返回 nullptr
*/
Ptr<Texture> load(const std::string& path) override;
/**
* @brief 从内存加载纹理
* @param data 图像数据
* @param size 数据大小
* @return 纹理指针,失败返回 nullptr
*/
Ptr<Texture> loadFromMemory(const uint8_t* data, size_t size) override;
/**
* @brief 获取支持的文件扩展名
* @return 扩展名列表
*/
std::vector<std::string> getExtensions() const override {
return {".png", ".jpg", ".jpeg", ".bmp", ".tga"};
}
};
} // namespace extra2d