#android #ios #wgpu #macos-ios #surface-view

app-surface

将 wgpu 集成到现有的 iOS 和 Android 应用程序中

13 个版本 (2 个稳定版)

1.1.0 2024 年 8 月 4 日
1.0.0 2024 年 7 月 19 日
0.4.4 2024 年 7 月 13 日
0.4.2 2024 年 4 月 29 日
0.3.1 2023 年 7 月 22 日

#118图形 API

Download history 171/week @ 2024-04-29 9/week @ 2024-05-06 15/week @ 2024-05-20 13/week @ 2024-06-03 13/week @ 2024-06-10 19/week @ 2024-06-17 2/week @ 2024-06-24 255/week @ 2024-07-08 138/week @ 2024-07-15 31/week @ 2024-07-22 128/week @ 2024-07-29 39/week @ 2024-08-05 14/week @ 2024-08-12

每月 217 次下载

MIT 许可证

26KB
577

App 中的 wgpu

Minimum Rust Version Build Status MIT License

将 wgpu 集成到现有的 iOS 或 Android 应用程序中。

wgpu 不依赖于任何窗口程序,因此它不提供窗口创建和管理功能。只有在创建基于窗口的 Surface 时,可能需要实现 raw-window-handle 抽象接口的参数 (可能需要 因为在 iOS/macOS 上,Surface 的实例可以直接通过 CAMetalLayer 创建)。wgpu 示例中使用的 winit 是一个跨平台的窗口创建和管理软件包,它实现了 raw-window-handle 抽象接口。它将接管整个应用程序的窗口管理和事件循环,对于游戏应用程序,wgpu + winit 的组合非常合适。

然而,大量非游戏应用程序也需要使用图形 API(如图表、图像过滤器等)。这些应用程序可能需要大量系统组件,以及能够自由控制各种输入设备(如笔、运动传感器)的能力。因此,在不使用第三方窗口管理库的情况下将这些应用程序中的 wgpu 集成进去将非常有用。

中文版文档

屏幕截图

wgpu in iOS wgpu in Android

https://github.com/jinleili/wgpu-in-app/assets/1001342/9209b81b-f336-4322-986e-70dd9bb155c3

iOS | iPadOS | visionOS

添加目标

# Add Apple device (iOS | iPadOS | visionOS) target
# Since iPhone 5 and later are all 64-bit devices, `armv7s-apple-ios` and `armv7-apple-ios` are not required.
rustup target add aarch64-apple-ios

# Add Apple Simulator target
# M1+ Mac
rustup target add aarch64-apple-ios-sim

为 Apple 真实设备编译

# Build for iOS | iPadOS
sh ./apple_lib_build.sh --release

然后,使用 Xcode 打开 Apple/wgpu_in_App.xcodeproj 并在 iPhone、iPad 上运行。

为 visionOS 模拟器编译

sh ./apple_lib_build.sh aarch64-apple-ios-sim --release

然后,使用 Xcode 15 Beta 2+ 打开 Apple/wgpu_in_App.xcodeproj 并在 visionOS 模拟器上运行。

关于 Rust 和 Swift 的交互

Rust 和 iOS 之间传递原始数据

Rust 和 iOS 之间传递所有者对象

通过 FFI 发送boxed trait

Android

设置 Android 环境

假设您的计算机已经安装了Android Studio,请转到 Android Studio > 工具 > SDK 管理器 > Android SDK > SDK 工具。检查以下选项进行安装,然后点击确定。

  • Android SDK 构建工具
  • Android SDK 命令行工具
  • NDK(并行安装)

然后,设置以下两个环境变量

export ANDROID_SDK_ROOT=$HOME/Library/Android/sdk
# Replace the NDK version number with the version you installed
export NDK_HOME=$ANDROID_SDK_ROOT/ndk/23.1.7779620

安装 cargo 子命令

# from crates.io
cargo install cargo-so
# frome source code
cargo install --path cargo-so

构建

# Add build targets
# Since simulator and virtual devices only support GLES, `x86_64-linux-android` and `i686-linux-android` targets are not necessary
rustup target add aarch64-linux-android armv7-linux-androideabi

# Build
sh ./android_lib_build.sh --release

桌面

# Use primary backend (metal vulkan or dx12, depend on your computer OS).
cargo run
# Use OpenGL backend (platforms other than Linux, need to add the `angle` feature).
# https://github.com/gfx-rs/wgpu/pull/2461
WGPU_BACKEND=gl cargo run --features=angle
# Use Vulkan backend (on macOS, need to add the `vulkan-portability` feature)
# https://github.com/gfx-rs/wgpu/pull/2488
WGPU_BACKEND=vk cargo run --features=vulkan-portability
# Then, press 0, 1, 2, 3, 4 keys change running example.

依赖项

~6–43MB
~740K SLoC