4个版本
0.0.4 | 2021年1月9日 |
---|---|
0.0.3 | 2021年1月9日 |
0.0.2 | 2021年1月9日 |
0.0.1 | 2021年1月9日 |
在游戏开发中排名第1474
10KB
113 行
纹理包
这个库提供了一个容器来存储纹理,无需手动加载和转换。它还提供了一个单独的纹理访问点,即使它们在容器初始化时未加载。库支持懒加载,按需从文件加载纹理,以及急切加载,在容器初始化时加载所有纹理。
用法
将其添加到您的cargo.toml
[dependencies]
texture_bag = "0.0.1"
准备
首先,您需要创建一个配置文件,列出项目中使用的所有纹理
{
"textures": {
"texture_id": "path_to_texture"
}
}
默认文件名是texture_config.json
,但您可以通过在TextureBag初始化时传递实际名称和路径作为参数之一来更改它。
用法示例
fn main() {
// Some preparation code for proper init
let event_loop = glium::glutin::event_loop::EventLoop::new();
let window_builder = glium::glutin::window::WindowBuilder::new().with_title("Foo");
let context = glium::glutin::ContextBuilder::new().with_depth_buffer(24);
let display = glium::Display::new(window_builder, context, &event_loop).unwrap();
// This call will load all textures from config into memory
let mut texture_bag = TextureBag::init_eager(&display, None);
// Lazy init will load only config data for further operations, no texture loading will be made
let mut texture_bag = TextureBag::init_lazy(&display, None);
// Method returns reference to a texture.
// If texture was not loaded before, method will check config, load texture by path and store it into the bag.
let texture = texture_bag.get_texture(String::from("texture_id"), display);
// This method will remove texture from the bag. Texture can be loaded again by calling get_texture.
texture_bag.forget(String::from("texture_id"));
}
进一步的待办事项和问题
请注意,这个版本基本上是这个项目的alpha版本。API可能会在稳定之前发生变化。进一步的可能的改进
- 目前,texture_id基本上是一个String。我可能需要使其更通用,并支持实现了Display接口的任何类型
- "全或无"加载对小文件数量很好。我需要实现分块加载以支持大型项目。按组加载纹理看起来足够好。
依赖关系
~20–34MB
~392K SLoC