🦀 Rust + wgpu 开发补充
什么是 wgpu?
wgpu 是 Rust 实现的 WebGPU 标准,是 Firefox、Servo 和 Deno 中 WebGPU 集成的核心。它提供跨平台、安全的纯 Rust 图形 API,在 Vulkan、Metal、D3D12、D3D11 和 OpenGL ES 上原生运行,在 WASM 上运行于 WebGPU 之上。
核心特点
- 跨平台: Windows、macOS、Linux、Android、Web (WASM)
- 零成本抽象: 接近原生 API 性能
- 类型安全: Rust 的所有权和生命周期保证
- 统一 API: 一套代码跑遍所有平台
快速开始 (60秒)
# 1. 安装 Rust (1.80+)
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
# 2. 克隆示例
git clone https://github.com/gfx-rs/wgpu && cd wgpu
# 3. 运行原生 Demo
cargo run --bin wgpu-examples -- hello-triangle
# 4. 运行 Web 版本 (相同代码!)
cargo xtask run-wasm
推荐教程
| 教程 | 链接 | 特点 |
|---|
| Learn WGPU | https://sotrh.github.io/learn-wgpu/ | 最系统的中文教程 |
| Learn WebGPU (C++) | https://eliemichel.github.io/LearnWebGPU/ | 也适用于理解 wgpu 概念 |
| 官方 Examples | https://wgpu.rs/examples/ | 交互式示例 |
| Beginner Guide | https://zdgeier.com/wgpuintro.html | 零基础入门 |
wgpu 相关项目
| 项目 | 描述 |
|---|
| wgpu | 官方 Rust 实现 (github.com/gfx-rs/wgpu) |
| naga | 着色器翻译器 (WGSL/GLSL/SPIR-V) |
| deno_webgpu | Deno 运行时的 WebGPU 支持 |
| bevy | Rust 游戏引擎 (使用 wgpu) |
| iced | Rust GUI 框架 (使用 wgpu) |
🐹 Go + WebGPU 开发
Go WebGPU 方案
1. go-webgpu (FFI 绑定)
使用纯 Go FFI 绑定 wgpu-native,无需 CGO。
架构:
你的 Go 应用
↓
go-webgpu (Zero CGO, Pure Go FFI)
↓
wgpu-native (Rust WebGPU)
↓
Vulkan / Metal / DX12 / OpenGL
快速开始:
package main
import (
"log"
"github.com/go-webgpu/webgpu"
)
func main() {
// 初始化
if err := webgpu.Init(); err != nil {
log.Fatal(err)
}
// 创建实例
instance, err := webgpu.CreateInstance(nil)
if err != nil {
log.Fatal(err)
}
defer instance.Release()
// 请求适配器
adapter, err := instance.RequestAdapter(nil)
if err != nil {
log.Fatal(err)
}
defer adapter.Release()
// 请求设备
device, err := adapter.RequestDevice(nil)
if err != nil {
log.Fatal(err)
}
defer device.Release()
log.Println("WebGPU 初始化成功!")
}
链接: https://pkg.go.dev/github.com/go-webgpu/webgpu
2. GoGPU (纯 Go 实现)
如果你想要 100% 纯 Go 的 WebGPU 实现(无原生依赖),可以查看 GoGPU 项目:
| 项目 | 描述 |
|---|
| gogpu/wgpu | 纯 Go WebGPU 实现 |
| gogpu/naga | 纯 Go 着色器编译器 (WGSL/SPIR-V) |
| gogpu/gogpu | 高级 GPU 计算框架 |
| gogpu/gg | 纯 Go 图形库 |
链接: https://github.com/gogpu
wgpu vs WebGPU (浏览器) 选择指南
| 特性 | wgpu (Rust) | WebGPU (浏览器) |
|---|
| 运行环境 | 原生桌面 + Web | 浏览器 |
| 语言 | Rust | JavaScript/TypeScript |
| 性能 | 原生性能 | 浏览器沙盒内 |
| 部署 | 独立应用 | Web 页面 |
| 文件访问 | 完整访问 | 受限于浏览器安全 |
选择 wgpu (Rust) 如果:
- 需要最高性能
- 开发桌面应用
- 需要文件系统访问
- 喜欢 Rust 的类型安全
选择浏览器 WebGPU 如果:
- 需要即开即用
- 跨平台 Web 部署
- 与 Web 生态集成
- 快速原型开发
补充内容时间:2026-03-07 | 小凯