happydpc / wgpu_on_app

Integrate wgpu on iOS | Android Apps without using winit

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

wgpu on App

Integrate wgpu on your existing iOS | Android apps.

winit-free mode can useful for integrating wgpu into existing apps to implement some graphics features.

Screenshot

wgpu on iOS wgpu on Android

iOS

Add build target

Since iPhone 5 and later are 64-bit devices, add aarch64-apple-ios and aarch64-apple-ios-sim is enough.

# Add for iPhone 
rustup target add aarch64-apple-ios 
# Add for iOS simulator
rustup target add aarch64-apple-ios-sim

Build and run

Build for iOS device and simulator

cargo build --target aarch64-apple-ios && cargo build --target aarch64-apple-ios-sim

Then, Open iOS/wgpu_on_iOS.xcodeproj with Xcode, select wgpu_phone scheme run on iOS device, wgpu_simulator scheme run on simulator.

About Rust and Swift Interaction

Passing Primitive Data Between Rust and iOS

Passing Owned Objects between Rust and iOS

Sending a boxed trait over FFI

Android

Set up Android environment

Assuming your computer already has Android Studio installed, go to Android Studio > Tools > SDK Manager > Android SDK > SDK Tools. Check the following options for installation and click OK.

  • Android SDK Build-Tools
  • Android SDK Command-line Tools
  • NDK(Side by side)

Then, set two following environment variables:

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

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

Install cargo so subcommand

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

Build

# currently, multi-target build only useable on the nightly channel
cargo so b --target aarch64-linux-android --release
cargo so b --target armv7-linux-androideabi --release

# copy .so files to android project jniLibs folder
cp target/aarch64-linux-android/release/libwgpu_on_app.so android/app/libs/arm64-v8a/libwgpu_on_app.so
cp target/armv7-linux-androideabi/release/libwgpu_on_app.so android/app/libs/armeabi-v7a/libwgpu_on_app.so

About

Integrate wgpu on iOS | Android Apps without using winit


Languages

Language:Rust 92.6%Language:Kotlin 3.3%Language:Swift 2.8%Language:Shell 0.6%Language:C 0.4%Language:Objective-C 0.2%