#fmod #engine #applications #integrating #gamedev #idiomatic #manual

libfmod

一个用于将FMOD引擎集成到Rust应用程序的库包装器

18个稳定版本

2.222.3 2024年7月29日
2.217.0 2023年9月18日
2.206.7 2024年7月29日
2.206.5 2024年3月19日
0.1.6 2022年2月23日

游戏开发类别中排名第34

Download history · Rust 包仓库 19/week @ 2024-04-21 · Rust 包仓库 24/week @ 2024-04-28 · Rust 包仓库 158/week @ 2024-05-05 · Rust 包仓库 17/week @ 2024-05-12 · Rust 包仓库 302/week @ 2024-05-19 · Rust 包仓库 47/week @ 2024-05-26 · Rust 包仓库 64/week @ 2024-06-02 · Rust 包仓库 37/week @ 2024-06-09 · Rust 包仓库 14/week @ 2024-06-16 · Rust 包仓库 8/week @ 2024-07-14 · Rust 包仓库 4/week @ 2024-07-21 · Rust 包仓库 252/week @ 2024-07-28 · Rust 包仓库 14/week @ 2024-08-04 · Rust 包仓库

每月下载量278
用于 2 crates

MIT许可证

750KB
19K SLoC

libfmod

Crates.io Version LICENSE MSRV

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 中展示最终代码应该如何呈现。

依赖关系