1 个不稳定版本
0.0.5 | 2022年10月21日 |
---|---|
0.0.4 |
|
0.0.3 |
|
0.0.2 |
|
0.0.1 |
|
#222 in 多媒体
700KB
17K SLoC
Fluffl
什么是fluffl?
fluffl是一个媒体层,提供了一个非常简单但跨平台的界面,在桌面和wasm目标之间。它建立在glow OpenGL绑定之上。
为什么选择fluffl?
如果您需要一个提供音频、图形和可能网络功能的简单层/界面,那么这个crate就是为您准备的。在界面方面,它类似于SDL(您实际上可以使用* SDL),但它不依赖于wasm32-unknown-emscripten
目标。据我所知,emscripten目标已被视为已弃用,并打算最后淘汰。相反,当为浏览器构建时,此crate使用首选的wasm32-unkown-unknown
目标。
支持的后端
- 对于网页,它使用
WEBGL
和WEBAUDIO
- 对于桌面
- 如果选择
SDL2
进行窗口化- 音频选项是
SDL2
但启用了AUDIO_SUBSYTEM
- 音频选项是
- 如果选择
GLUTIN
进行窗口化- 音频选项是
ALSA
- 在linux上WASAPI
- 在windows上
- 音频选项是
- 如果选择
对于桌面目标,GLUTIN
(用于窗口化)和本地音频API默认选择,因为它不需要程序链接到SDL2
动态库,因为SDL2
可能未安装在许多机器上,我们可以在编译时避免链接错误。GLUTIN
似乎使用本地库或直接与操作系统特定的窗口化协议交互(主要协议是Linux上的X窗口协议和Wayland)
使用SDL2
如果您仍然想使用SDL2,请确保它已经实际安装
在Ubuntu上安装SDL2
只需使用apt进行安装
sudo apt install libsdl2-dev
在Windows上安装SDL2
这稍微有点复杂。如果我记得没错,您需要将sdl2.dll文件(您可以从官方网站下载或自行编译)拖放到编译器所在的特殊目录,或者将其放在二进制文件所在的目录中。我的指示目前比较模糊,因为我的主要操作系统是Linux,我需要重新配置Windows的KVM实例来弄清楚具体要做什么。幸运的是,您可以进行交叉编译。
在Linux上交叉编译Windows程序(无论您是否选择了SDL2)
使用MinGW,您实际上可以在Linux上为Windows进行编译。
在Ubuntu上,首先安装mingw
sudo apt install mingw-w64
然后使用rustup安装mingw工具链
rustup target add x86_64-pc-windows-gnu
最后,要编译您的程序,请执行
cargo build --target=x86_64-pc-windows-gnu
交叉编译的优点是您可以直接在Linux机器上测试Windows的二进制文件,只需在WINE中运行二进制文件即可,它直接运行(商标)。
Wine chads... 我屈服了
一个简单的例子
检查examples
文件夹中的可运行演示。示例的Wasm版本在这里:https://k-c-dacosta.github.io/wasm_bins/examples/audio_ex_1/
一个 breakout 克隆(更复杂)
https://k-c-dacosta.github.io/wasm_bins/examples/brick_demo/
如何运行示例
- 查看
./fluffl/examples
- 选择您要运行的文件(比如说我们想运行brick_demo)
- 在终端中执行
cargo run --exmaple=brick_demo
更新/到目前为止的想法
- 我正在考虑删除
- WebSocket模块(tungstenite)
- Vorbis解码器(lewton)
- MP3解码器(puremp3)
这个库有超过20k行代码。我有一个手动编写的GUI、AudioMixer、线性代数和定点库,内置到库中,我正在考虑将其拆分成其他库。
依赖关系
~6–56MB
~1M SLoC