mirror of
https://github.com/gfx-rs/wgpu.git
synced 2026-04-22 03:02:01 -04:00
917626c0ecbe16598d06dc4048fd1b81bf011f5e
70: Allow creating a surface by passing a metal layer. r=kvark a=seivan
This is useful if you're using `SDL2`
```rust
let canvas = window.into_canvas().build().unwrap();
let metal_layer = unsafe { sdl2::sys::SDL_RenderGetMetalLayer(canvas.raw()) };
let surface = instance.create_surface_with_metal_layer(metal_layer);
```
For now, Metal only - but could be useful in the future if there was a trait or a facade to use for setting up a surface. The intention is to support other window backends without depending on them directly as a dependency.
Co-authored-by: Seivan Heidari <seivan.heidari@icloud.com>
WebGPU
This is an experimental WebGPU implementation as a native static library. It's written in Rust and is based on gfx-hal and satellite libraries. The corresponding WebIDL specification can be found at gpuweb project.
The implementation consists of the following parts:
wgpu-native- the native implementation of WebGPU as a C API librarywgpu-bindings- automatic generator of actual C headerswgpu-remote- remoting layer to work with WebGPU across the process boundarywgpu-rs- idiomatic Rust wrapper of the native library
Example
To run an example, simply cd to the examples or gfx-examples directory, then use cargo run with --features {backend} to specify the backend (where {backend} is either vulkan, dx12, dx11 or metal). For example:
# Clone the wgpu repository
git clone https://github.com/gfx-rs/wgpu
# Change directory to `examples`
cd wgpu/examples
# Vulkan (Linux/Windows)
cargo run --bin hello_triangle --features vulkan
# Metal (macOS/iOS)
cargo run --bin hello_triangle --features metal
# DirectX12 (Windows)
cargo run --bin hello_triangle --features dx12
cd ../gfx-examples
# Vulkan (Linux/Windows)
cargo run --bin cube --features vulkan
# Metal (macOS/iOS)
cargo run --bin cube --features metal
# DirectX12 (Windows)
cargo run --bin cube --features dx12
These examples assume that necessary dependencies for the graphics backend are already installed. For more information about installation and usage, refer to the Getting Started guide.
Description
Languages
Rust
79.9%
WGSL
16.2%
HLSL
2%
GLSL
1.7%
JavaScript
0.2%