mirror of
https://github.com/mii443/rust-openvr.git
synced 2025-08-22 16:25:36 +00:00
@ -20,5 +20,4 @@ openvr_sys = { git = "https://github.com/Ralith/rust-openvr-sys.git", branch = "
|
|||||||
|
|
||||||
[dev_dependencies]
|
[dev_dependencies]
|
||||||
glium = "0.14.0"
|
glium = "0.14.0"
|
||||||
num = "0.1.31"
|
nalgebra = "0.12"
|
||||||
nalgebra = "0.8.2"
|
|
||||||
|
22
Readme.md
22
Readme.md
@ -15,11 +15,13 @@ Using rust-openvr
|
|||||||
|
|
||||||
# Requirements
|
# Requirements
|
||||||
|
|
||||||
When trying to start a program that uses rust-openvr you will probably get an error message because it can't find openvr.dll (or openvr.so)
|
openvr-sys needs cmake and a C++ compiler so that it can compile and statically link the OpenVR client library.
|
||||||
You can download the latest version here (https://github.com/ValveSoftware/openvr/tree/master/bin). After downloading please add it into your project folder (also for production releases!).
|
|
||||||
|
|
||||||
# Building on Windows
|
# Building on Windows
|
||||||
Rust provides 2 pre-compiled version for windows. MSVC ABI and GNU ABI. OpenVR doesn't have an offical build yet for the GNU Bindung and therefore MSVC is required! For more informations about the ABI in Rust see https://www.rust-lang.org/en-US/downloads.html#win-foot
|
|
||||||
|
Rust provides 2 pre-compiled version for windows. MSVC ABI and GNU ABI. The proprietary OpenVR library which is loaded
|
||||||
|
behind the scenes by the client library is MSVC only, and therefore MSVC is required! For more informations about the
|
||||||
|
ABI in Rust see https://www.rust-lang.org/en-US/downloads.html#win-foot
|
||||||
|
|
||||||
# Initializing
|
# Initializing
|
||||||
|
|
||||||
@ -28,17 +30,11 @@ Rust provides 2 pre-compiled version for windows. MSVC ABI and GNU ABI. OpenVR d
|
|||||||
extern crate openvr;
|
extern crate openvr;
|
||||||
|
|
||||||
fn main() {
|
fn main() {
|
||||||
// Initialize system subsystem
|
// Initialize OpenVR
|
||||||
let system = match openvr::init() {
|
let context = openvr::init(openvr::ApplicationType::Scene).unwrap();
|
||||||
Ok(sys) => sys,
|
|
||||||
Err(err) => {
|
|
||||||
println!("Could not initialize OpenVR SDK: \n\t{:?}", err);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
// accessing other sub systems
|
// accessing subsystems
|
||||||
let ext = openvr::extended_display();
|
let system = context.system().unwrap();
|
||||||
|
|
||||||
// ..
|
// ..
|
||||||
}
|
}
|
||||||
|
@ -20,7 +20,7 @@ static INITIALIZED: AtomicBool = ATOMIC_BOOL_INIT;
|
|||||||
/// # Panics
|
/// # Panics
|
||||||
/// When the library has already been initialized
|
/// When the library has already been initialized
|
||||||
pub fn init(ty: ApplicationType) -> Result<Context, InitError> {
|
pub fn init(ty: ApplicationType) -> Result<Context, InitError> {
|
||||||
if INITIALIZED.swap(true, Ordering::AcqRel) {
|
if INITIALIZED.swap(true, Ordering::Acquire) {
|
||||||
panic!("OpenVR has already been initialized!");
|
panic!("OpenVR has already been initialized!");
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -65,7 +65,7 @@ impl Context {
|
|||||||
impl Drop for Context {
|
impl Drop for Context {
|
||||||
fn drop(&mut self) {
|
fn drop(&mut self) {
|
||||||
unsafe { sys::VR_ShutdownInternal() }
|
unsafe { sys::VR_ShutdownInternal() }
|
||||||
INITIALIZED.store(false, Ordering::AcqRel);
|
INITIALIZED.store(false, Ordering::Release);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user