@ -0,0 +1,196 @@ | |||||
/********************************************************************************//** | |||||
\file OVR_CAPI_Util.h | |||||
\brief This header provides LibOVR utility function declarations | |||||
\copyright Copyright 2015-2016 Oculus VR, LLC All Rights reserved. | |||||
*************************************************************************************/ | |||||
#ifndef OVR_CAPI_Util_h | |||||
#define OVR_CAPI_Util_h | |||||
#include "../OVR_CAPI.h" | |||||
#ifdef __cplusplus | |||||
extern "C" { | |||||
#endif | |||||
/// Enumerates modifications to the projection matrix based on the application's needs. | |||||
/// | |||||
/// \see ovrMatrix4f_Projection | |||||
/// | |||||
typedef enum ovrProjectionModifier_ | |||||
{ | |||||
/// Use for generating a default projection matrix that is: | |||||
/// * Right-handed. | |||||
/// * Near depth values stored in the depth buffer are smaller than far depth values. | |||||
/// * Both near and far are explicitly defined. | |||||
/// * With a clipping range that is (0 to w). | |||||
ovrProjection_None = 0x00, | |||||
/// Enable if using left-handed transformations in your application. | |||||
ovrProjection_LeftHanded = 0x01, | |||||
/// After the projection transform is applied, far values stored in the depth buffer will be less than closer depth values. | |||||
/// NOTE: Enable only if the application is using a floating-point depth buffer for proper precision. | |||||
ovrProjection_FarLessThanNear = 0x02, | |||||
/// When this flag is used, the zfar value pushed into ovrMatrix4f_Projection() will be ignored | |||||
/// NOTE: Enable only if ovrProjection_FarLessThanNear is also enabled where the far clipping plane will be pushed to infinity. | |||||
ovrProjection_FarClipAtInfinity = 0x04, | |||||
/// Enable if the application is rendering with OpenGL and expects a projection matrix with a clipping range of (-w to w). | |||||
/// Ignore this flag if your application already handles the conversion from D3D range (0 to w) to OpenGL. | |||||
ovrProjection_ClipRangeOpenGL = 0x08, | |||||
} ovrProjectionModifier; | |||||
/// Return values for ovr_Detect. | |||||
/// | |||||
/// \see ovr_Detect | |||||
/// | |||||
typedef struct OVR_ALIGNAS(8) ovrDetectResult_ | |||||
{ | |||||
/// Is ovrFalse when the Oculus Service is not running. | |||||
/// This means that the Oculus Service is either uninstalled or stopped. | |||||
/// IsOculusHMDConnected will be ovrFalse in this case. | |||||
/// Is ovrTrue when the Oculus Service is running. | |||||
/// This means that the Oculus Service is installed and running. | |||||
/// IsOculusHMDConnected will reflect the state of the HMD. | |||||
ovrBool IsOculusServiceRunning; | |||||
/// Is ovrFalse when an Oculus HMD is not detected. | |||||
/// If the Oculus Service is not running, this will be ovrFalse. | |||||
/// Is ovrTrue when an Oculus HMD is detected. | |||||
/// This implies that the Oculus Service is also installed and running. | |||||
ovrBool IsOculusHMDConnected; | |||||
OVR_UNUSED_STRUCT_PAD(pad0, 6) ///< \internal struct padding | |||||
} ovrDetectResult; | |||||
OVR_STATIC_ASSERT(sizeof(ovrDetectResult) == 8, "ovrDetectResult size mismatch"); | |||||
/// Detects Oculus Runtime and Device Status | |||||
/// | |||||
/// Checks for Oculus Runtime and Oculus HMD device status without loading the LibOVRRT | |||||
/// shared library. This may be called before ovr_Initialize() to help decide whether or | |||||
/// not to initialize LibOVR. | |||||
/// | |||||
/// \param[in] timeoutMilliseconds Specifies a timeout to wait for HMD to be attached or 0 to poll. | |||||
/// | |||||
/// \return Returns an ovrDetectResult object indicating the result of detection. | |||||
/// | |||||
/// \see ovrDetectResult | |||||
/// | |||||
OVR_PUBLIC_FUNCTION(ovrDetectResult) ovr_Detect(int timeoutMilliseconds); | |||||
// On the Windows platform, | |||||
#ifdef _WIN32 | |||||
/// This is the Windows Named Event name that is used to check for HMD connected state. | |||||
#define OVR_HMD_CONNECTED_EVENT_NAME L"OculusHMDConnected" | |||||
#endif // _WIN32 | |||||
/// Used to generate projection from ovrEyeDesc::Fov. | |||||
/// | |||||
/// \param[in] fov Specifies the ovrFovPort to use. | |||||
/// \param[in] znear Distance to near Z limit. | |||||
/// \param[in] zfar Distance to far Z limit. | |||||
/// \param[in] projectionModFlags A combination of the ovrProjectionModifier flags. | |||||
/// | |||||
/// \return Returns the calculated projection matrix. | |||||
/// | |||||
/// \see ovrProjectionModifier | |||||
/// | |||||
OVR_PUBLIC_FUNCTION(ovrMatrix4f) ovrMatrix4f_Projection(ovrFovPort fov, float znear, float zfar, unsigned int projectionModFlags); | |||||
/// Extracts the required data from the result of ovrMatrix4f_Projection. | |||||
/// | |||||
/// \param[in] projection Specifies the project matrix from which to extract ovrTimewarpProjectionDesc. | |||||
/// \param[in] projectionModFlags A combination of the ovrProjectionModifier flags. | |||||
/// \return Returns the extracted ovrTimewarpProjectionDesc. | |||||
/// \see ovrTimewarpProjectionDesc | |||||
/// | |||||
OVR_PUBLIC_FUNCTION(ovrTimewarpProjectionDesc) ovrTimewarpProjectionDesc_FromProjection(ovrMatrix4f projection, unsigned int projectionModFlags); | |||||
/// Generates an orthographic sub-projection. | |||||
/// | |||||
/// Used for 2D rendering, Y is down. | |||||
/// | |||||
/// \param[in] projection The perspective matrix that the orthographic matrix is derived from. | |||||
/// \param[in] orthoScale Equal to 1.0f / pixelsPerTanAngleAtCenter. | |||||
/// \param[in] orthoDistance Equal to the distance from the camera in meters, such as 0.8m. | |||||
/// \param[in] HmdToEyeOffsetX Specifies the offset of the eye from the center. | |||||
/// | |||||
/// \return Returns the calculated projection matrix. | |||||
/// | |||||
OVR_PUBLIC_FUNCTION(ovrMatrix4f) ovrMatrix4f_OrthoSubProjection(ovrMatrix4f projection, ovrVector2f orthoScale, | |||||
float orthoDistance, float HmdToEyeOffsetX); | |||||
/// Computes offset eye poses based on headPose returned by ovrTrackingState. | |||||
/// | |||||
/// \param[in] headPose Indicates the HMD position and orientation to use for the calculation. | |||||
/// \param[in] hmdToEyeOffset Can be ovrEyeRenderDesc.HmdToEyeOffset returned from | |||||
/// ovr_GetRenderDesc. For monoscopic rendering, use a vector that is the average | |||||
/// of the two vectors for both eyes. | |||||
/// \param[out] outEyePoses If outEyePoses are used for rendering, they should be passed to | |||||
/// ovr_SubmitFrame in ovrLayerEyeFov::RenderPose or ovrLayerEyeFovDepth::RenderPose. | |||||
/// | |||||
OVR_PUBLIC_FUNCTION(void) ovr_CalcEyePoses(ovrPosef headPose, | |||||
const ovrVector3f hmdToEyeOffset[2], | |||||
ovrPosef outEyePoses[2]); | |||||
/// Returns the predicted head pose in outHmdTrackingState and offset eye poses in outEyePoses. | |||||
/// | |||||
/// This is a thread-safe function where caller should increment frameIndex with every frame | |||||
/// and pass that index where applicable to functions called on the rendering thread. | |||||
/// Assuming outEyePoses are used for rendering, it should be passed as a part of ovrLayerEyeFov. | |||||
/// The caller does not need to worry about applying HmdToEyeOffset to the returned outEyePoses variables. | |||||
/// | |||||
/// \param[in] hmd Specifies an ovrSession previously returned by ovr_Create. | |||||
/// \param[in] frameIndex Specifies the targeted frame index, or 0 to refer to one frame after | |||||
/// the last time ovr_SubmitFrame was called. | |||||
/// \param[in] latencyMarker Specifies that this call is the point in time where | |||||
/// the "App-to-Mid-Photon" latency timer starts from. If a given ovrLayer | |||||
/// provides "SensorSampleTimestamp", that will override the value stored here. | |||||
/// \param[in] hmdToEyeOffset Can be ovrEyeRenderDesc.HmdToEyeOffset returned from | |||||
/// ovr_GetRenderDesc. For monoscopic rendering, use a vector that is the average | |||||
/// of the two vectors for both eyes. | |||||
/// \param[out] outEyePoses The predicted eye poses. | |||||
/// \param[out] outSensorSampleTime The time when this function was called. May be NULL, in which case it is ignored. | |||||
/// | |||||
OVR_PUBLIC_FUNCTION(void) ovr_GetEyePoses(ovrSession session, long long frameIndex, ovrBool latencyMarker, | |||||
const ovrVector3f hmdToEyeOffset[2], | |||||
ovrPosef outEyePoses[2], | |||||
double* outSensorSampleTime); | |||||
/// Tracking poses provided by the SDK come in a right-handed coordinate system. If an application | |||||
/// is passing in ovrProjection_LeftHanded into ovrMatrix4f_Projection, then it should also use | |||||
/// this function to flip the HMD tracking poses to be left-handed. | |||||
/// | |||||
/// While this utility function is intended to convert a left-handed ovrPosef into a right-handed | |||||
/// coordinate system, it will also work for converting right-handed to left-handed since the | |||||
/// flip operation is the same for both cases. | |||||
/// | |||||
/// \param[in] inPose that is right-handed | |||||
/// \param[out] outPose that is requested to be left-handed (can be the same pointer to inPose) | |||||
/// | |||||
OVR_PUBLIC_FUNCTION(void) ovrPosef_FlipHandedness(const ovrPosef* inPose, ovrPosef* outPose); | |||||
#ifdef __cplusplus | |||||
} /* extern "C" */ | |||||
#endif | |||||
#endif // Header include guard |
@ -0,0 +1,70 @@ | |||||
/************************************************************************************ | |||||
Filename : OVR_StereoProjection.h | |||||
Content : Stereo projection functions | |||||
Created : November 30, 2013 | |||||
Authors : Tom Fosyth | |||||
Copyright : Copyright 2014-2016 Oculus VR, LLC All Rights reserved. | |||||
Licensed under the Oculus VR Rift SDK License Version 3.3 (the "License"); | |||||
you may not use the Oculus VR Rift SDK except in compliance with the License, | |||||
which is provided at the time of installation or download, or which | |||||
otherwise accompanies this software in either electronic or hard copy form. | |||||
You may obtain a copy of the License at | |||||
http://www.oculusvr.com/licenses/LICENSE-3.3 | |||||
Unless required by applicable law or agreed to in writing, the Oculus VR SDK | |||||
distributed under the License is distributed on an "AS IS" BASIS, | |||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | |||||
See the License for the specific language governing permissions and | |||||
limitations under the License. | |||||
*************************************************************************************/ | |||||
#ifndef OVR_StereoProjection_h | |||||
#define OVR_StereoProjection_h | |||||
#include "Extras/OVR_Math.h" | |||||
namespace OVR { | |||||
//----------------------------------------------------------------------------------- | |||||
// ***** Stereo Enumerations | |||||
// StereoEye specifies which eye we are rendering for; it is used to | |||||
// retrieve StereoEyeParams. | |||||
enum StereoEye | |||||
{ | |||||
StereoEye_Left, | |||||
StereoEye_Right, | |||||
StereoEye_Center | |||||
}; | |||||
//----------------------------------------------------------------------------------- | |||||
// ***** Propjection functions | |||||
Matrix4f CreateProjection ( bool rightHanded, bool isOpenGL, FovPort fov, StereoEye eye, | |||||
float zNear = 0.01f, float zFar = 10000.0f, | |||||
bool flipZ = false, bool farAtInfinity = false); | |||||
Matrix4f CreateOrthoSubProjection ( bool rightHanded, StereoEye eyeType, | |||||
float tanHalfFovX, float tanHalfFovY, | |||||
float unitsX, float unitsY, float distanceFromCamera, | |||||
float interpupillaryDistance, Matrix4f const &projection, | |||||
float zNear = 0.0f, float zFar = 0.0f, | |||||
bool flipZ = false, bool farAtInfinity = false); | |||||
ScaleAndOffset2D CreateNDCScaleAndOffsetFromFov ( FovPort fov ); | |||||
} //namespace OVR | |||||
#endif // OVR_StereoProjection_h |
@ -0,0 +1,76 @@ | |||||
/********************************************************************************//** | |||||
\file OVR_CAPI_Audio.h | |||||
\brief CAPI audio functions. | |||||
\copyright Copyright 2015 Oculus VR, LLC. All Rights reserved. | |||||
************************************************************************************/ | |||||
#ifndef OVR_CAPI_Audio_h | |||||
#define OVR_CAPI_Audio_h | |||||
#ifdef _WIN32 | |||||
#include <windows.h> | |||||
#include "OVR_CAPI.h" | |||||
#define OVR_AUDIO_MAX_DEVICE_STR_SIZE 128 | |||||
/// Gets the ID of the preferred VR audio output device. | |||||
/// | |||||
/// \param[out] deviceOutId The ID of the user's preferred VR audio device to use, which will be valid upon a successful return value, else it will be WAVE_MAPPER. | |||||
/// | |||||
/// \return Returns an ovrResult indicating success or failure. In the case of failure, use | |||||
/// ovr_GetLastErrorInfo to get more information. | |||||
/// | |||||
OVR_PUBLIC_FUNCTION(ovrResult) ovr_GetAudioDeviceOutWaveId(UINT* deviceOutId); | |||||
/// Gets the ID of the preferred VR audio input device. | |||||
/// | |||||
/// \param[out] deviceInId The ID of the user's preferred VR audio device to use, which will be valid upon a successful return value, else it will be WAVE_MAPPER. | |||||
/// | |||||
/// \return Returns an ovrResult indicating success or failure. In the case of failure, use | |||||
/// ovr_GetLastErrorInfo to get more information. | |||||
/// | |||||
OVR_PUBLIC_FUNCTION(ovrResult) ovr_GetAudioDeviceInWaveId(UINT* deviceInId); | |||||
/// Gets the GUID of the preferred VR audio device as a string. | |||||
/// | |||||
/// \param[out] deviceOutStrBuffer A buffer where the GUID string for the device will copied to. | |||||
/// | |||||
/// \return Returns an ovrResult indicating success or failure. In the case of failure, use | |||||
/// ovr_GetLastErrorInfo to get more information. | |||||
/// | |||||
OVR_PUBLIC_FUNCTION(ovrResult) ovr_GetAudioDeviceOutGuidStr(WCHAR deviceOutStrBuffer[OVR_AUDIO_MAX_DEVICE_STR_SIZE]); | |||||
/// Gets the GUID of the preferred VR audio device. | |||||
/// | |||||
/// \param[out] deviceOutGuid The GUID of the user's preferred VR audio device to use, which will be valid upon a successful return value, else it will be NULL. | |||||
/// | |||||
/// \return Returns an ovrResult indicating success or failure. In the case of failure, use | |||||
/// ovr_GetLastErrorInfo to get more information. | |||||
/// | |||||
OVR_PUBLIC_FUNCTION(ovrResult) ovr_GetAudioDeviceOutGuid(GUID* deviceOutGuid); | |||||
/// Gets the GUID of the preferred VR microphone device as a string. | |||||
/// | |||||
/// \param[out] deviceInStrBuffer A buffer where the GUID string for the device will copied to. | |||||
/// | |||||
/// \return Returns an ovrResult indicating success or failure. In the case of failure, use | |||||
/// ovr_GetLastErrorInfo to get more information. | |||||
/// | |||||
OVR_PUBLIC_FUNCTION(ovrResult) ovr_GetAudioDeviceInGuidStr(WCHAR deviceInStrBuffer[OVR_AUDIO_MAX_DEVICE_STR_SIZE]); | |||||
/// Gets the GUID of the preferred VR microphone device. | |||||
/// | |||||
/// \param[out] deviceInGuid The GUID of the user's preferred VR audio device to use, which will be valid upon a successful return value, else it will be NULL. | |||||
/// | |||||
/// \return Returns an ovrResult indicating success or failure. In the case of failure, use | |||||
/// ovr_GetLastErrorInfo to get more information. | |||||
/// | |||||
OVR_PUBLIC_FUNCTION(ovrResult) ovr_GetAudioDeviceInGuid(GUID* deviceInGuid); | |||||
#endif //OVR_OS_MS | |||||
#endif // OVR_CAPI_Audio_h |
@ -0,0 +1,155 @@ | |||||
/********************************************************************************//** | |||||
\file OVR_CAPI_D3D.h | |||||
\brief D3D specific structures used by the CAPI interface. | |||||
\copyright Copyright 2014-2016 Oculus VR, LLC All Rights reserved. | |||||
************************************************************************************/ | |||||
#ifndef OVR_CAPI_D3D_h | |||||
#define OVR_CAPI_D3D_h | |||||
#include "OVR_CAPI.h" | |||||
#include "OVR_Version.h" | |||||
#if defined (_WIN32) | |||||
#include <Unknwn.h> | |||||
//----------------------------------------------------------------------------------- | |||||
// ***** Direct3D Specific | |||||
/// Create Texture Swap Chain suitable for use with Direct3D 11 and 12. | |||||
/// | |||||
/// \param[in] session Specifies an ovrSession previously returned by ovr_Create. | |||||
/// \param[in] d3dPtr Specifies the application's D3D11Device to create resources with or the D3D12CommandQueue | |||||
/// which must be the same one the application renders to the eye textures with. | |||||
/// \param[in] desc Specifies requested texture properties. See notes for more info about texture format. | |||||
/// \param[in] bindFlags Specifies what ovrTextureBindFlags the application requires for this texture chain. | |||||
/// \param[out] out_TextureSwapChain Returns the created ovrTextureSwapChain, which will be valid upon a successful return value, else it will be NULL. | |||||
/// This texture chain must be eventually destroyed via ovr_DestroyTextureSwapChain before destroying the HMD with ovr_Destroy. | |||||
/// | |||||
/// \return Returns an ovrResult indicating success or failure. In the case of failure, use | |||||
/// ovr_GetLastErrorInfo to get more information. | |||||
/// | |||||
/// \note The texture format provided in \a desc should be thought of as the format the distortion-compositor will use for the | |||||
/// ShaderResourceView when reading the contents of the texture. To that end, it is highly recommended that the application | |||||
/// requests texture swapchain formats that are in sRGB-space (e.g. OVR_FORMAT_R8G8B8A8_UNORM_SRGB) as the compositor | |||||
/// does sRGB-correct rendering. As such, the compositor relies on the GPU's hardware sampler to do the sRGB-to-linear | |||||
/// conversion. If the application still prefers to render to a linear format (e.g. OVR_FORMAT_R8G8B8A8_UNORM) while handling the | |||||
/// linear-to-gamma conversion via HLSL code, then the application must still request the corresponding sRGB format and also use | |||||
/// the \a ovrTextureMisc_DX_Typeless flag in the ovrTextureSwapChainDesc's Flag field. This will allow the application to create | |||||
/// a RenderTargetView that is the desired linear format while the compositor continues to treat it as sRGB. Failure to do so | |||||
/// will cause the compositor to apply unexpected gamma conversions leading to gamma-curve artifacts. The \a ovrTextureMisc_DX_Typeless | |||||
/// flag for depth buffer formats (e.g. OVR_FORMAT_D32_FLOAT) is ignored as they are always converted to be typeless. | |||||
/// | |||||
/// \see ovr_GetTextureSwapChainLength | |||||
/// \see ovr_GetTextureSwapChainCurrentIndex | |||||
/// \see ovr_GetTextureSwapChainDesc | |||||
/// \see ovr_GetTextureSwapChainBufferDX | |||||
/// \see ovr_DestroyTextureSwapChain | |||||
/// | |||||
OVR_PUBLIC_FUNCTION(ovrResult) ovr_CreateTextureSwapChainDX(ovrSession session, | |||||
IUnknown* d3dPtr, | |||||
const ovrTextureSwapChainDesc* desc, | |||||
ovrTextureSwapChain* out_TextureSwapChain); | |||||
/// Get a specific buffer within the chain as any compatible COM interface (similar to QueryInterface) | |||||
/// | |||||
/// \param[in] session Specifies an ovrSession previously returned by ovr_Create. | |||||
/// \param[in] chain Specifies an ovrTextureSwapChain previously returned by ovr_CreateTextureSwapChainDX | |||||
/// \param[in] index Specifies the index within the chain to retrieve. Must be between 0 and length (see ovr_GetTextureSwapChainLength), | |||||
/// or may pass -1 to get the buffer at the CurrentIndex location. (Saving a call to GetTextureSwapChainCurrentIndex) | |||||
/// \param[in] iid Specifies the interface ID of the interface pointer to query the buffer for. | |||||
/// \param[out] out_Buffer Returns the COM interface pointer retrieved. | |||||
/// | |||||
/// \return Returns an ovrResult indicating success or failure. In the case of failure, use | |||||
/// ovr_GetLastErrorInfo to get more information. | |||||
/// | |||||
/// <b>Example code</b> | |||||
/// \code{.cpp} | |||||
/// ovr_GetTextureSwapChainBufferDX(session, chain, 0, IID_ID3D11Texture2D, &d3d11Texture); | |||||
/// ovr_GetTextureSwapChainBufferDX(session, chain, 1, IID_PPV_ARGS(&dxgiResource)); | |||||
/// \endcode | |||||
/// | |||||
OVR_PUBLIC_FUNCTION(ovrResult) ovr_GetTextureSwapChainBufferDX(ovrSession session, | |||||
ovrTextureSwapChain chain, | |||||
int index, | |||||
IID iid, | |||||
void** out_Buffer); | |||||
/// Create Mirror Texture which is auto-refreshed to mirror Rift contents produced by this application. | |||||
/// | |||||
/// A second call to ovr_CreateMirrorTextureDX for a given ovrSession before destroying the first one | |||||
/// is not supported and will result in an error return. | |||||
/// | |||||
/// \param[in] session Specifies an ovrSession previously returned by ovr_Create. | |||||
/// \param[in] d3dPtr Specifies the application's D3D11Device to create resources with or the D3D12CommandQueue | |||||
/// which must be the same one the application renders to the textures with. | |||||
/// \param[in] desc Specifies requested texture properties. See notes for more info about texture format. | |||||
/// \param[out] out_MirrorTexture Returns the created ovrMirrorTexture, which will be valid upon a successful return value, else it will be NULL. | |||||
/// This texture must be eventually destroyed via ovr_DestroyMirrorTexture before destroying the HMD with ovr_Destroy. | |||||
/// | |||||
/// \return Returns an ovrResult indicating success or failure. In the case of failure, use | |||||
/// ovr_GetLastErrorInfo to get more information. | |||||
/// | |||||
/// \note The texture format provided in \a desc should be thought of as the format the compositor will use for the RenderTargetView when | |||||
/// writing into mirror texture. To that end, it is highly recommended that the application requests a mirror texture format that is | |||||
/// in sRGB-space (e.g. OVR_FORMAT_R8G8B8A8_UNORM_SRGB) as the compositor does sRGB-correct rendering. If however the application wants | |||||
/// to still read the mirror texture as a linear format (e.g. OVR_FORMAT_R8G8B8A8_UNORM) and handle the sRGB-to-linear conversion in | |||||
/// HLSL code, then it is recommended the application still requests an sRGB format and also use the \a ovrTextureMisc_DX_Typeless flag in the | |||||
/// ovrMirrorTextureDesc's Flags field. This will allow the application to bind a ShaderResourceView that is a linear format while the | |||||
/// compositor continues to treat is as sRGB. Failure to do so will cause the compositor to apply unexpected gamma conversions leading to | |||||
/// gamma-curve artifacts. | |||||
/// | |||||
/// | |||||
/// <b>Example code</b> | |||||
/// \code{.cpp} | |||||
/// ovrMirrorTexture mirrorTexture = nullptr; | |||||
/// ovrMirrorTextureDesc mirrorDesc = {}; | |||||
/// mirrorDesc.Format = OVR_FORMAT_R8G8B8A8_UNORM_SRGB; | |||||
/// mirrorDesc.Width = mirrorWindowWidth; | |||||
/// mirrorDesc.Height = mirrorWindowHeight; | |||||
/// ovrResult result = ovr_CreateMirrorTextureDX(session, d3d11Device, &mirrorDesc, &mirrorTexture); | |||||
/// [...] | |||||
/// // Destroy the texture when done with it. | |||||
/// ovr_DestroyMirrorTexture(session, mirrorTexture); | |||||
/// mirrorTexture = nullptr; | |||||
/// \endcode | |||||
/// | |||||
/// \see ovr_GetMirrorTextureBufferDX | |||||
/// \see ovr_DestroyMirrorTexture | |||||
/// | |||||
OVR_PUBLIC_FUNCTION(ovrResult) ovr_CreateMirrorTextureDX(ovrSession session, | |||||
IUnknown* d3dPtr, | |||||
const ovrMirrorTextureDesc* desc, | |||||
ovrMirrorTexture* out_MirrorTexture); | |||||
/// Get a the underlying buffer as any compatible COM interface (similar to QueryInterface) | |||||
/// | |||||
/// \param[in] session Specifies an ovrSession previously returned by ovr_Create. | |||||
/// \param[in] mirrorTexture Specifies an ovrMirrorTexture previously returned by ovr_CreateMirrorTextureDX | |||||
/// \param[in] iid Specifies the interface ID of the interface pointer to query the buffer for. | |||||
/// \param[out] out_Buffer Returns the COM interface pointer retrieved. | |||||
/// | |||||
/// \return Returns an ovrResult indicating success or failure. In the case of failure, use | |||||
/// ovr_GetLastErrorInfo to get more information. | |||||
/// | |||||
/// <b>Example code</b> | |||||
/// \code{.cpp} | |||||
/// ID3D11Texture2D* d3d11Texture = nullptr; | |||||
/// ovr_GetMirrorTextureBufferDX(session, mirrorTexture, IID_PPV_ARGS(&d3d11Texture)); | |||||
/// d3d11DeviceContext->CopyResource(d3d11TextureBackBuffer, d3d11Texture); | |||||
/// d3d11Texture->Release(); | |||||
/// dxgiSwapChain->Present(0, 0); | |||||
/// \endcode | |||||
/// | |||||
OVR_PUBLIC_FUNCTION(ovrResult) ovr_GetMirrorTextureBufferDX(ovrSession session, | |||||
ovrMirrorTexture mirrorTexture, | |||||
IID iid, | |||||
void** out_Buffer); | |||||
#endif // _WIN32 | |||||
#endif // OVR_CAPI_D3D_h |
@ -0,0 +1,99 @@ | |||||
/********************************************************************************//** | |||||
\file OVR_CAPI_GL.h | |||||
\brief OpenGL-specific structures used by the CAPI interface. | |||||
\copyright Copyright 2015 Oculus VR, LLC. All Rights reserved. | |||||
************************************************************************************/ | |||||
#ifndef OVR_CAPI_GL_h | |||||
#define OVR_CAPI_GL_h | |||||
#include "OVR_CAPI.h" | |||||
/// Creates a TextureSwapChain suitable for use with OpenGL. | |||||
/// | |||||
/// \param[in] session Specifies an ovrSession previously returned by ovr_Create. | |||||
/// \param[in] desc Specifies the requested texture properties. See notes for more info about texture format. | |||||
/// \param[out] out_TextureSwapChain Returns the created ovrTextureSwapChain, which will be valid upon | |||||
/// a successful return value, else it will be NULL. This texture swap chain must be eventually | |||||
/// destroyed via ovr_DestroyTextureSwapChain before destroying the HMD with ovr_Destroy. | |||||
/// | |||||
/// \return Returns an ovrResult indicating success or failure. In the case of failure, use | |||||
/// ovr_GetLastErrorInfo to get more information. | |||||
/// | |||||
/// \note The \a format provided should be thought of as the format the distortion compositor will use when reading | |||||
/// the contents of the texture. To that end, it is highly recommended that the application requests texture swap chain | |||||
/// formats that are in sRGB-space (e.g. OVR_FORMAT_R8G8B8A8_UNORM_SRGB) as the distortion compositor does sRGB-correct | |||||
/// rendering. Furthermore, the app should then make sure "glEnable(GL_FRAMEBUFFER_SRGB);" is called before rendering | |||||
/// into these textures. Even though it is not recommended, if the application would like to treat the texture as a linear | |||||
/// format and do linear-to-gamma conversion in GLSL, then the application can avoid calling "glEnable(GL_FRAMEBUFFER_SRGB);", | |||||
/// but should still pass in an sRGB variant for the \a format. Failure to do so will cause the distortion compositor | |||||
/// to apply incorrect gamma conversions leading to gamma-curve artifacts. | |||||
/// | |||||
/// \see ovr_GetTextureSwapChainLength | |||||
/// \see ovr_GetTextureSwapChainCurrentIndex | |||||
/// \see ovr_GetTextureSwapChainDesc | |||||
/// \see ovr_GetTextureSwapChainBufferGL | |||||
/// \see ovr_DestroyTextureSwapChain | |||||
/// | |||||
OVR_PUBLIC_FUNCTION(ovrResult) ovr_CreateTextureSwapChainGL(ovrSession session, | |||||
const ovrTextureSwapChainDesc* desc, | |||||
ovrTextureSwapChain* out_TextureSwapChain); | |||||
/// Get a specific buffer within the chain as a GL texture name | |||||
/// | |||||
/// \param[in] session Specifies an ovrSession previously returned by ovr_Create. | |||||
/// \param[in] chain Specifies an ovrTextureSwapChain previously returned by ovr_CreateTextureSwapChainGL | |||||
/// \param[in] index Specifies the index within the chain to retrieve. Must be between 0 and length (see ovr_GetTextureSwapChainLength) | |||||
/// or may pass -1 to get the buffer at the CurrentIndex location. (Saving a call to GetTextureSwapChainCurrentIndex) | |||||
/// \param[out] out_TexId Returns the GL texture object name associated with the specific index requested | |||||
/// | |||||
/// \return Returns an ovrResult indicating success or failure. In the case of failure, use | |||||
/// ovr_GetLastErrorInfo to get more information. | |||||
/// | |||||
OVR_PUBLIC_FUNCTION(ovrResult) ovr_GetTextureSwapChainBufferGL(ovrSession session, | |||||
ovrTextureSwapChain chain, | |||||
int index, | |||||
unsigned int* out_TexId); | |||||
/// Creates a Mirror Texture which is auto-refreshed to mirror Rift contents produced by this application. | |||||
/// | |||||
/// A second call to ovr_CreateMirrorTextureGL for a given ovrSession before destroying the first one | |||||
/// is not supported and will result in an error return. | |||||
/// | |||||
/// \param[in] session Specifies an ovrSession previously returned by ovr_Create. | |||||
/// \param[in] desc Specifies the requested mirror texture description. | |||||
/// \param[out] out_MirrorTexture Specifies the created ovrMirrorTexture, which will be valid upon a successful return value, else it will be NULL. | |||||
/// This texture must be eventually destroyed via ovr_DestroyMirrorTexture before destroying the HMD with ovr_Destroy. | |||||
/// | |||||
/// \return Returns an ovrResult indicating success or failure. In the case of failure, use | |||||
/// ovr_GetLastErrorInfo to get more information. | |||||
/// | |||||
/// \note The \a format provided should be thought of as the format the distortion compositor will use when writing into the mirror | |||||
/// texture. It is highly recommended that mirror textures are requested as sRGB formats because the distortion compositor | |||||
/// does sRGB-correct rendering. If the application requests a non-sRGB format (e.g. R8G8B8A8_UNORM) as the mirror texture, | |||||
/// then the application might have to apply a manual linear-to-gamma conversion when reading from the mirror texture. | |||||
/// Failure to do so can result in incorrect gamma conversions leading to gamma-curve artifacts and color banding. | |||||
/// | |||||
/// \see ovr_GetMirrorTextureBufferGL | |||||
/// \see ovr_DestroyMirrorTexture | |||||
/// | |||||
OVR_PUBLIC_FUNCTION(ovrResult) ovr_CreateMirrorTextureGL(ovrSession session, | |||||
const ovrMirrorTextureDesc* desc, | |||||
ovrMirrorTexture* out_MirrorTexture); | |||||
/// Get a the underlying buffer as a GL texture name | |||||
/// | |||||
/// \param[in] session Specifies an ovrSession previously returned by ovr_Create. | |||||
/// \param[in] mirrorTexture Specifies an ovrMirrorTexture previously returned by ovr_CreateMirrorTextureGL | |||||
/// \param[out] out_TexId Specifies the GL texture object name associated with the mirror texture | |||||
/// | |||||
/// \return Returns an ovrResult indicating success or failure. In the case of failure, use | |||||
/// ovr_GetLastErrorInfo to get more information. | |||||
/// | |||||
OVR_PUBLIC_FUNCTION(ovrResult) ovr_GetMirrorTextureBufferGL(ovrSession session, | |||||
ovrMirrorTexture mirrorTexture, | |||||
unsigned int* out_TexId); | |||||
#endif // OVR_CAPI_GL_h |
@ -0,0 +1,53 @@ | |||||
/********************************************************************************//** | |||||
\file OVR_CAPI.h | |||||
\brief Keys for CAPI proprty function calls | |||||
\copyright Copyright 2015 Oculus VR, LLC All Rights reserved. | |||||
************************************************************************************/ | |||||
#ifndef OVR_CAPI_Keys_h | |||||
#define OVR_CAPI_Keys_h | |||||
#include "OVR_Version.h" | |||||
#define OVR_KEY_USER "User" // string | |||||
#define OVR_KEY_NAME "Name" // string | |||||
#define OVR_KEY_GENDER "Gender" // string "Male", "Female", or "Unknown" | |||||
#define OVR_DEFAULT_GENDER "Unknown" | |||||
#define OVR_KEY_PLAYER_HEIGHT "PlayerHeight" // float meters | |||||
#define OVR_DEFAULT_PLAYER_HEIGHT 1.778f | |||||
#define OVR_KEY_EYE_HEIGHT "EyeHeight" // float meters | |||||
#define OVR_DEFAULT_EYE_HEIGHT 1.675f | |||||
#define OVR_KEY_NECK_TO_EYE_DISTANCE "NeckEyeDistance" // float[2] meters | |||||
#define OVR_DEFAULT_NECK_TO_EYE_HORIZONTAL 0.0805f | |||||
#define OVR_DEFAULT_NECK_TO_EYE_VERTICAL 0.075f | |||||
#define OVR_KEY_EYE_TO_NOSE_DISTANCE "EyeToNoseDist" // float[2] meters | |||||
#define OVR_PERF_HUD_MODE "PerfHudMode" // int, allowed values are defined in enum ovrPerfHudMode | |||||
#define OVR_LAYER_HUD_MODE "LayerHudMode" // int, allowed values are defined in enum ovrLayerHudMode | |||||
#define OVR_LAYER_HUD_CURRENT_LAYER "LayerHudCurrentLayer" // int, The layer to show | |||||
#define OVR_LAYER_HUD_SHOW_ALL_LAYERS "LayerHudShowAll" // bool, Hide other layers when the hud is enabled | |||||
#define OVR_DEBUG_HUD_STEREO_MODE "DebugHudStereoMode" // int, allowed values are defined in enum ovrDebugHudStereoMode | |||||
#define OVR_DEBUG_HUD_STEREO_GUIDE_INFO_ENABLE "DebugHudStereoGuideInfoEnable" // bool | |||||
#define OVR_DEBUG_HUD_STEREO_GUIDE_SIZE "DebugHudStereoGuideSize2f" // float[2] | |||||
#define OVR_DEBUG_HUD_STEREO_GUIDE_POSITION "DebugHudStereoGuidePosition3f" // float[3] | |||||
#define OVR_DEBUG_HUD_STEREO_GUIDE_YAWPITCHROLL "DebugHudStereoGuideYawPitchRoll3f" // float[3] | |||||
#define OVR_DEBUG_HUD_STEREO_GUIDE_COLOR "DebugHudStereoGuideColor4f" // float[4] | |||||
#endif // OVR_CAPI_Keys_h |
@ -0,0 +1,209 @@ | |||||
/********************************************************************************//** | |||||
\file OVR_ErrorCode.h | |||||
\brief This header provides LibOVR error code declarations. | |||||
\copyright Copyright 2015-2016 Oculus VR, LLC All Rights reserved. | |||||
*************************************************************************************/ | |||||
#ifndef OVR_ErrorCode_h | |||||
#define OVR_ErrorCode_h | |||||
#include "OVR_Version.h" | |||||
#include <stdint.h> | |||||
#ifndef OVR_RESULT_DEFINED | |||||
#define OVR_RESULT_DEFINED ///< Allows ovrResult to be independently defined. | |||||
/// API call results are represented at the highest level by a single ovrResult. | |||||
typedef int32_t ovrResult; | |||||
#endif | |||||
/// \brief Indicates if an ovrResult indicates success. | |||||
/// | |||||
/// Some functions return additional successful values other than ovrSucces and | |||||
/// require usage of this macro to indicate successs. | |||||
/// | |||||
#if !defined(OVR_SUCCESS) | |||||
#define OVR_SUCCESS(result) (result >= 0) | |||||
#endif | |||||
/// \brief Indicates if an ovrResult indicates an unqualified success. | |||||
/// | |||||
/// This is useful for indicating that the code intentionally wants to | |||||
/// check for result == ovrSuccess as opposed to OVR_SUCCESS(), which | |||||
/// checks for result >= ovrSuccess. | |||||
/// | |||||
#if !defined(OVR_UNQUALIFIED_SUCCESS) | |||||
#define OVR_UNQUALIFIED_SUCCESS(result) (result == ovrSuccess) | |||||
#endif | |||||
/// \brief Indicates if an ovrResult indicates failure. | |||||
/// | |||||
#if !defined(OVR_FAILURE) | |||||
#define OVR_FAILURE(result) (!OVR_SUCCESS(result)) | |||||
#endif | |||||
// Success is a value greater or equal to 0, while all error types are negative values. | |||||
#ifndef OVR_SUCCESS_DEFINED | |||||
#define OVR_SUCCESS_DEFINED ///< Allows ovrResult to be independently defined. | |||||
typedef enum ovrSuccessType_ | |||||
{ | |||||
/// This is a general success result. Use OVR_SUCCESS to test for success. | |||||
ovrSuccess = 0, | |||||
/// Returned from a call to SubmitFrame. The call succeeded, but what the app | |||||
/// rendered will not be visible on the HMD. Ideally the app should continue | |||||
/// calling SubmitFrame, but not do any rendering. When the result becomes | |||||
/// ovrSuccess, rendering should continue as usual. | |||||
ovrSuccess_NotVisible = 1000, | |||||
ovrSuccess_HMDFirmwareMismatch = 4100, ///< The HMD Firmware is out of date but is acceptable. | |||||
ovrSuccess_TrackerFirmwareMismatch = 4101, ///< The Tracker Firmware is out of date but is acceptable. | |||||
ovrSuccess_ControllerFirmwareMismatch = 4104, ///< The controller firmware is out of date but is acceptable. | |||||
ovrSuccess_TrackerDriverNotFound = 4105, ///< The tracker driver interface was not found. Can be a temporary error | |||||
} ovrSuccessType; | |||||
#endif | |||||
typedef enum ovrErrorType_ | |||||
{ | |||||
/* General errors */ | |||||
ovrError_MemoryAllocationFailure = -1000, ///< Failure to allocate memory. | |||||
ovrError_SocketCreationFailure = -1001, ///< Failure to create a socket. | |||||
ovrError_InvalidSession = -1002, ///< Invalid ovrSession parameter provided. | |||||
ovrError_Timeout = -1003, ///< The operation timed out. | |||||
ovrError_NotInitialized = -1004, ///< The system or component has not been initialized. | |||||
ovrError_InvalidParameter = -1005, ///< Invalid parameter provided. See error info or log for details. | |||||
ovrError_ServiceError = -1006, ///< Generic service error. See error info or log for details. | |||||
ovrError_NoHmd = -1007, ///< The given HMD doesn't exist. | |||||
ovrError_Unsupported = -1009, ///< Function call is not supported on this hardware/software | |||||
ovrError_DeviceUnavailable = -1010, ///< Specified device type isn't available. | |||||
ovrError_InvalidHeadsetOrientation = -1011, ///< The headset was in an invalid orientation for the requested operation (e.g. vertically oriented during ovr_RecenterPose). | |||||
ovrError_ClientSkippedDestroy = -1012, ///< The client failed to call ovr_Destroy on an active session before calling ovr_Shutdown. Or the client crashed. | |||||
ovrError_ClientSkippedShutdown = -1013, ///< The client failed to call ovr_Shutdown or the client crashed. | |||||
ovrError_ServiceDeadlockDetected = -1014, ///< The service watchdog discovered a deadlock. | |||||
/* Audio error range, reserved for Audio errors. */ | |||||
ovrError_AudioReservedBegin = -2000, ///< First Audio error. | |||||
ovrError_AudioDeviceNotFound = -2001, ///< Failure to find the specified audio device. | |||||
ovrError_AudioComError = -2002, ///< Generic COM error. | |||||
ovrError_AudioReservedEnd = -2999, ///< Last Audio error. | |||||
/* Initialization errors. */ | |||||
ovrError_Initialize = -3000, ///< Generic initialization error. | |||||
ovrError_LibLoad = -3001, ///< Couldn't load LibOVRRT. | |||||
ovrError_LibVersion = -3002, ///< LibOVRRT version incompatibility. | |||||
ovrError_ServiceConnection = -3003, ///< Couldn't connect to the OVR Service. | |||||
ovrError_ServiceVersion = -3004, ///< OVR Service version incompatibility. | |||||
ovrError_IncompatibleOS = -3005, ///< The operating system version is incompatible. | |||||
ovrError_DisplayInit = -3006, ///< Unable to initialize the HMD display. | |||||
ovrError_ServerStart = -3007, ///< Unable to start the server. Is it already running? | |||||
ovrError_Reinitialization = -3008, ///< Attempting to re-initialize with a different version. | |||||
ovrError_MismatchedAdapters = -3009, ///< Chosen rendering adapters between client and service do not match | |||||
ovrError_LeakingResources = -3010, ///< Calling application has leaked resources | |||||
ovrError_ClientVersion = -3011, ///< Client version too old to connect to service | |||||
ovrError_OutOfDateOS = -3012, ///< The operating system is out of date. | |||||
ovrError_OutOfDateGfxDriver = -3013, ///< The graphics driver is out of date. | |||||
ovrError_IncompatibleGPU = -3014, ///< The graphics hardware is not supported | |||||
ovrError_NoValidVRDisplaySystem = -3015, ///< No valid VR display system found. | |||||
ovrError_Obsolete = -3016, ///< Feature or API is obsolete and no longer supported. | |||||
ovrError_DisabledOrDefaultAdapter = -3017, ///< No supported VR display system found, but disabled or driverless adapter found. | |||||
ovrError_HybridGraphicsNotSupported = -3018, ///< The system is using hybrid graphics (Optimus, etc...), which is not support. | |||||
ovrError_DisplayManagerInit = -3019, ///< Initialization of the DisplayManager failed. | |||||
ovrError_TrackerDriverInit = -3020, ///< Failed to get the interface for an attached tracker | |||||
/* Hardware errors */ | |||||
ovrError_InvalidBundleAdjustment = -4000, ///< Headset has no bundle adjustment data. | |||||
ovrError_USBBandwidth = -4001, ///< The USB hub cannot handle the camera frame bandwidth. | |||||
ovrError_USBEnumeratedSpeed = -4002, ///< The USB camera is not enumerating at the correct device speed. | |||||
ovrError_ImageSensorCommError = -4003, ///< Unable to communicate with the image sensor. | |||||
ovrError_GeneralTrackerFailure = -4004, ///< We use this to report various sensor issues that don't fit in an easily classifiable bucket. | |||||
ovrError_ExcessiveFrameTruncation = -4005, ///< A more than acceptable number of frames are coming back truncated. | |||||
ovrError_ExcessiveFrameSkipping = -4006, ///< A more than acceptable number of frames have been skipped. | |||||
ovrError_SyncDisconnected = -4007, ///< The sensor is not receiving the sync signal (cable disconnected?). | |||||
ovrError_TrackerMemoryReadFailure = -4008, ///< Failed to read memory from the sensor. | |||||
ovrError_TrackerMemoryWriteFailure = -4009, ///< Failed to write memory from the sensor. | |||||
ovrError_TrackerFrameTimeout = -4010, ///< Timed out waiting for a camera frame. | |||||
ovrError_TrackerTruncatedFrame = -4011, ///< Truncated frame returned from sensor. | |||||
ovrError_TrackerDriverFailure = -4012, ///< The sensor driver has encountered a problem. | |||||
ovrError_TrackerNRFFailure = -4013, ///< The sensor wireless subsystem has encountered a problem. | |||||
ovrError_HardwareGone = -4014, ///< The hardware has been unplugged | |||||
ovrError_NordicEnabledNoSync = -4015, ///< The nordic indicates that sync is enabled but it is not sending sync pulses | |||||
ovrError_NordicSyncNoFrames = -4016, ///< It looks like we're getting a sync signal, but no camera frames have been received | |||||
ovrError_CatastrophicFailure = -4017, ///< A catastrophic failure has occurred. We will attempt to recover by resetting the device | |||||
ovrError_CatastrophicTimeout = -4018, ///< The catastrophic recovery has timed out. | |||||
ovrError_RepeatCatastrophicFail = -4019, ///< Catastrophic failure has repeated too many times. | |||||
ovrError_USBOpenDeviceFailure = -4020, ///< Could not open handle for Rift device (likely already in use by another process). | |||||
ovrError_HMDGeneralFailure = -4021, ///< Unexpected HMD issues that don't fit a specific bucket. | |||||
ovrError_HMDFirmwareMismatch = -4100, ///< The HMD Firmware is out of date and is unacceptable. | |||||
ovrError_TrackerFirmwareMismatch = -4101, ///< The sensor Firmware is out of date and is unacceptable. | |||||
ovrError_BootloaderDeviceDetected = -4102, ///< A bootloader HMD is detected by the service. | |||||
ovrError_TrackerCalibrationError = -4103, ///< The sensor calibration is missing or incorrect. | |||||
ovrError_ControllerFirmwareMismatch = -4104, ///< The controller firmware is out of date and is unacceptable. | |||||
ovrError_DevManDeviceDetected = -4105, ///< A DeviceManagement mode HMD is detected by the service. | |||||
ovrError_RebootedBootloaderDevice = -4106, ///< Had to reboot bootloader device, which succeeded. | |||||
ovrError_FailedRebootBootloaderDev = -4107, ///< Had to reboot bootloader device, which failed. Device is stuck in bootloader mode. | |||||
ovrError_IMUTooManyLostSamples = -4200, ///< Too many lost IMU samples. | |||||
ovrError_IMURateError = -4201, ///< IMU rate is outside of the expected range. | |||||
ovrError_FeatureReportFailure = -4202, ///< A feature report has failed. | |||||
ovrError_HMDWirelessTimeout = -4203, ///< HMD wireless interface never returned from busy state. | |||||
ovrError_BootloaderAssertLog = -4300, ///< HMD Bootloader Assert Log was not empty. | |||||
ovrError_AppAssertLog = -4301, ///< HMD App Assert Log was not empty. | |||||
/* Synchronization errors */ | |||||
ovrError_Incomplete = -5000, ///< Requested async work not yet complete. | |||||
ovrError_Abandoned = -5001, ///< Requested async work was abandoned and result is incomplete. | |||||
/* Rendering errors */ | |||||
ovrError_DisplayLost = -6000, ///< In the event of a system-wide graphics reset or cable unplug this is returned to the app. | |||||
ovrError_TextureSwapChainFull = -6001, ///< ovr_CommitTextureSwapChain was called too many times on a texture swapchain without calling submit to use the chain. | |||||
ovrError_TextureSwapChainInvalid = -6002, ///< The ovrTextureSwapChain is in an incomplete or inconsistent state. Ensure ovr_CommitTextureSwapChain was called at least once first. | |||||
ovrError_GraphicsDeviceReset = -6003, ///< Graphics device has been reset (TDR, etc...) | |||||
ovrError_DisplayRemoved = -6004, ///< HMD removed from the display adapter | |||||
ovrError_ContentProtectionNotAvailable = -6005,///<Content protection is not available for the display | |||||
ovrError_ApplicationInvisible = -6006, ///< Application declared itself as an invisible type and is not allowed to submit frames. | |||||
ovrError_Disallowed = -6007, ///< The given request is disallowed under the current conditions. | |||||
ovrError_DisplayPluggedIncorrectly = -6008, ///< Display portion of HMD is plugged into an incompatible port (ex: IGP) | |||||
/* Fatal errors */ | |||||
ovrError_RuntimeException = -7000, ///< A runtime exception occurred. The application is required to shutdown LibOVR and re-initialize it before this error state will be cleared. | |||||
ovrError_MetricsUnknownApp = -90000, | |||||
ovrError_MetricsDuplicateApp = -90001, | |||||
ovrError_MetricsNoEvents = -90002, | |||||
ovrError_MetricsRuntime = -90003, | |||||
ovrError_MetricsFile = -90004, | |||||
ovrError_MetricsNoClientInfo = -90005, | |||||
ovrError_MetricsNoAppMetaData = -90006, | |||||
ovrError_MetricsNoApp = -90007, | |||||
ovrError_MetricsOafFailure = -90008, | |||||
ovrError_MetricsSessionAlreadyActive = -90009, | |||||
ovrError_MetricsSessionNotActive = -90010, | |||||
} ovrErrorType; | |||||
/// Provides information about the last error. | |||||
/// \see ovr_GetLastErrorInfo | |||||
typedef struct ovrErrorInfo_ | |||||
{ | |||||
ovrResult Result; ///< The result from the last API call that generated an error ovrResult. | |||||
char ErrorString[512]; ///< A UTF8-encoded null-terminated English string describing the problem. The format of this string is subject to change in future versions. | |||||
} ovrErrorInfo; | |||||
#endif /* OVR_ErrorCode_h */ |
@ -0,0 +1,60 @@ | |||||
/********************************************************************************//** | |||||
\file OVR_Version.h | |||||
\brief This header provides LibOVR version identification. | |||||
\copyright Copyright 2014-2016 Oculus VR, LLC All Rights reserved. | |||||
*************************************************************************************/ | |||||
#ifndef OVR_Version_h | |||||
#define OVR_Version_h | |||||
/// Conventional string-ification macro. | |||||
#if !defined(OVR_STRINGIZE) | |||||
#define OVR_STRINGIZEIMPL(x) #x | |||||
#define OVR_STRINGIZE(x) OVR_STRINGIZEIMPL(x) | |||||
#endif | |||||
// Master version numbers | |||||
#define OVR_PRODUCT_VERSION 1 // Product version doesn't participate in semantic versioning. | |||||
#define OVR_MAJOR_VERSION 1 // If you change these values then you need to also make sure to change LibOVR/Projects/Windows/LibOVR.props in parallel. | |||||
#define OVR_MINOR_VERSION 4 // | |||||
#define OVR_PATCH_VERSION 0 | |||||
#define OVR_BUILD_NUMBER 0 | |||||
// This is the ((product * 100) + major) version of the service that the DLL is compatible with. | |||||
// When we backport changes to old versions of the DLL we update the old DLLs | |||||
// to move this version number up to the latest version. | |||||
// The DLL is responsible for checking that the service is the version it supports | |||||
// and returning an appropriate error message if it has not been made compatible. | |||||
#define OVR_DLL_COMPATIBLE_VERSION 101 | |||||
#define OVR_FEATURE_VERSION 0 | |||||
/// "Major.Minor.Patch" | |||||
#if !defined(OVR_VERSION_STRING) | |||||
#define OVR_VERSION_STRING OVR_STRINGIZE(OVR_MAJOR_VERSION.OVR_MINOR_VERSION.OVR_PATCH_VERSION) | |||||
#endif | |||||
/// "Major.Minor.Patch.Build" | |||||
#if !defined(OVR_DETAILED_VERSION_STRING) | |||||
#define OVR_DETAILED_VERSION_STRING OVR_STRINGIZE(OVR_MAJOR_VERSION.OVR_MINOR_VERSION.OVR_PATCH_VERSION.OVR_BUILD_NUMBER) | |||||
#endif | |||||
/// \brief file description for version info | |||||
/// This appears in the user-visible file properties. It is intended to convey publicly | |||||
/// available additional information such as feature builds. | |||||
#if !defined(OVR_FILE_DESCRIPTION_STRING) | |||||
#if defined(_DEBUG) | |||||
#define OVR_FILE_DESCRIPTION_STRING "dev build debug" | |||||
#else | |||||
#define OVR_FILE_DESCRIPTION_STRING "dev build" | |||||
#endif | |||||
#endif | |||||
#endif // OVR_Version_h |