diff --git a/Cargo.toml b/Cargo.toml index 24b5fea..d16f89d 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -20,5 +20,4 @@ openvr_sys = { git = "https://github.com/Ralith/rust-openvr-sys.git", branch = " [dev_dependencies] glium = "0.14.0" -num = "0.1.31" -nalgebra = "0.8.2" +nalgebra = "0.12" diff --git a/Readme.md b/Readme.md index fa3b502..379bb6d 100644 --- a/Readme.md +++ b/Readme.md @@ -15,11 +15,13 @@ Using rust-openvr # 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) -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!). +openvr-sys needs cmake and a C++ compiler so that it can compile and statically link the OpenVR client library. # 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 @@ -28,17 +30,11 @@ Rust provides 2 pre-compiled version for windows. MSVC ABI and GNU ABI. OpenVR d extern crate openvr; fn main() { - // Initialize system subsystem - let system = match openvr::init() { - Ok(sys) => sys, - Err(err) => { - println!("Could not initialize OpenVR SDK: \n\t{:?}", err); - return; - } - }; + // Initialize OpenVR + let context = openvr::init(openvr::ApplicationType::Scene).unwrap(); - // accessing other sub systems - let ext = openvr::extended_display(); + // accessing subsystems + let system = context.system().unwrap(); // .. } diff --git a/src/lib.rs b/src/lib.rs index c65fad9..d2ef572 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -20,7 +20,7 @@ static INITIALIZED: AtomicBool = ATOMIC_BOOL_INIT; /// # Panics /// When the library has already been initialized pub fn init(ty: ApplicationType) -> Result { - if INITIALIZED.swap(true, Ordering::AcqRel) { + if INITIALIZED.swap(true, Ordering::Acquire) { panic!("OpenVR has already been initialized!"); } @@ -65,7 +65,7 @@ impl Context { impl Drop for Context { fn drop(&mut self) { unsafe { sys::VR_ShutdownInternal() } - INITIALIZED.store(false, Ordering::AcqRel); + INITIALIZED.store(false, Ordering::Release); } }