27 个版本
0.3.12 | 2024年7月12日 |
---|---|
0.3.8 | 2024年6月14日 |
0.3.0 | 2023年10月21日 |
0.1.4 | 2023年7月15日 |
#65 in 图形 API
每月 44 次下载
在 2 个 包中使用
235KB
5K SLoC
包含 (Windows DLL, 190KB) examples/c#/bindings/gctex_v13.dll
gctex
gctex 是一个为编码和解码任天堂 GameCube 和 Wii 游戏中使用的纹理格式的 Rust 包。该库提供了 C 绑定,使其在基于 Rust 和 C/C++ 的项目中都非常有用。
用法
Rust
以下示例演示了如何使用 Rust 对 CMPR 格式的纹理进行编码
let width: u32 = 32;
let height: u32 = 32;
let src = vec![0; (width*height*4) as usize];
let dst = gctex::encode(gctex::TextureFormat::CMPR, &src, width, height);
C# 绑定
见 https://github.com/riidefi/RiiStudio/tree/master/source/gctex/examples/c%
byte[] dst = new byte[dst_len];
byte[] src = new byte[src_len];
gctex.Encode(0xE /* CMPR */, dst, src, width, height);
C/C++
见 https://github.com/riidefi/RiiStudio/tree/master/source/gctex/examples/c%2b%2b
#include "gctex.h"
unsigned char dst[dst_len];
unsigned char src[src_len];
rii_encode_cmpr(dst, sizeof(dst), src, sizeof(src), width, height);
相关的头文件在 include/gctex.h
中。
支持的格式
以下列出了所有支持的纹理格式及其相应的编码和解码源。
格式 | 编码源 | 解码源 |
---|---|---|
CMPR | 内置 | Dolphin 模拟器 (SIMD) / Rust 非SIMD 回退 |
I4 | 内置 | 内置 (SIMD (SSE3)) |
I8 | 内置 | Dolphin 模拟器 (SIMD) / Rust 非SIMD 回退 |
IA4 | 内置 | 内置 |
IA8 | 内置 | Dolphin 模拟器 (SIMD) / Rust 非SIMD 回退 |
RGB565 | 内置 | Dolphin 模拟器 (SIMD) / Rust 非SIMD 回退 |
RGB5A3 | 内置 | Dolphin 模拟器 (SIMD) / Rust 非SIMD 回退 |
RGBA8 | 内置 | 内置 (SIMD (SSE3)) |
C4 | - | Dolphin 模拟器 / 无回退 |
C8 | - | Dolphin 模拟器 / 无回退 |
C14 | - | Dolphin 模拟器 / 无回退 |
请注意,I4、I8 和 IA8 格式的 SIMD 纹理解码使用 SSE3 指令,必要时回退到 SSE2(除了 I4),这些是根据 Dolphin 模拟器的纹理解码逻辑实现的。
可选功能
- 为了避免需要 C++ 编译器或运行 C++ 代码,取消设置
cpp_fallback
功能以回退到非 SIMD Rust 实现的 I4/I8/IA8/RGB565/RGB5A3 解码。 - 对于调试,可以禁用
simd
功能以使用纯、标准 Rust。
许可证
这个动态链接库是根据GPLv2发布的。
依赖项
约440-600KB
约12K SLoC