Function ovr_sys::ovr_Initialize
source · pub unsafe extern "C" fn ovr_Initialize(
params: *const ovrInitParams
) -> ovrResult
Expand description
Initializes LibOVR
Initialize LibOVR for application usage. This includes finding and loading the LibOVRRT
shared library. No LibOVR API functions, other than ovr_GetLastErrorInfo
and ovr_Detect
, can
be called unless ovr_Initialize
succeeds. A successful call to ovr_Initialize
must be eventually
followed by a call to ovr_Shutdown
. ovr_Initialize
calls are idempotent.
Calling ovr_Initialize
twice does not require two matching calls to ovr_Shutdown
.
If already initialized, the return value is ovr_Success
.
LibOVRRT shared library search order:
- Current working directory (often the same as the application directory).
- Module directory (usually the same as the application directory, but not if the module is a separate shared library).
- Application directory
- Development directory (only if
OVR_ENABLE_DEVELOPER_SEARCH
is enabled, which is off by default). - Standard OS shared library search location(s) (OS-specific).
params
Specifies custom initialization options. May be NULL to indicate default options when
using the CAPI shim. If you are directly calling the LibOVRRT version of ovr_Initialize
in the LibOVRRT DLL then this must be valid and include ovrInit_RequestVersion.
Returns an ovrResult
indicating success or failure. In the case of failure, use
ovr_GetLastErrorInfo
to get more information. Example failed results include:
ovrError_Initialize
: Generic initialization error.ovrError_LibLoad
: Couldn’t load LibOVRRT.ovrError_LibVersion
: LibOVRRT version incompatibility.ovrError_ServiceConnection
: Couldn’t connect to the OVR Service.ovrError_ServiceVersion
: OVR Service version incompatibility.ovrError_IncompatibleOS
: The operating system version is incompatible.ovrError_DisplayInit
: Unable to initialize the HMD display.ovrError_ServerStart
: Unable to start the server. Is it already running?ovrError_Reinitialization
: Attempted to re-initialize with a different version.
Example code
let init_params = ovrInitParams {
Flags: ovrInit_RequestVersion,
RequestedMinorVersion: OVR_MINOR_VERSION,
LogCallback: None,
UserData: 0,
ConnectionTimeoutMS: 0,
.. mem::uninitialized()
};
let result = ovr_Initialize(&init_params as *const _);
if OVR_FAILURE(result) {
let mut error_info: ovrErrorInfo = mem::zeroed();
ovr_GetLastErrorInfo(&mut error_info as *mut _);
let error_string = CStr::from_ptr(&error_info.ErrorString as *const c_char)
.to_str().unwrap();
return Err(format!("ovr_Initialize failed: {}", error_string));
}
see ovr_Shutdown