summaryrefslogtreecommitdiffhomepage
path: root/src/external/OculusSDK/LibOVR/Include/OVR_CAPI.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/external/OculusSDK/LibOVR/Include/OVR_CAPI.h')
-rw-r--r--src/external/OculusSDK/LibOVR/Include/OVR_CAPI.h254
1 files changed, 180 insertions, 74 deletions
diff --git a/src/external/OculusSDK/LibOVR/Include/OVR_CAPI.h b/src/external/OculusSDK/LibOVR/Include/OVR_CAPI.h
index cf7aab62..eaabcf59 100644
--- a/src/external/OculusSDK/LibOVR/Include/OVR_CAPI.h
+++ b/src/external/OculusSDK/LibOVR/Include/OVR_CAPI.h
@@ -271,6 +271,12 @@ typedef char ovrBool; ///< Boolean type
//-----------------------------------------------------------------------------------
// ***** Simple Math Structures
+/// A RGBA color with normalized float components.
+typedef struct OVR_ALIGNAS(4) ovrColorf_
+{
+ float r, g, b, a;
+} ovrColorf;
+
/// A 2D vector with integer components.
typedef struct OVR_ALIGNAS(4) ovrVector2i_
{
@@ -326,7 +332,7 @@ typedef struct OVR_ALIGNAS(4) ovrPosef_
/// A full pose (rigid body) configuration with first and second derivatives.
///
/// Body refers to any object for which ovrPoseStatef is providing data.
-/// It can be the HMD, Touch controller, sensor or something else. The context
+/// It can be the HMD, Touch controller, sensor or something else. The context
/// depends on the usage of the struct.
typedef struct OVR_ALIGNAS(8) ovrPoseStatef_
{
@@ -687,7 +693,7 @@ typedef enum ovrTextureFormat_
///
typedef enum ovrTextureMiscFlags_
{
- ovrTextureMisc_None,
+ ovrTextureMisc_None,
/// DX only: The underlying texture is created with a TYPELESS equivalent of the
/// format specified in the texture desc. The SDK will still access the
@@ -745,28 +751,22 @@ typedef struct ovrMirrorTextureData* ovrMirrorTexture;
//-----------------------------------------------------------------------------------
/// Describes button input types.
-/// Button inputs are combined; that is they will be reported as pressed if they are
+/// Button inputs are combined; that is they will be reported as pressed if they are
/// pressed on either one of the two devices.
/// The ovrButton_Up/Down/Left/Right map to both XBox D-Pad and directional buttons.
/// The ovrButton_Enter and ovrButton_Return map to Start and Back controller buttons, respectively.
typedef enum ovrButton_
-{
+{
ovrButton_A = 0x00000001,
ovrButton_B = 0x00000002,
ovrButton_RThumb = 0x00000004,
ovrButton_RShoulder = 0x00000008,
- // Bit mask of all buttons on the right Touch controller
- ovrButton_RMask = ovrButton_A | ovrButton_B | ovrButton_RThumb | ovrButton_RShoulder,
-
ovrButton_X = 0x00000100,
ovrButton_Y = 0x00000200,
- ovrButton_LThumb = 0x00000400,
+ ovrButton_LThumb = 0x00000400,
ovrButton_LShoulder = 0x00000800,
- // Bit mask of all buttons on the left Touch controller
- ovrButton_LMask = ovrButton_X | ovrButton_Y | ovrButton_LThumb | ovrButton_LShoulder,
-
// Navigation through DPad.
ovrButton_Up = 0x00010000,
ovrButton_Down = 0x00020000,
@@ -776,9 +776,16 @@ typedef enum ovrButton_
ovrButton_Back = 0x00200000, // Back on Xbox controller.
ovrButton_VolUp = 0x00400000, // only supported by Remote.
ovrButton_VolDown = 0x00800000, // only supported by Remote.
- ovrButton_Home = 0x01000000,
+ ovrButton_Home = 0x01000000,
ovrButton_Private = ovrButton_VolUp | ovrButton_VolDown | ovrButton_Home,
+ // Bit mask of all buttons on the right Touch controller
+ ovrButton_RMask = ovrButton_A | ovrButton_B | ovrButton_RThumb | ovrButton_RShoulder,
+
+ // Bit mask of all buttons on the left Touch controller
+ ovrButton_LMask = ovrButton_X | ovrButton_Y | ovrButton_LThumb | ovrButton_LShoulder |
+ ovrButton_Enter,
+
ovrButton_EnumSize = 0x7fffffff ///< \internal Force type int32_t.
} ovrButton;
@@ -806,7 +813,7 @@ typedef enum ovrTouch_
// Bit mask of all the button touches on the left controller
ovrTouch_LButtonMask = ovrTouch_X | ovrTouch_Y | ovrTouch_LThumb | ovrTouch_LThumbRest | ovrTouch_LIndexTrigger,
- // Finger pose state
+ // Finger pose state
// Derived internally based on distance, proximity to sensors and filtering.
ovrTouch_RIndexPointing = 0x00000020,
ovrTouch_RThumbUp = 0x00000040,
@@ -823,6 +830,25 @@ typedef enum ovrTouch_
ovrTouch_EnumSize = 0x7fffffff ///< \internal Force type int32_t.
} ovrTouch;
+/// Describes the Touch Haptics engine.
+/// Currently, those values will NOT change during a session.
+typedef struct OVR_ALIGNAS(OVR_PTR_SIZE) ovrTouchHapticsDesc_
+{
+ // Haptics engine frequency/sample-rate, sample time in seconds equals 1.0/sampleRateHz
+ int SampleRateHz;
+ // Size of each Haptics sample, sample value range is [0, 2^(Bytes*8)-1]
+ int SampleSizeInBytes;
+
+ // Queue size that would guarantee Haptics engine would not starve for data
+ // Make sure size doesn't drop below it for best results
+ int QueueMinSizeToAvoidStarvation;
+
+ // Minimum, Maximum and Optimal number of samples that can be sent to Haptics through ovr_SubmitControllerVibration
+ int SubmitMinSamples;
+ int SubmitMaxSamples;
+ int SubmitOptimalSamples;
+} ovrTouchHapticsDesc;
+
/// Specifies which controller is connected; multiple can be connected at once.
typedef enum ovrControllerType_
{
@@ -838,11 +864,45 @@ typedef enum ovrControllerType_
ovrControllerType_EnumSize = 0x7fffffff ///< \internal Force type int32_t.
} ovrControllerType;
+/// Haptics buffer submit mode
+typedef enum ovrHapticsBufferSubmitMode_
+{
+ // Enqueue buffer for later playback
+ ovrHapticsBufferSubmit_Enqueue
+} ovrHapticsBufferSubmitMode;
+
+/// Haptics buffer descriptor, contains amplitude samples used for Touch vibration
+typedef struct ovrHapticsBuffer_
+{
+ const void* Samples;
+ int SamplesCount;
+ ovrHapticsBufferSubmitMode SubmitMode;
+} ovrHapticsBuffer;
+
+/// State of the Haptics playback for Touch vibration
+typedef struct ovrHapticsPlaybackState_
+{
+ // Remaining space available to queue more samples
+ int RemainingQueueSpace;
+
+ // Number of samples currently queued
+ int SamplesQueued;
+} ovrHapticsPlaybackState;
+
+/// Position tracked devices
+typedef enum ovrTrackedDeviceType_
+{
+ ovrTrackedDevice_HMD = 0x0001,
+ ovrTrackedDevice_LTouch = 0x0002,
+ ovrTrackedDevice_RTouch = 0x0004,
+ ovrTrackedDevice_Touch = 0x0006,
+ ovrTrackedDevice_All = 0xFFFF,
+} ovrTrackedDeviceType;
/// Provides names for the left and right hand array indexes.
///
/// \see ovrInputState, ovrTrackingState
-///
+///
typedef enum ovrHandType_
{
ovrHand_Left = 0,
@@ -858,27 +918,43 @@ typedef enum ovrHandType_
/// their inputs are combined.
typedef struct ovrInputState_
{
- // System type when the controller state was last updated.
+ /// System type when the controller state was last updated.
double TimeInSeconds;
- // Values for buttons described by ovrButton.
+ /// Values for buttons described by ovrButton.
unsigned int Buttons;
- // Touch values for buttons and sensors as described by ovrTouch.
+ /// Touch values for buttons and sensors as described by ovrTouch.
unsigned int Touches;
-
- // Left and right finger trigger values (ovrHand_Left and ovrHand_Right), in the range 0.0 to 1.0f.
+
+ /// Left and right finger trigger values (ovrHand_Left and ovrHand_Right), in the range 0.0 to 1.0f.
+ /// Returns 0 if the value would otherwise be less than 0.1176, for ovrControllerType_XBox
float IndexTrigger[ovrHand_Count];
-
- // Left and right hand trigger values (ovrHand_Left and ovrHand_Right), in the range 0.0 to 1.0f.
+
+ /// Left and right hand trigger values (ovrHand_Left and ovrHand_Right), in the range 0.0 to 1.0f.
float HandTrigger[ovrHand_Count];
- // Horizontal and vertical thumbstick axis values (ovrHand_Left and ovrHand_Right), in the range -1.0f to 1.0f.
+ /// Horizontal and vertical thumbstick axis values (ovrHand_Left and ovrHand_Right), in the range -1.0f to 1.0f.
+ /// Returns a deadzone (value 0) per each axis if the value on that axis would otherwise have been between -.2746 to +.2746, for ovrControllerType_XBox
ovrVector2f Thumbstick[ovrHand_Count];
- // The type of the controller this state is for.
+ /// The type of the controller this state is for.
ovrControllerType ControllerType;
-
+
+ /// Left and right finger trigger values (ovrHand_Left and ovrHand_Right), in the range 0.0 to 1.0f.
+ /// Does not apply a deadzone
+ /// Added in 1.7
+ float IndexTriggerNoDeadzone[ovrHand_Count];
+
+ /// Left and right hand trigger values (ovrHand_Left and ovrHand_Right), in the range 0.0 to 1.0f.
+ /// Does not apply a deadzone
+ /// Added in 1.7
+ float HandTriggerNoDeadzone[ovrHand_Count];
+
+ /// Horizontal and vertical thumbstick axis values (ovrHand_Left and ovrHand_Right), in the range -1.0f to 1.0f
+ /// Does not apply a deadzone
+ /// Added in 1.7
+ ovrVector2f ThumbstickNoDeadzone[ovrHand_Count];
} ovrInputState;
@@ -951,8 +1027,8 @@ typedef struct OVR_ALIGNAS(8) ovrInitParams_
/// Use NULL to specify no log callback.
ovrLogCallback LogCallback;
- /// User-supplied data which is passed as-is to LogCallback. Typically this
- /// is used to store an application-specific pointer which is read in the
+ /// User-supplied data which is passed as-is to LogCallback. Typically this
+ /// is used to store an application-specific pointer which is read in the
/// callback function.
uintptr_t UserData;
@@ -969,6 +1045,7 @@ typedef struct OVR_ALIGNAS(8) ovrInitParams_
extern "C" {
#endif
+#if !defined(OVR_EXPORTING_CAPI)
// -----------------------------------------------------------------------------------
// ***** API Interfaces
@@ -981,7 +1058,7 @@ extern "C" {
/// 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,
@@ -1121,21 +1198,21 @@ OVR_PUBLIC_FUNCTION(ovrResult) ovr_IdentifyClient(const char* identity);
///
/// ovr_Initialize must have first been called in order for this to succeed, otherwise ovrHmdDesc::Type
/// will be reported as ovrHmd_None.
-///
+///
/// \param[in] session Specifies an ovrSession previously returned by ovr_Create, else NULL in which
/// case this function detects whether an HMD is present and returns its info if so.
///
-/// \return Returns an ovrHmdDesc. If the hmd is NULL and ovrHmdDesc::Type is ovrHmd_None then
+/// \return Returns an ovrHmdDesc. If the hmd is NULL and ovrHmdDesc::Type is ovrHmd_None then
/// no HMD is present.
///
OVR_PUBLIC_FUNCTION(ovrHmdDesc) ovr_GetHmdDesc(ovrSession session);
-/// Returns the number of sensors.
+/// Returns the number of sensors.
///
-/// The number of sensors may change at any time, so this function should be called before use
+/// The number of sensors may change at any time, so this function should be called before use
/// as opposed to once on startup.
-///
+///
/// \param[in] session Specifies an ovrSession previously returned by ovr_Create.
///
/// \return Returns unsigned int count.
@@ -1145,15 +1222,15 @@ OVR_PUBLIC_FUNCTION(unsigned int) ovr_GetTrackerCount(ovrSession session);
/// Returns a given sensor description.
///
-/// It's possible that sensor desc [0] may indicate a unconnnected or non-pose tracked sensor, but
+/// It's possible that sensor desc [0] may indicate a unconnnected or non-pose tracked sensor, but
/// sensor desc [1] may be connected.
///
/// ovr_Initialize must have first been called in order for this to succeed, otherwise the returned
/// trackerDescArray will be zero-initialized. The data returned by this function can change at runtime.
-///
+///
/// \param[in] session Specifies an ovrSession previously returned by ovr_Create.
-///
-/// \param[in] trackerDescIndex Specifies a sensor index. The valid indexes are in the range of 0 to
+///
+/// \param[in] trackerDescIndex Specifies a sensor index. The valid indexes are in the range of 0 to
/// the sensor count returned by ovr_GetTrackerCount.
///
/// \return Returns ovrTrackerDesc. An empty ovrTrackerDesc will be returned if trackerDescIndex is out of range.
@@ -1197,6 +1274,7 @@ OVR_PUBLIC_FUNCTION(ovrResult) ovr_Create(ovrSession* pSession, ovrGraphicsLuid*
///
OVR_PUBLIC_FUNCTION(void) ovr_Destroy(ovrSession session);
+#endif // !defined(OVR_EXPORTING_CAPI)
/// Specifies status information for the current session.
///
@@ -1208,10 +1286,11 @@ typedef struct ovrSessionStatus_
ovrBool HmdPresent; ///< True if an HMD is present.
ovrBool HmdMounted; ///< True if the HMD is on the user's head.
ovrBool DisplayLost; ///< True if the session is in a display-lost state. See ovr_SubmitFrame.
- ovrBool ShouldQuit; ///< True if the application should initiate shutdown.
+ ovrBool ShouldQuit; ///< True if the application should initiate shutdown.
ovrBool ShouldRecenter; ///< True if UX has requested re-centering. Must call ovr_ClearShouldRecenterFlag or ovr_RecenterTrackingOrigin.
}ovrSessionStatus;
+#if !defined(OVR_EXPORTING_CAPI)
/// Returns status information for the application.
///
@@ -1248,7 +1327,7 @@ OVR_PUBLIC_FUNCTION(ovrResult) ovr_GetSessionStatus(ovrSession session, ovrSessi
///
/// When the tracking origin is changed, all of the calls that either provide
/// or accept ovrPosef will use the new tracking origin provided.
-///
+///
/// \param[in] session Specifies an ovrSession previously returned by ovr_Create.
/// \param[in] origin Specifies an ovrTrackingOrigin to be used for all ovrPosef
///
@@ -1260,7 +1339,7 @@ OVR_PUBLIC_FUNCTION(ovrResult) ovr_SetTrackingOriginType(ovrSession session, ovr
/// Gets the tracking origin state
-///
+///
/// \param[in] session Specifies an ovrSession previously returned by ovr_Create.
///
/// \return Returns the ovrTrackingOrigin that was either set by default, or previous set by the application.
@@ -1274,9 +1353,9 @@ OVR_PUBLIC_FUNCTION(ovrTrackingOrigin) ovr_GetTrackingOriginType(ovrSession sess
/// This resets the (x,y,z) positional components and the yaw orientation component.
/// The Roll and pitch orientation components are always determined by gravity and cannot
/// be redefined. All future tracking will report values relative to this new reference position.
-/// If you are using ovrTrackerPoses then you will need to call ovr_GetTrackerPose after
+/// If you are using ovrTrackerPoses then you will need to call ovr_GetTrackerPose after
/// this, because the sensor position(s) will change as a result of this.
-///
+///
/// The headset cannot be facing vertically upward or downward but rather must be roughly
/// level otherwise this function will fail with ovrError_InvalidHeadsetOrientation.
///
@@ -1298,7 +1377,7 @@ OVR_PUBLIC_FUNCTION(ovrResult) ovr_RecenterTrackingOrigin(ovrSession session);
/// Clears the ShouldRecenter status bit in ovrSessionStatus.
///
-/// Clears the ShouldRecenter status bit in ovrSessionStatus, allowing further recenter
+/// Clears the ShouldRecenter status bit in ovrSessionStatus, allowing further recenter
/// requests to be detected. Since this is automatically done by ovr_RecenterTrackingOrigin,
/// this is only needs to be called when application is doing its own re-centering.
OVR_PUBLIC_FUNCTION(void) ovr_ClearShouldRecenterFlag(ovrSession session);
@@ -1358,28 +1437,52 @@ OVR_PUBLIC_FUNCTION(ovrResult) ovr_GetInputState(ovrSession session, ovrControll
///
OVR_PUBLIC_FUNCTION(unsigned int) ovr_GetConnectedControllerTypes(ovrSession session);
+/// Gets information about Haptics engine for the specified Touch controller.
+///
+/// \param[in] session Specifies an ovrSession previously returned by ovr_Create.
+/// \param[in] controllerType The controller to retrieve the information from.
+///
+/// \return Returns an ovrTouchHapticsDesc.
+///
+OVR_PUBLIC_FUNCTION(ovrTouchHapticsDesc) ovr_GetTouchHapticsDesc(ovrSession session, ovrControllerType controllerType);
-/// Turns on vibration of the given controller.
+/// Sets constant vibration (with specified frequency and amplitude) to a controller.
+/// Note: ovr_SetControllerVibration cannot be used interchangeably with ovr_SubmitControllerVibration.
///
-/// To disable vibration, call ovr_SetControllerVibration with an amplitude of 0.
-/// Vibration automatically stops after a nominal amount of time, so if you want vibration
-/// to be continuous over multiple seconds then you need to call this function periodically.
+/// This method should be called periodically, vibration lasts for a maximum of 2.5 seconds.
+/// It's recommended to call this method once a second, calls will be rejected if called too frequently (over 30hz).
///
/// \param[in] session Specifies an ovrSession previously returned by ovr_Create.
-/// \param[in] controllerType Specifies the controller to apply the vibration to.
-/// \param[in] frequency Specifies a vibration frequency in the range of 0.0 to 1.0.
-/// Currently the only valid values are 0.0, 0.5, and 1.0 and other values will
-/// be clamped to one of these.
-/// \param[in] amplitude Specifies a vibration amplitude in the range of 0.0 to 1.0.
-///
+/// \param[in] controllerType The controller to set the vibration to.
+/// \param[in] frequency Vibration frequency. Supported values are: 0.0 (disabled), 0.5 and 1.0. Non valid values will be clamped.
+/// \param[in] amplitude Vibration amplitude in the [0.0, 1.0] range.
/// \return Returns ovrSuccess upon success.
///
-/// \see ovrControllerType
-///
OVR_PUBLIC_FUNCTION(ovrResult) ovr_SetControllerVibration(ovrSession session, ovrControllerType controllerType, float frequency, float amplitude);
+/// Submits a Haptics buffer (used for vibration) to Touch (only) controllers.
+/// Note: ovr_SubmitControllerVibration cannot be used interchangeably with ovr_SetControllerVibration.
+///
+/// \param[in] session Specifies an ovrSession previously returned by ovr_Create.
+/// \param[in] controllerType Controller where the Haptics buffer will be played.
+/// \param[in] buffer Haptics buffer containing amplitude samples to be played.
+/// \return Returns ovrSuccess upon success.
+/// \see ovrHapticsBuffer
+///
+OVR_PUBLIC_FUNCTION(ovrResult) ovr_SubmitControllerVibration(ovrSession session, ovrControllerType controllerType, const ovrHapticsBuffer* buffer);
+
+/// Gets the Haptics engine playback state of a specific Touch controller.
+///
+/// \param[in] session Specifies an ovrSession previously returned by ovr_Create.
+/// \param[in] controllerType Controller where the Haptics buffer wil be played.
+/// \param[in] outState State of the haptics engine.
+/// \return Returns ovrSuccess upon success.
+/// \see ovrHapticsPlaybackState
+///
+OVR_PUBLIC_FUNCTION(ovrResult) ovr_GetControllerVibrationState(ovrSession session, ovrControllerType controllerType, ovrHapticsPlaybackState* outState);
+
-///@}
+#endif // !defined(OVR_EXPORTING_CAPI)
//-------------------------------------------------------------------------------------
// @name Layers
@@ -1603,7 +1706,7 @@ typedef union ovrLayer_Union_
//@}
-
+#if !defined(OVR_EXPORTING_CAPI)
/// @name SDK Distortion Rendering
///
@@ -1626,7 +1729,7 @@ typedef union ovrLayer_Union_
/// \param[in] chain Specifies the ovrTextureSwapChain for which the length should be retrieved.
/// \param[out] out_Length Returns the number of buffers in the specified chain.
///
-/// \return Returns an ovrResult for which OVR_SUCCESS(result) is false upon error.
+/// \return Returns an ovrResult for which OVR_SUCCESS(result) is false upon error.
///
/// \see ovr_CreateTextureSwapChainDX, ovr_CreateTextureSwapChainGL
///
@@ -1638,7 +1741,7 @@ OVR_PUBLIC_FUNCTION(ovrResult) ovr_GetTextureSwapChainLength(ovrSession session,
/// \param[in] chain Specifies the ovrTextureSwapChain for which the index should be retrieved.
/// \param[out] out_Index Returns the current (free) index in specified chain.
///
-/// \return Returns an ovrResult for which OVR_SUCCESS(result) is false upon error.
+/// \return Returns an ovrResult for which OVR_SUCCESS(result) is false upon error.
///
/// \see ovr_CreateTextureSwapChainDX, ovr_CreateTextureSwapChainGL
///
@@ -1650,7 +1753,7 @@ OVR_PUBLIC_FUNCTION(ovrResult) ovr_GetTextureSwapChainCurrentIndex(ovrSession se
/// \param[in] chain Specifies the ovrTextureSwapChain for which the description should be retrieved.
/// \param[out] out_Desc Returns the description of the specified chain.
///
-/// \return Returns an ovrResult for which OVR_SUCCESS(result) is false upon error.
+/// \return Returns an ovrResult for which OVR_SUCCESS(result) is false upon error.
///
/// \see ovr_CreateTextureSwapChainDX, ovr_CreateTextureSwapChainGL
///
@@ -1667,7 +1770,7 @@ OVR_PUBLIC_FUNCTION(ovrResult) ovr_GetTextureSwapChainDesc(ovrSession session, o
/// it will synchronize with the app's graphics context and pick up the submitted index, opening up
/// room in the swap chain for further commits.
///
-/// \return Returns an ovrResult for which OVR_SUCCESS(result) is false upon error.
+/// \return Returns an ovrResult for which OVR_SUCCESS(result) is false upon error.
/// Failures include but aren't limited to:
/// - ovrError_TextureSwapChainFull: ovr_CommitTextureSwapChain was called too many times on a texture swapchain without calling submit to use the chain.
///
@@ -1795,7 +1898,7 @@ OVR_PUBLIC_FUNCTION(ovrEyeRenderDesc) ovr_GetRenderDesc(ovrSession session,
/// destroyed (ovr_Destroy) and recreated (ovr_Create), and new resources need to be created
/// (ovr_CreateTextureSwapChainXXX). The application's existing private graphics resources do not
/// need to be recreated unless the new ovr_Create call returns a different GraphicsLuid.
-/// - ovrError_TextureSwapChainInvalid: The ovrTextureSwapChain is in an incomplete or inconsistent state.
+/// - ovrError_TextureSwapChainInvalid: The ovrTextureSwapChain is in an incomplete or inconsistent state.
/// Ensure ovr_CommitTextureSwapChain was called at least once first.
///
/// \see ovr_GetPredictedDisplayTime, ovrViewScaleDesc, ovrLayerHeader
@@ -1805,7 +1908,7 @@ OVR_PUBLIC_FUNCTION(ovrResult) ovr_SubmitFrame(ovrSession session, long long fra
ovrLayerHeader const * const * layerPtrList, unsigned int layerCount);
///@}
-
+#endif // !defined(OVR_EXPORTING_CAPI)
//-------------------------------------------------------------------------------------
/// @name Frame Timing
@@ -1813,26 +1916,28 @@ OVR_PUBLIC_FUNCTION(ovrResult) ovr_SubmitFrame(ovrSession session, long long fra
//@{
+#if !defined(OVR_EXPORTING_CAPI)
+
/// Gets the time of the specified frame midpoint.
///
-/// Predicts the time at which the given frame will be displayed. The predicted time
-/// is the middle of the time period during which the corresponding eye images will
-/// be displayed.
+/// Predicts the time at which the given frame will be displayed. The predicted time
+/// is the middle of the time period during which the corresponding eye images will
+/// be displayed.
///
/// The application should increment frameIndex for each successively targeted frame,
-/// and pass that index to any relevent OVR functions that need to apply to the frame
+/// and pass that index to any relevant OVR functions that need to apply to the frame
/// identified by that index.
///
/// This function is thread-safe and allows for multiple application threads to target
/// their processing to the same displayed frame.
-///
+///
/// In the even that prediction fails due to various reasons (e.g. the display being off
/// or app has yet to present any frames), the return value will be current CPU time.
-///
+///
/// \param[in] session Specifies an ovrSession previously returned by ovr_Create.
/// \param[in] frameIndex Identifies the frame the caller wishes to target.
/// A value of zero returns the next frame index.
-/// \return Returns the absolute frame midpoint time for the given frameIndex.
+/// \return Returns the absolute frame midpoint time for the given frameIndex.
/// \see ovr_GetTimeInSeconds
///
OVR_PUBLIC_FUNCTION(double) ovr_GetPredictedDisplayTime(ovrSession session, long long frameIndex);
@@ -1848,6 +1953,7 @@ OVR_PUBLIC_FUNCTION(double) ovr_GetPredictedDisplayTime(ovrSession session, long
///
OVR_PUBLIC_FUNCTION(double) ovr_GetTimeInSeconds();
+#endif // !defined(OVR_EXPORTING_CAPI)
/// Performance HUD enables the HMD user to see information critical to
/// the real-time operation of the VR application such as latency timing,
@@ -1889,7 +1995,7 @@ typedef enum ovrLayerHudMode_
///@}
/// Debug HUD is provided to help developers gauge and debug the fidelity of their app's
-/// stereo rendering characteristics. Using the provided quad and crosshair guides,
+/// stereo rendering characteristics. Using the provided quad and crosshair guides,
/// the developer can verify various aspects such as VR tracking units (e.g. meters),
/// stereo camera-parallax properties (e.g. making sure objects at infinity are rendered
/// with the proper separation), measuring VR geometry sizes and distances and more.
@@ -1915,7 +2021,7 @@ typedef enum ovrDebugHudStereoMode_
} ovrDebugHudStereoMode;
-
+#if !defined(OVR_EXPORTING_CAPI)
// -----------------------------------------------------------------------------------
/// @name Property Access
@@ -2033,7 +2139,7 @@ OVR_PUBLIC_FUNCTION(ovrBool) ovr_SetString(ovrSession session, const char* prope
///@}
-
+#endif // !defined(OVR_EXPORTING_CAPI)
#ifdef __cplusplus
} // extern "C"
@@ -2094,10 +2200,10 @@ OVR_STATIC_ASSERT(sizeof(ovrLogLevel) == 4, "ovrLogLevel size mismatch");
OVR_STATIC_ASSERT(sizeof(ovrInitParams) == 4 + 4 + sizeof(ovrLogCallback) + sizeof(uintptr_t) + 4 + 4,
"ovrInitParams size mismatch");
-OVR_STATIC_ASSERT(sizeof(ovrHmdDesc) ==
+OVR_STATIC_ASSERT(sizeof(ovrHmdDesc) ==
+ sizeof(ovrHmdType) // Type
OVR_ON64(+ 4) // pad0
- + 64 // ProductName
+ + 64 // ProductName
+ 64 // Manufacturer
+ 2 // VendorId
+ 2 // ProductId