18个稳定版本
2.222.3 | 2024年7月29日 |
---|---|
2.217.0 |
|
2.206.7 | 2024年7月29日 |
2.206.5 | 2024年3月19日 |
0.1.6 |
|
在游戏开发类别中排名第34
每月下载量278次
用于 2 crates
750KB
19K SLoC
libfmod
FMOD Engine的Rust绑定。通过Rust代码包装FFI,使其更安全、更符合Rust风格,并抽象掉不舒适的C接口。
安装
选择FMOD支持的版本之一
libfmod | FMOD |
---|---|
2.222 | 2.02.22 |
2.206 | 2.02.06 |
[dependencies]
libfmod = "~2.206"
FMOD开发库
FMOD开发库不能作为此crate的一部分集成和分发。您应从: https://www.fmod.com/download 下载并安装它,考虑到您的平台。
Windows (MSVC)
您应手动为MSVC链接器提供FMOD开发库。从默认FMOD Engine安装文件夹复制以下文件到Rust可以找到这些库的文件夹之一:
.\api\core\lib\x64\fmod.dll
.\api\core\lib\x64\fmod_vc.lib
.\api\studio\lib\x64\fmodstudio.dll
.\api\studio\lib\x64\fmodstudio_vc.lib
C:\Program Files (x86)\FMOD SoundSystem\FMOD Studio API Windows\
.\target\debug\deps\
%USERPROFILE%\.rustup\toolchains\stable-x86_64-pc-windows-msvc\lib\rustlib\x86_64-pc-windows-msvc\lib
⚠️ 当您发布应用程序时,请确保将FMOD *.dll复制到与您的 *.exe 文件相同的目录中。
Linux / macOS
在您可以使用libfmod之前,必须在您的计算机上安装FMOD库。Unix中动态库的标准位置是 /usr/local/lib
和 /usr/lib
。
您也可以将文件放置在文件系统的非标准位置,但您必须以这种方式创建到该位置的符号链接
ln -s ~/FMOD/api/core/lib/libfmod.dylib /usr/local/lib/libfmod.dylib
ln -s ~/FMOD/api/studio/lib/libfmodstudio.dylib /usr/local/lib/libfmodstudio.dylib
您还可以将文件放置在Rust默认搜索动态库的位置
./target/debug/
./target/debug/deps/
~/.rustup/toolchains/<your_toolchain>/lib/
~/lib/
⚠️ 当您发布应用程序时,请确保将FMOD库复制到与您的可执行文件相同的目录中。
为什么没有构建选项?
- FMOD不允许静态链接
- 此crate未实现动态加载,仅实现动态链接
- 没有简单的方法可以控制Rust如何搜索库
因此,我们可以提供一些配置(例如“FMOD_SDK”位置变量),但这并不有用,因为您仍然必须按上述方式安装FMOD库。
功能
您可以根据需要启用或禁用crate功能
flags
(默认)提供基于 bitflags crate的C风格标志,并基于Rust API进行优化debug
链接 FMOD 库的日志版本(fmodL.dll、fmodstudioL.dll 等)
入门指南
开始使用最简单的方式是初始化 FMOD 系统,加载一个声音,并播放它。播放声音不会阻塞应用程序,所有函数都会立即执行,因此我们应该轮询声音是否完成。
use libfmod::{Error, System, Init, Mode};
fn test_playing_sound() -> Result<(), Error> {
let system = System::create()?;
system.init(512, Init::NORMAL, None)?;
let sound = system.create_sound("./path/to/my/sound.ogg", Mode::DEFAULT, None)?;
let channel = system.play_sound(sound, None, false)?;
while channel.is_playing()? {
// do something else
}
system.release()
}
更多示例请查看 tests 文件夹。
贡献
此库由 libfmod-gen 生成,无法手动更改。
但是,理解生成器的工作原理可能相当具有挑战性。因此,您可以手动更改 libfmod,以在 pull request 中展示最终代码应该如何呈现。