The API that used to be available in steamvr.h in the Steamworks SDK is now the OpenVR SDK. Support for the old API will be maintained indefinitely, but applications that need any of the new features will need to switch to the new SDK. Several new interfaces were added and new methods were added to existing interfaces. See the API documentation for details. Changes from the SteamVR interface in SteamWorks SDK 1.31 to OpenVR SDK 0.9.0 include: * IHmd is now [`IVRSystem`](https://github.com/ValveSoftware/openvr/wiki/IVRSystem_Overview). * Added support for multiple tracked objects. Call [`IVRSystem::GetTrackedDeviceClass`](https://github.com/ValveSoftware/openvr/wiki/IVRSystem::GetTrackedDeviceClass) on numbers between 0 and k_unMaxTrackedDeviceCount to determine what kind of device is in each slot. The active HMD will always be at k_unHmdTrackedObject (aka 0) in the list. * Moved fetching of various values about HMDs and other tracked devices into properties. The TrackedDeviceProperty enum defines the available values. Call [`IVRSystem::Get<type>TrackedDeviceProperty`](https://github.com/ValveSoftware/openvr/wiki/IVRSystem::GetTrackedDeviceProperty) to get the value for an object. * Added support for providing applications with models and textures for tracked devices. This allows applications to draw the actual devices being tracked. See [`IVRSystem::LoadRenderModel`](https://github.com/ValveSoftware/openvr/wiki/IVRSystem::LoadRenderModel) and [`IVRSystem::FreeRenderModel`](https://github.com/ValveSoftware/openvr/wiki/IVRSystem::FreeRenderModel) for details. * Clarified and changed tracking prediction. The right value to pass to [`IVRSystem::GetDeviceToAbsoluteTrackingPose`](https://github.com/ValveSoftware/openvr/wiki/IVRSystem::GetDeviceToAbsoluteTrackingPose) is typically ( <frame duration> - <time since vsync> ) + <vsync to photons time>. All three of those values are available as properties on the HMD. * Added origin to calls that return poses. This can be Seated, Standing, or Raw. In the first two cases all returned poses will be relative to that configured origin. Raw poses are in whatever tracking system the current driver provides. * Renamed `IVRSystem::ZeroTracker` to [`IVRSystem::ResetSeatedZeroPose`](https://github.com/ValveSoftware/openvr/wiki/IVRSystem::ResetSeatedZeroPose). This function only applies to the seated origin and will have no effect on applications that use the standing origin. * Added angular velocity and velocity to the data returned with a tracked deviceÎéÎ÷s pose. * CAPI and C# bindings for OpenVR interfaces added to headers. The accompanying json can be used to generate bindings for other languages as well. * Added [`IVRSystem::PollNextEvent`](https://github.com/ValveSoftware/openvr/wiki/IVRSystem::PollNextEvent) to the API. This allows applications to receive events when devices are activated, deactivated, or updated. * Added new interface [`IVRChaperone`](https://github.com/ValveSoftware/openvr/wiki/IVRChaperone_Overview) to query chaperone hard and soft bounds. Use this to show the user where safe areas to walk are. * [`IVRSystem::GetHiddenAreaMesh`](https://github.com/ValveSoftware/openvr/wiki/IVRSystem::GetHiddenAreaMesh). It returns the stencil mesh to use to minimize pixel rendering for the current HMD. * Removed GetIPD. Use the property Prop_UserIpdMeters_Float instead. * Added [`IVRCompositor`](https://github.com/ValveSoftware/openvr/wiki/IVRCompositor_Overview) interface. This interface allows an application to use the VR Compositor to perform distortion mapping and manage the HMD window.