7 个版本
0.7.0 | 2024年2月19日 |
---|---|
0.6.0 | 2022年2月4日 |
0.0.5 | 2021年5月29日 |
0.0.3 | 2020年2月5日 |
0.0.2 | 2020年1月31日 |
#1028 在 解析器实现
每月50 次下载
31KB
528 行
nutexb
Nutexb 是《超级 Smash Bros. Ultimate》和一些其他游戏使用的图像纹理格式。扩展名 ".nutexb" 可能代表 "Namco Universal Texture Binary"。
图像数据存储在连续的内存区域中,元数据存储在 layer_mipmaps 和 footer 中。在 [NutexbFormat] 中支持的图像格式使用与 DDS 文件相同的标准压缩和非压缩格式。图像数据的数组和 mipmaps 存储在经过称为 swizzling 的过程优化的 Tegra X1 内存布局中。此库提供读取和写入 nutexb 文件以及处理 swizzled 图像数据的工具。
读取
使用 NutexbFile::read 或 NutexbFile::read_from_file 读取 [NutexbFile]。在使用应用程序需要标准行主序内存布局的情况下,需要先使用 NutexbFile::deswizzled_data 对图像数据进行 deswizzling。
use nutexb::NutexbFile;
let nutexb = NutexbFile::read_from_file("col_001.nutexb")?;
let surface_data = nutexb.deswizzled_data();
写入
创建 [NutexbFile] 的最简单方法是在使用 "ddsfile"
和 "image"
功能时分别调用 NutexbFile::from_dds 和 NutexbFile::from_image。要手动指定表面尺寸和数据,请使用 NutexbFile::from_surface。
use nutexb::NutexbFile;
let image = image::open("col_001.png")?;
let nutexb = NutexbFile::from_image(&image.to_rgba8(), "col_001")?;
nutexb.write_to_file("col_001.nutexb")?;
use nutexb::NutexbFile;
let mut reader = std::io::BufReader::new(std::fs::File::open("cube.dds")?);
let dds = ddsfile::Dds::read(&mut reader)?;
let nutexb = NutexbFile::from_dds(&dds, "cube")?;
nutexb.write_to_file("col_001.nutexb")?;
依赖项
~1.6–5MB
~55K SLoC