2026-03-20 02:35:35 +08:00
|
|
|
|
# TextureLoader
|
|
|
|
|
|
|
|
|
|
|
|
**命名空间**: `XCEngine::Resources`
|
|
|
|
|
|
|
|
|
|
|
|
**类型**: `class`
|
|
|
|
|
|
|
|
|
|
|
|
**描述**: 纹理资源加载器,负责从文件加载纹理资源。
|
|
|
|
|
|
|
|
|
|
|
|
**继承自**: `IResourceLoader`
|
|
|
|
|
|
|
|
|
|
|
|
## 概述
|
|
|
|
|
|
|
|
|
|
|
|
`TextureLoader` 是 XCEngine 中的纹理资源加载器实现类,继承自 `IResourceLoader`。它支持从多种图像格式加载纹理数据,包括 PNG、JPG、TGA、BMP、GIF、HDR 和 DDS。
|
|
|
|
|
|
|
|
|
|
|
|
## 头文件
|
|
|
|
|
|
|
|
|
|
|
|
```cpp
|
|
|
|
|
|
#include <XCEngine/Resources/TextureLoader.h>
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
## 支持的格式
|
|
|
|
|
|
|
|
|
|
|
|
| 扩展名 | 描述 |
|
|
|
|
|
|
|--------|------|
|
|
|
|
|
|
| `png` | PNG 图像 |
|
|
|
|
|
|
| `jpg` / `jpeg` | JPEG 图像 |
|
|
|
|
|
|
| `tga` | TGA 图像 |
|
|
|
|
|
|
| `bmp` | BMP 图像 |
|
|
|
|
|
|
| `gif` | GIF 图像 |
|
|
|
|
|
|
| `hdr` | HDR 图像 |
|
|
|
|
|
|
| `dds` | DDS 压缩纹理 |
|
|
|
|
|
|
|
|
|
|
|
|
## 公共方法
|
|
|
|
|
|
|
|
|
|
|
|
| 方法 | 描述 |
|
|
|
|
|
|
|------|------|
|
2026-03-22 14:42:27 +08:00
|
|
|
|
| [TextureLoader](constructor.md) | 构造函数 |
|
|
|
|
|
|
| [~TextureLoader](destructor.md) | 析构函数 |
|
2026-03-26 01:57:22 +08:00
|
|
|
|
| `GetResourceType()` | 返回 `ResourceType::Texture` |
|
|
|
|
|
|
| `GetSupportedExtensions()` | 获取支持的扩展名列表 |
|
|
|
|
|
|
| `CanLoad()` | 检查是否支持加载指定路径的纹理 |
|
|
|
|
|
|
| `Load()` | 加载纹理资源 |
|
|
|
|
|
|
| `GetDefaultSettings()` | 获取默认导入设置 |
|
2026-03-20 02:35:35 +08:00
|
|
|
|
|
|
|
|
|
|
### GetResourceType
|
|
|
|
|
|
|
|
|
|
|
|
```cpp
|
|
|
|
|
|
ResourceType GetResourceType() const override
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
返回资源的类型标识。
|
|
|
|
|
|
|
|
|
|
|
|
**返回值**: `ResourceType::Texture`
|
|
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
|
|
|
|
|
|
|
### GetSupportedExtensions
|
|
|
|
|
|
|
|
|
|
|
|
```cpp
|
|
|
|
|
|
Containers::Array<Containers::String> GetSupportedExtensions() const override
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
返回所有支持的纹理文件扩展名列表。
|
|
|
|
|
|
|
|
|
|
|
|
**返回值**: 包含所有支持扩展名的字符串数组。
|
|
|
|
|
|
|
|
|
|
|
|
**支持的扩展名**: `png`, `jpg`, `jpeg`, `tga`, `bmp`, `gif`, `hdr`, `dds`
|
|
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
|
|
|
|
|
|
|
### CanLoad
|
|
|
|
|
|
|
|
|
|
|
|
```cpp
|
|
|
|
|
|
bool CanLoad(const Containers::String& path) const override
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
检查指定的文件路径是否可以被此加载器处理。
|
|
|
|
|
|
|
|
|
|
|
|
**参数**:
|
|
|
|
|
|
- `path`: 文件路径
|
|
|
|
|
|
|
|
|
|
|
|
**返回值**: 如果文件扩展名受支持返回 `true`,否则返回 `false`。
|
|
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
|
|
|
|
|
|
|
### Load
|
|
|
|
|
|
|
|
|
|
|
|
```cpp
|
|
|
|
|
|
LoadResult Load(const Containers::String& path, const ImportSettings* settings = nullptr) override
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
从指定路径加载纹理资源。
|
|
|
|
|
|
|
|
|
|
|
|
**参数**:
|
|
|
|
|
|
- `path`: 纹理文件路径
|
|
|
|
|
|
- `settings`: 导入设置(可选,当前未使用)
|
|
|
|
|
|
|
|
|
|
|
|
**返回值**: 加载成功返回包含 `Texture` 指针的 `LoadResult`;失败返回包含错误信息的 `LoadResult`。
|
|
|
|
|
|
|
|
|
|
|
|
**实现说明**: 当前实现仅读取文件数据和创建基础 `Texture` 对象,不解析实际的图像格式数据。
|
|
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
|
|
|
|
|
|
|
### GetDefaultSettings
|
|
|
|
|
|
|
|
|
|
|
|
```cpp
|
|
|
|
|
|
ImportSettings* GetDefaultSettings() const override
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
获取默认的纹理导入设置。
|
|
|
|
|
|
|
|
|
|
|
|
**返回值**: `nullptr`(当前无默认设置)
|
|
|
|
|
|
|
|
|
|
|
|
## 使用示例
|
|
|
|
|
|
|
|
|
|
|
|
```cpp
|
|
|
|
|
|
#include <XCEngine/Resources/TextureLoader.h>
|
|
|
|
|
|
#include <XCEngine/Resources/ResourceManager.h>
|
|
|
|
|
|
|
|
|
|
|
|
using namespace XCEngine::Resources;
|
|
|
|
|
|
|
|
|
|
|
|
// 通过 ResourceManager 加载纹理
|
|
|
|
|
|
ResourceHandle<Texture> tex = ResourceManager::Get().Load<Texture>("textures/player.png");
|
|
|
|
|
|
|
|
|
|
|
|
// 检查加载器是否支持特定格式
|
|
|
|
|
|
TextureLoader loader;
|
|
|
|
|
|
if (loader.CanLoad("assets/image.dds")) {
|
|
|
|
|
|
// 可以加载 DDS 格式
|
|
|
|
|
|
}
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
## 相关文档
|
|
|
|
|
|
|
|
|
|
|
|
- [Texture](../texture/texture.md) - 纹理资源类
|
|
|
|
|
|
- [IResourceLoader](../iloader/iloader.md) - 资源加载器基类
|
2026-03-26 01:57:22 +08:00
|
|
|
|
- [ResourceManager](../resource-manager/resource-manager.md) - 资源管理器
|
2026-03-20 02:35:35 +08:00
|
|
|
|
- [Resources 总览](../resources.md) - 返回模块总览
|
|
|
|
|
|
|
|
|
|
|
|
## 实现说明
|
|
|
|
|
|
|
|
|
|
|
|
**注意**: `Load()` 方法当前为示例实现,不解析 PNG/JPG 等格式的实际图像像素数据,仅创建空 `Texture` 对象并设置基础资源参数(name、path、guid、memorySize)。实际图像数据解析需要在后续版本中实现。
|