
SFML 官方示例
SFML 官方示例 的 JavaScript 移植,包含图形、原生窗口、输入、音频和网络等 24 个示例。Android 尚未移植。
快速开始
在仓库根目录执行:
npm ci
cd examples/official
node tennis/Tennis.cjs下文命令均在 examples/official 中运行,各脚本会自动加载所需资源。图形示例需要显示服务与 OpenGL 窗口支持。
浏览:图形 · 输入与事件 · 音频 · 网络 · 平台集成
图形
输入与事件
音频
录音示例需要麦克风及系统录音权限。
网络
sockets 和 VoIP 各开两个终端,分别选择服务端、客户端;本机测试填写 127.0.0.1。
平台集成
编译 nodegl 需要 CMake、C++ 编译器和 OpenGL 开发库,Linux 可安装 libgl1-mesa-dev。Vulkan 还需要 Vulkan 加载器和支持 4 倍各向异性过滤的驱动。

OpenGL 窗口中的六色旋转立方体
操作 · 拖动窗口边缘调整大小,Esc 或关闭窗口退出
node window/Window.cjs
macOS、Linux、Windows · 根目录的 npm ci 会安装 @wettstein/nodegl

SFML 背景、文字与 OpenGL 纹理立方体混合绘制
操作 · 鼠标移动立方体,Enter 切换 mipmap,Space 切换 sRGB,Esc 退出
node opengl/OpenGL.cjs
macOS、Linux、Windows · 根目录的 npm ci 会安装 @wettstein/nodegl

Vulkan 渲染的旋转纹理立方体
操作 · 鼠标移动立方体,拖动窗口边缘调整大小,Esc 或关闭窗口退出
node vulkan/Vulkan.cjs
Linux x64(X11)或 Windows x64、Node.js 20+ · npm ci --prefix vulkan --ignore-scripts
Vulkan 面向 x64 的 Linux/X11 和 Windows,使用 nvk 0.8.0,需要 Vulkan 加载器及支持 4 倍各向异性过滤的驱动与设备。SFML 负责窗口、事件和 surface,nvk 直接调用 Vulkan,无自定义原生桥接;SFML Graphics 仍使用 OpenGL。SFML 在编译期不支持 macOS Vulkan 集成,仅安装 MoltenVK 无法启用。Linux/X11 和 Windows 的原生绘制及交互验证均已通过。操作与要求见 平台集成说明。

macOS 原生控件与嵌入的 SFML 视图
操作 · Update 或 Enter 更新文字,Visible 切换标识显隐,旋钮控制旋转,Color 选择背景色,Up/Down 缩放;关闭窗口、Cmd+Q 或 Ctrl+C 退出
node cocoa/Cocoa.cjs
macOS · npm ci --prefix cocoa --ignore-scripts

Windows 原生窗口中的两个 SFML 动画视图与 Quit 按钮
操作 · Quit、关闭窗口或 Ctrl+C 退出
node win32/Win32.cjs
Windows x64、Node.js 20+ · npm ci --prefix win32 --ignore-scripts

两个嵌入的 SFML 窗口,以不同速度旋转的立方体
操作 · 任意键、关闭窗口或 Ctrl+C 退出
node X11/X11.cjs
带 X11 显示服务的 Linux · 根目录的 npm ci 会安装 x11 和 @wettstein/nodegl
来源与许可证
示例移植自 SFML,源码版本与资源来源记录在 provenance.json。
- SFML 源码:zlib 许可证。
- 上游素材与作者:asset_licenses.md。
- Noto 字体:SIL Open Font License 1.1。
- 移植的 stb Perlin 实现:MIT/公有领域双许可证。








