diff options
Diffstat (limited to 'gfx/vr/osvr/ClientKit/DisplayC.h')
-rw-r--r-- | gfx/vr/osvr/ClientKit/DisplayC.h | 506 |
1 files changed, 0 insertions, 506 deletions
diff --git a/gfx/vr/osvr/ClientKit/DisplayC.h b/gfx/vr/osvr/ClientKit/DisplayC.h deleted file mode 100644 index 75155e6b3..000000000 --- a/gfx/vr/osvr/ClientKit/DisplayC.h +++ /dev/null @@ -1,506 +0,0 @@ -/** @file - @brief Header - - Must be c-safe! - - @date 2015 - - @author - Sensics, Inc. - <http://sensics.com/osvr> -*/ - -/* -// Copyright 2015 Sensics, Inc. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// 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 INCLUDED_DisplayC_h_GUID_8658EDC9_32A2_49A2_5F5C_10F67852AE74 -#define INCLUDED_DisplayC_h_GUID_8658EDC9_32A2_49A2_5F5C_10F67852AE74 - -/* Internal Includes */ -#include <osvr/ClientKit/Export.h> -#include <osvr/Util/APIBaseC.h> -#include <osvr/Util/ReturnCodesC.h> -#include <osvr/Util/ClientOpaqueTypesC.h> -#include <osvr/Util/RenderingTypesC.h> -#include <osvr/Util/MatrixConventionsC.h> -#include <osvr/Util/Pose3C.h> -#include <osvr/Util/BoolC.h> -#include <osvr/Util/RadialDistortionParametersC.h> - -/* Library/third-party includes */ -/* none */ - -/* Standard includes */ -/* none */ - -OSVR_EXTERN_C_BEGIN -/** @addtogroup ClientKit - @{ - @name Display API - @{ -*/ - -/** @brief Opaque type of a display configuration. */ -typedef struct OSVR_DisplayConfigObject *OSVR_DisplayConfig; - -/** @brief Allocates a display configuration object populated with data from the - OSVR system. - - Before this call will succeed, your application will need to be correctly - and fully connected to an OSVR server. You may consider putting this call in - a loop alternating with osvrClientUpdate() until this call succeeds. - - Data provided by a display configuration object: - - - The logical display topology (number and relationship of viewers, eyes, - and surfaces), which remains constant throughout the life of the - configuration object. (A method of notification of change here is TBD). - - Pose data for viewers (not required for rendering) and pose/view data for - eyes (used for rendering) which is based on tracker data: if used, these - should be queried every frame. - - Projection matrix data for surfaces, which while in current practice may - be relatively unchanging, we are not guaranteeing them to be constant: - these should be queried every frame. - - Video-input-relative viewport size/location for a surface: would like this - to be variable, but probably not feasible. If you have input, please - comment on the dev mailing list. - - Per-surface distortion strategy priorities/availabilities: constant. Note - the following, though... - - Per-surface distortion strategy parameters: variable, request each frame. - (Could make constant with a notification if needed?) - - Important note: While most of this data is immediately available if you are - successful in getting a display config object, the pose-based data (viewer - pose, eye pose, eye view matrix) needs tracker state, so at least one (and in - practice, typically more) osvrClientUpdate() must be performed before a new - tracker report is available to populate that state. See - osvrClientCheckDisplayStartup() to query if all startup data is available. - - @todo Decide if relative viewport should be constant in a display config, - and update docs accordingly. - - @todo Decide if distortion params should be constant in a display config, - and update docs accordingly. - - @return OSVR_RETURN_FAILURE if invalid parameters were passed or some other - error occurred, in which case the output argument is unmodified. -*/ -OSVR_CLIENTKIT_EXPORT OSVR_ReturnCode -osvrClientGetDisplay(OSVR_ClientContext ctx, OSVR_DisplayConfig *disp); - -/** @brief Frees a display configuration object. The corresponding context must - still be open. - - If you fail to call this, it will be automatically called as part of - clean-up when the corresponding context is closed. - - @return OSVR_RETURN_FAILURE if a null config was passed, or if the given - display object was already freed. -*/ -OSVR_CLIENTKIT_EXPORT OSVR_ReturnCode -osvrClientFreeDisplay(OSVR_DisplayConfig disp); - -/** @brief Checks to see if a display is fully configured and ready, including - having received its first pose update. - - Once this first succeeds, it will continue to succeed for the lifetime of - the display config object, so it is not necessary to keep calling once you - get a successful result. - - @return OSVR_RETURN_FAILURE if a null config was passed, or if the given - display config object was otherwise not ready for full use. -*/ -OSVR_CLIENTKIT_EXPORT OSVR_ReturnCode -osvrClientCheckDisplayStartup(OSVR_DisplayConfig disp); - -/** @brief A display config can have one or more display inputs to pass pixels - over (HDMI/DVI connections, etc): retrieve the number of display inputs in - the current configuration. - - @param disp Display config object. - @param[out] numDisplayInputs Number of display inputs in the logical display - topology, **constant** throughout the active, valid lifetime of a display - config object. - - @sa OSVR_DisplayInputCount - - @return OSVR_RETURN_FAILURE if invalid parameters were passed, in - which case the output argument is unmodified. -*/ -OSVR_CLIENTKIT_EXPORT OSVR_ReturnCode osvrClientGetNumDisplayInputs( - OSVR_DisplayConfig disp, OSVR_DisplayInputCount *numDisplayInputs); - -/** @brief Retrieve the pixel dimensions of a given display input for a display - config - - @param disp Display config object. - @param displayInputIndex The zero-based index of the display input. - @param[out] width Width (in pixels) of the display input. - @param[out] height Height (in pixels) of the display input. - - The out parameters are **constant** throughout the active, valid lifetime of - a display config object. - - @sa OSVR_DisplayDimension - - @return OSVR_RETURN_FAILURE if invalid parameters were passed, in - which case the output arguments are unmodified. -*/ -OSVR_CLIENTKIT_EXPORT OSVR_ReturnCode osvrClientGetDisplayDimensions( - OSVR_DisplayConfig disp, OSVR_DisplayInputCount displayInputIndex, - OSVR_DisplayDimension *width, OSVR_DisplayDimension *height); - -/** @brief A display config can have one (or theoretically more) viewers: - retrieve the viewer count. - - @param disp Display config object. - @param[out] viewers Number of viewers in the logical display topology, - **constant** throughout the active, valid lifetime of a display config - object. - - @sa OSVR_ViewerCount - - @return OSVR_RETURN_FAILURE if invalid parameters were passed, in which case - the output argument is unmodified. -*/ -OSVR_CLIENTKIT_EXPORT OSVR_ReturnCode -osvrClientGetNumViewers(OSVR_DisplayConfig disp, OSVR_ViewerCount *viewers); - -/** @brief Get the pose of a viewer in a display config. - - Note that there may not necessarily be any surfaces rendered from this pose - (it's the unused "center" eye in a stereo configuration, for instance) so - only use this if it makes integration into your engine or existing - applications (not originally designed for stereo) easier. - - Will only succeed if osvrClientCheckDisplayStartup() succeeds. - - @return OSVR_RETURN_FAILURE if invalid parameters were passed or no pose was - yet available, in which case the pose argument is unmodified. -*/ -OSVR_CLIENTKIT_EXPORT OSVR_ReturnCode osvrClientGetViewerPose( - OSVR_DisplayConfig disp, OSVR_ViewerCount viewer, OSVR_Pose3 *pose); - -/** @brief Each viewer in a display config can have one or more "eyes" which - have a substantially similar pose: get the count. - - @param disp Display config object. - @param viewer Viewer ID - @param[out] eyes Number of eyes for this viewer in the logical display - topology, **constant** throughout the active, valid lifetime of a display - config object - - @sa OSVR_EyeCount - - @return OSVR_RETURN_FAILURE if invalid parameters were passed, in which case - the output argument is unmodified. -*/ -OSVR_CLIENTKIT_EXPORT OSVR_ReturnCode osvrClientGetNumEyesForViewer( - OSVR_DisplayConfig disp, OSVR_ViewerCount viewer, OSVR_EyeCount *eyes); - -/** @brief Get the "viewpoint" for the given eye of a viewer in a display - config. - - Will only succeed if osvrClientCheckDisplayStartup() succeeds. - - @param disp Display config object - @param viewer Viewer ID - @param eye Eye ID - @param[out] pose Room-space pose (not relative to pose of the viewer) - - @return OSVR_RETURN_FAILURE if invalid parameters were passed or no pose was - yet available, in which case the pose argument is unmodified. -*/ -OSVR_CLIENTKIT_EXPORT OSVR_ReturnCode -osvrClientGetViewerEyePose(OSVR_DisplayConfig disp, OSVR_ViewerCount viewer, - OSVR_EyeCount eye, OSVR_Pose3 *pose); - -/** @brief Get the view matrix (inverse of pose) for the given eye of a - viewer in a display config - matrix of **doubles**. - - Will only succeed if osvrClientCheckDisplayStartup() succeeds. - - @param disp Display config object - @param viewer Viewer ID - @param eye Eye ID - @param flags Bitwise OR of matrix convention flags (see @ref MatrixFlags) - @param[out] mat Pass a double[::OSVR_MATRIX_SIZE] to get the transformation - matrix from room space to eye space (not relative to pose of the viewer) - - @return OSVR_RETURN_FAILURE if invalid parameters were passed or no pose was - yet available, in which case the output argument is unmodified. -*/ -OSVR_CLIENTKIT_EXPORT OSVR_ReturnCode osvrClientGetViewerEyeViewMatrixd( - OSVR_DisplayConfig disp, OSVR_ViewerCount viewer, OSVR_EyeCount eye, - OSVR_MatrixConventions flags, double *mat); - -/** @brief Get the view matrix (inverse of pose) for the given eye of a - viewer in a display config - matrix of **floats**. - - Will only succeed if osvrClientCheckDisplayStartup() succeeds. - - @param disp Display config object - @param viewer Viewer ID - @param eye Eye ID - @param flags Bitwise OR of matrix convention flags (see @ref MatrixFlags) - @param[out] mat Pass a float[::OSVR_MATRIX_SIZE] to get the transformation - matrix from room space to eye space (not relative to pose of the viewer) - - @return OSVR_RETURN_FAILURE if invalid parameters were passed or no pose was - yet available, in which case the output argument is unmodified. -*/ -OSVR_CLIENTKIT_EXPORT OSVR_ReturnCode osvrClientGetViewerEyeViewMatrixf( - OSVR_DisplayConfig disp, OSVR_ViewerCount viewer, OSVR_EyeCount eye, - OSVR_MatrixConventions flags, float *mat); - -/** @brief Each eye of each viewer in a display config has one or more surfaces - (aka "screens") on which content should be rendered. - - @param disp Display config object - @param viewer Viewer ID - @param eye Eye ID - @param[out] surfaces Number of surfaces (numbered [0, surfaces - 1]) for the - given viewer and eye. **Constant** throughout the active, valid lifetime of - a display config object. - - @sa OSVR_SurfaceCount - - @return OSVR_RETURN_FAILURE if invalid parameters were passed, in which case - the output argument is unmodified. -*/ -OSVR_CLIENTKIT_EXPORT OSVR_ReturnCode osvrClientGetNumSurfacesForViewerEye( - OSVR_DisplayConfig disp, OSVR_ViewerCount viewer, OSVR_EyeCount eye, - OSVR_SurfaceCount *surfaces); - -/** @brief Get the dimensions/location of the viewport **within the display - input** for a surface seen by an eye of a viewer in a display config. (This - does not include other video inputs that may be on a single virtual desktop, - etc. or explicitly account for display configurations that use multiple - video inputs. It does not necessarily indicate that a viewport in the sense - of glViewport must be created with these parameters, though the parameter - order matches for convenience.) - - @param disp Display config object - @param viewer Viewer ID - @param eye Eye ID - @param surface Surface ID - @param[out] left Output: Distance in pixels from the left of the video input - to the left of the viewport. - @param[out] bottom Output: Distance in pixels from the bottom of the video - input to the bottom of the viewport. - @param[out] width Output: Width of viewport in pixels. - @param[out] height Output: Height of viewport in pixels. - - - @return OSVR_RETURN_FAILURE if invalid parameters were passed, in which case - the output arguments are unmodified. -*/ -OSVR_CLIENTKIT_EXPORT OSVR_ReturnCode -osvrClientGetRelativeViewportForViewerEyeSurface( - OSVR_DisplayConfig disp, OSVR_ViewerCount viewer, OSVR_EyeCount eye, - OSVR_SurfaceCount surface, OSVR_ViewportDimension *left, - OSVR_ViewportDimension *bottom, OSVR_ViewportDimension *width, - OSVR_ViewportDimension *height); - -/** @brief Get the index of the display input for a surface seen by an eye of a - viewer in a display config. - - This is the OSVR-assigned display input: it may not (and in practice, - usually will not) match any platform-specific display indices. This function - exists to associate surfaces with video inputs as enumerated by - osvrClientGetNumDisplayInputs(). - - @param disp Display config object - @param viewer Viewer ID - @param eye Eye ID - @param surface Surface ID - @param[out] displayInput Zero-based index of the display input pixels for - this surface are tranmitted over. - - This association is **constant** throughout the active, valid lifetime of a - display config object. - - @sa osvrClientGetNumDisplayInputs(), - osvrClientGetRelativeViewportForViewerEyeSurface() - - @return OSVR_RETURN_FAILURE if invalid parameters were passed, in which - case the output argument is unmodified. - */ -OSVR_CLIENTKIT_EXPORT OSVR_ReturnCode -osvrClientGetViewerEyeSurfaceDisplayInputIndex( - OSVR_DisplayConfig disp, OSVR_ViewerCount viewer, OSVR_EyeCount eye, - OSVR_SurfaceCount surface, OSVR_DisplayInputCount *displayInput); - -/** @brief Get the projection matrix for a surface seen by an eye of a viewer - in a display config. (double version) - - @param disp Display config object - @param viewer Viewer ID - @param eye Eye ID - @param surface Surface ID - @param near Distance from viewpoint to near clipping plane - must be - positive. - @param far Distance from viewpoint to far clipping plane - must be positive - and not equal to near, typically greater than near. - @param flags Bitwise OR of matrix convention flags (see @ref MatrixFlags) - @param[out] matrix Output projection matrix: supply an array of 16 - (::OSVR_MATRIX_SIZE) doubles. - - @return OSVR_RETURN_FAILURE if invalid parameters were passed, in which case - the output argument is unmodified. -*/ -OSVR_CLIENTKIT_EXPORT OSVR_ReturnCode -osvrClientGetViewerEyeSurfaceProjectionMatrixd( - OSVR_DisplayConfig disp, OSVR_ViewerCount viewer, OSVR_EyeCount eye, - OSVR_SurfaceCount surface, double near, double far, - OSVR_MatrixConventions flags, double *matrix); - -/** @brief Get the projection matrix for a surface seen by an eye of a viewer - in a display config. (float version) - - @param disp Display config object - @param viewer Viewer ID - @param eye Eye ID - @param surface Surface ID - @param near Distance to near clipping plane - must be nonzero, typically - positive. - @param far Distance to far clipping plane - must be nonzero, typically - positive and greater than near. - @param flags Bitwise OR of matrix convention flags (see @ref MatrixFlags) - @param[out] matrix Output projection matrix: supply an array of 16 - (::OSVR_MATRIX_SIZE) floats. - - @return OSVR_RETURN_FAILURE if invalid parameters were passed, in which case - the output argument is unmodified. -*/ -OSVR_CLIENTKIT_EXPORT OSVR_ReturnCode -osvrClientGetViewerEyeSurfaceProjectionMatrixf( - OSVR_DisplayConfig disp, OSVR_ViewerCount viewer, OSVR_EyeCount eye, - OSVR_SurfaceCount surface, float near, float far, - OSVR_MatrixConventions flags, float *matrix); - -/** @brief Get the clipping planes (positions at unit distance) for a surface - seen by an eye of a viewer - in a display config. - - This is only for use in integrations that cannot accept a fully-formulated - projection matrix as returned by - osvrClientGetViewerEyeSurfaceProjectionMatrixf() or - osvrClientGetViewerEyeSurfaceProjectionMatrixd(), and may not necessarily - provide the same optimizations. - - As all the planes are given at unit (1) distance, before passing these - planes to a consuming function in your application/engine, you will typically - divide them by your near clipping plane distance. - - @param disp Display config object - @param viewer Viewer ID - @param eye Eye ID - @param surface Surface ID - @param[out] left Distance to left clipping plane - @param[out] right Distance to right clipping plane - @param[out] bottom Distance to bottom clipping plane - @param[out] top Distance to top clipping plane - - @return OSVR_RETURN_FAILURE if invalid parameters were passed, in which case - the output arguments are unmodified. -*/ -OSVR_CLIENTKIT_EXPORT OSVR_ReturnCode -osvrClientGetViewerEyeSurfaceProjectionClippingPlanes( - OSVR_DisplayConfig disp, OSVR_ViewerCount viewer, OSVR_EyeCount eye, - OSVR_SurfaceCount surface, double *left, double *right, double *bottom, - double *top); - -/** @brief Determines if a surface seen by an eye of a viewer in a display - config requests some distortion to be performed. - - This simply reports true or false, and does not specify which kind of - distortion implementations have been parameterized for this display. For - each distortion implementation your application supports, you'll want to - call the corresponding priority function to find out if it is available. - - @param disp Display config object - @param viewer Viewer ID - @param eye Eye ID - @param surface Surface ID - @param[out] distortionRequested Output parameter: whether distortion is - requested. **Constant** throughout the active, valid lifetime of a display - config object. - - @return OSVR_RETURN_FAILURE if invalid parameters were passed, in which case - the output argument is unmodified. -*/ -OSVR_CLIENTKIT_EXPORT OSVR_ReturnCode -osvrClientDoesViewerEyeSurfaceWantDistortion(OSVR_DisplayConfig disp, - OSVR_ViewerCount viewer, - OSVR_EyeCount eye, - OSVR_SurfaceCount surface, - OSVR_CBool *distortionRequested); - -/** @brief Returns the priority/availability of radial distortion parameters for - a surface seen by an eye of a viewer in a display config. - - If osvrClientDoesViewerEyeSurfaceWantDistortion() reports false, then the - display does not request distortion of any sort, and thus neither this nor - any other distortion strategy priority function will report an "available" - priority. - - @param disp Display config object - @param viewer Viewer ID - @param eye Eye ID - @param surface Surface ID - @param[out] priority Output: the priority level. Negative values - (canonically OSVR_DISTORTION_PRIORITY_UNAVAILABLE) indicate this technique - not available, higher values indicate higher preference for the given - technique based on the device's description. **Constant** throughout the - active, valid lifetime of a display config object. - - @return OSVR_RETURN_FAILURE if invalid parameters were passed, in which case - the output argument is unmodified. -*/ -OSVR_CLIENTKIT_EXPORT OSVR_ReturnCode -osvrClientGetViewerEyeSurfaceRadialDistortionPriority( - OSVR_DisplayConfig disp, OSVR_ViewerCount viewer, OSVR_EyeCount eye, - OSVR_SurfaceCount surface, OSVR_DistortionPriority *priority); - -/** @brief Returns the radial distortion parameters, if known/requested, for a - surface seen by an eye of a viewer in a display config. - - Will only succeed if osvrClientGetViewerEyeSurfaceRadialDistortionPriority() - reports a non-negative priority. - - @param disp Display config object - @param viewer Viewer ID - @param eye Eye ID - @param surface Surface ID - @param[out] params Output: the parameters for radial distortion - - @return OSVR_RETURN_FAILURE if this surface does not have these parameters - described, or if invalid parameters were passed, in which case the output - argument is unmodified. -*/ -OSVR_CLIENTKIT_EXPORT OSVR_ReturnCode -osvrClientGetViewerEyeSurfaceRadialDistortion( - OSVR_DisplayConfig disp, OSVR_ViewerCount viewer, OSVR_EyeCount eye, - OSVR_SurfaceCount surface, OSVR_RadialDistortionParameters *params); - -/** @} - @} -*/ - -OSVR_EXTERN_C_END - -#endif |