Rust bindings for the OpenXR virtual/augmented reality runtime API. Refer to the specification for detailed documentation on individual API calls.
openxrThe high-level bindings provide abstractions focusing on ergonomics and safety. Escape hatches to the raw API are exposed to support unforeseen requirements, and patterns that cannot be efficiently exposed in safe terms are preserved as unsafe.
The crate exposes a number of cargo features:
static builds in the Khronos OpenXR loader, which can then be
accessed with Entry::linked(). This is the easiest way to get
going, provided your environment has a working C++ compiler and
CMake installation.
The OPENXRS_ANDROID_STL environment variable can be used to change which C++ runtime library is used.
Valid values are:
static (default) will statically link the C++ runtime library (c++_static).
This should not be used if you have any other copy of the C++ runtime library in your application.
See https://developer.android.com/ndk/guides/cpp-support.shared will dynamically link the C++ runtime library (c++_shared).
You will have to include the libc++_shared.so library in your APK.none will not link a C++ runtime library.
You will have to manually provide the C++ runtime library.loaded allows access to a manually identified OpenXR
implementation at run time. This allows for cases where a built-in
Khronos loader, normally responsible for that task, cannot be used.
linked attempts to link to an OpenXR loader in the build
environment. This is appropriate for target environments like
desktop Linux which guarantee the presence of an OpenXR
implementation or loader at a specific location, making a built-in
loader redundant.
mint exposes From impls for converting to and from
mint types where appropriate.
See openxr/examples/vulkan.rs for an example high-performance Vulkan
rendering workflow.
openxr-sysThe low-level bindings provide faithful unsafe access to the raw API,
with ergonomics and type safety improved as much as feasible compared
to a bindgen-style binding without reducing expressiveness. For
example, symbols are named according to Rust conventions, enums and
bitmasks are strongly typed, and many types have helpful Debug
impls. This crate is almost entirely generated from the Khronos XML
registry.
Rust
100.0%
Rust bindings for the OpenXR virtual/augmented reality runtime API. Refer to the specification for detailed documentation on individual API calls.
openxrThe high-level bindings provide abstractions focusing on ergonomics and safety. Escape hatches to the raw API are exposed to support unforeseen requirements, and patterns that cannot be efficiently exposed in safe terms are preserved as unsafe.
The crate exposes a number of cargo features:
static builds in the Khronos OpenXR loader, which can then be
accessed with Entry::linked(). This is the easiest way to get
going, provided your environment has a working C++ compiler and
CMake installation.
The OPENXRS_ANDROID_STL environment variable can be used to change which C++ runtime library is used.
Valid values are:
static (default) will statically link the C++ runtime library (c++_static).
This should not be used if you have any other copy of the C++ runtime library in your application.
See https://developer.android.com/ndk/guides/cpp-support.shared will dynamically link the C++ runtime library (c++_shared).
You will have to include the libc++_shared.so library in your APK.none will not link a C++ runtime library.
You will have to manually provide the C++ runtime library.loaded allows access to a manually identified OpenXR
implementation at run time. This allows for cases where a built-in
Khronos loader, normally responsible for that task, cannot be used.
linked attempts to link to an OpenXR loader in the build
environment. This is appropriate for target environments like
desktop Linux which guarantee the presence of an OpenXR
implementation or loader at a specific location, making a built-in
loader redundant.
mint exposes From impls for converting to and from
mint types where appropriate.
See openxr/examples/vulkan.rs for an example high-performance Vulkan
rendering workflow.
openxr-sysThe low-level bindings provide faithful unsafe access to the raw API,
with ergonomics and type safety improved as much as feasible compared
to a bindgen-style binding without reducing expressiveness. For
example, symbols are named according to Rust conventions, enums and
bitmasks are strongly typed, and many types have helpful Debug
impls. This crate is almost entirely generated from the Khronos XML
registry.
Rust
100.0%