2个版本
0.1.1 | 2019年12月20日 |
---|---|
0.1.0 | 2019年12月19日 |
#670 in 图形API
22KB
246 代码行
ktx-async
异步KTX纹理格式读取器
功能
- 异步IO API
- 与tokio兼容
- 支持KTX 1.1
待办事项
- 自定义缓冲区分配(例如:OpenGL像素缓冲区对象)
- 添加
std::io::Read
支持(?) - KTX 2.0(?) 规范
示例
use ktx_async as ktx;
use tokio::fs::File;
use tokio::stream::StreamExt as _;
// In async code
// Open AsyncRead
let file = File::open("example.ktx").await.unwrap();
// Start decoding KTX
let decoder = ktx::Decoder::new(file);
let (info, mut stream) = decoder.read_async().await.unwrap();
// create and bind a texture object ...
// Get all the frames from the stream
while let Some((frame, buf)) = stream.next().await.map(|r| r.unwrap()) {
unsafe {
gl::TexImage2D(gl::TEXTURE_2D,
frame.level as GLint,
info.gl_internal_format as GLint,
frame.pixel_width as GLsizei,
frame.pixel_height as GLsizei,
/*border*/ 0,
info.gl_format as GLenum,
info.gl_type as GLenum,
buf.as_ptr() as *const GLvoid);
}
}
开发
构建
cargo build
运行测试
cargo test
运行示例
cargo run --example basic
许可证
本项目采用MIT许可证
参考
依赖
~8.5MB
~159K SLoC