![JAR search and dependency download from the Maven repository](/logo.png)
org.lwjgl.ovr.OVR Maven / Gradle / Ivy
Show all versions of lwjgl-ovr Show documentation
/*
* Copyright LWJGL. All rights reserved.
* License terms: https://www.lwjgl.org/license
* MACHINE GENERATED FILE, DO NOT EDIT
*/
package org.lwjgl.ovr;
import javax.annotation.*;
import java.nio.*;
import org.lwjgl.*;
import org.lwjgl.system.*;
import static org.lwjgl.system.Checks.*;
import static org.lwjgl.system.MemoryStack.*;
import static org.lwjgl.system.MemoryUtil.*;
/** Native bindings to libOVR, using the Oculus SDK C API. */
public class OVR {
static { LibOVR.initialize(); }
/** Boolean values */
public static final int
ovrFalse = 0,
ovrTrue = 1;
/**
* Initialization flags. ({@code ovrInitFlags})
*
* Enum values:
*
*
* - {@link #ovrInit_Debug Init_Debug} -
* When a debug library is requested, a slower debugging version of the library will run which can be used to help solve problems in the library and
* debug application code.
*
* - {@link #ovrInit_RequestVersion Init_RequestVersion} -
* When a version is requested, the LibOVR runtime respects the {@code RequestedMinorVersion} field and verifies that the
* {@code RequestedMinorVersion} is supported.
*
*
When a version is requested, the LibOVR runtime respects the {@code RequestedMinorVersion} field and verifies that the
* {@code RequestedMinorVersion} is supported. Normally when you specify this flag you simply use {@link OVRVersion#OVR_MINOR_VERSION MINOR_VERSION} for
* {@link OVRInitParams}{@code ::RequestedMinorVersion}, though you could use a lower version than {@link OVRVersion#OVR_MINOR_VERSION MINOR_VERSION} to specify previous version behavior.
*
* - {@link #ovrInit_Invisible Init_Invisible} - This client will not be visible in the HMD. Typically set by diagnostic or debugging utilities.
* - {@link #ovrInit_MixedRendering Init_MixedRendering} - This client will alternate between VR and 2D rendering. Typically set by game engine editors and VR-enabled web browsers.
* - {@link #ovrInit_FocusAware Init_FocusAware} -
* This client is aware of {@link OVRSessionStatus} focus states (e.g. {@code ovrSessionStatus::HasInputFocus}), and responds to them appropriately
* (e.g. pauses and stops drawing hands when lacking focus).
*
* - {@link #ovrInit_WritableBits Init_WritableBits} - These bits are writable by user code.
*
*/
public static final int
ovrInit_Debug = 0x1,
ovrInit_RequestVersion = 0x4,
ovrInit_Invisible = 0x10,
ovrInit_MixedRendering = 0x20,
ovrInit_FocusAware = 0x40,
ovrInit_WritableBits = 0xFFFFFF;
/**
* Logging levels. ({@code ovrLogLevel})
*
* Enum values:
*
*
* - {@link #ovrLogLevel_Debug LogLevel_Debug} - Debug-level log event.
* - {@link #ovrLogLevel_Info LogLevel_Info} - Info-level log event.
* - {@link #ovrLogLevel_Error LogLevel_Error} - Error-level log event.
*
*/
public static final int
ovrLogLevel_Debug = 0,
ovrLogLevel_Info = 1,
ovrLogLevel_Error = 2;
/**
* HMD types. ({@code ovrHmdType})
*
* Enum values:
*
*
* - {@link #ovrHmd_None Hmd_None}
* - {@link #ovrHmd_DK2 Hmd_DK2}
* - {@link #ovrHmd_CB Hmd_CB}
* - {@link #ovrHmd_Other Hmd_Other}
* - {@link #ovrHmd_E3_2015 Hmd_E3_2015}
* - {@link #ovrHmd_ES06 Hmd_ES06}
* - {@link #ovrHmd_ES09 Hmd_ES09}
* - {@link #ovrHmd_ES11 Hmd_ES11}
* - {@link #ovrHmd_CV1 Hmd_CV1}
* - {@link #ovrHmd_RiftS Hmd_RiftS}
* - {@link #ovrHmd_Quest Hmd_Quest}
* - {@link #ovrHmd_Quest2 Hmd_Quest2}
*
*/
public static final int
ovrHmd_None = 0,
ovrHmd_DK2 = 6,
ovrHmd_CB = 8,
ovrHmd_Other = 9,
ovrHmd_E3_2015 = 10,
ovrHmd_ES06 = 11,
ovrHmd_ES09 = 12,
ovrHmd_ES11 = 13,
ovrHmd_CV1 = 14,
ovrHmd_RiftS = 15,
ovrHmd_Quest = 19,
ovrHmd_Quest2 = 20;
/**
* HMD capability bits reported by device. ({@code ovrHmdCaps})
*
* Enum values:
*
*
* - {@link #ovrHmdCap_DebugDevice HmdCap_DebugDevice} - (read only) Specifies that the HMD is a virtual debug device.
*
*/
public static final int ovrHmdCap_DebugDevice = 0x10;
/**
* Tracking capability bits reported by the device. ({@code ovrTrackingCaps})
*
* Enum values:
*
*
* - {@link #ovrTrackingCap_Orientation TrackingCap_Orientation} - Supports orientation tracking (IMU).
* - {@link #ovrTrackingCap_MagYawCorrection TrackingCap_MagYawCorrection} - Supports yaw drift correction.
* - {@link #ovrTrackingCap_Position TrackingCap_Position} - Supports positional tracking.
*
*/
public static final int
ovrTrackingCap_Orientation = 0x10,
ovrTrackingCap_MagYawCorrection = 0x20,
ovrTrackingCap_Position = 0x40;
/**
* Optional extensions. ({@code ovrExtensions})
*
* Enum values:
*
*
* - {@link #ovrExtension_TextureLayout_Octilinear Extension_TextureLayout_Octilinear} - Enable before first layer submission.
*
*/
public static final int ovrExtension_TextureLayout_Octilinear = 0;
/**
* Specifies which eye is being used for rendering. ({@code ovrEyeType})
*
* This type explicitly does not include a third "NoStereo" monoscopic option, as such is not required for an HMD-centered API.
*
* Enum values:
*
*
* - {@link #ovrEye_Left Eye_Left} - The left eye, from the viewer's perspective.
* - {@link #ovrEye_Right Eye_Right} - The right eye, from the viewer's perspective.
* - {@link #ovrEye_Count Eye_Count} - Count of enumerated elements.
*
*/
public static final int
ovrEye_Left = 0,
ovrEye_Right = 1,
ovrEye_Count = 2;
/**
* Specifies the coordinate system ovrTrackingState returns tracking poses in. ({@code ovrTrackingOrigin})
*
* Used with {@link #ovr_SetTrackingOriginType SetTrackingOriginType}.
*
* Enum values:
*
*
* - {@link #ovrTrackingOrigin_EyeLevel TrackingOrigin_EyeLevel} -
* Tracking system origin reported at eye (HMD) height.
*
*
Prefer using this origin when your application requires matching user's current physical head pose to a virtual head pose without any regards to a
* the height of the floor. Cockpit-based, or 3rd-person experiences are ideal candidates. When used, all poses in {@link OVRTrackingState} are reported as
* an offset transform from the profile calibrated or recentered HMD pose. It is recommended that apps using this origin type call
* {@link #ovr_RecenterTrackingOrigin RecenterTrackingOrigin} prior to starting the VR experience, but notify the user before doing so to make sure the user is in a comfortable pose,
* facing a comfortable direction.
*
* - {@link #ovrTrackingOrigin_FloorLevel TrackingOrigin_FloorLevel} -
* Tracking system origin reported at floor height.
*
*
Prefer using this origin when your application requires the physical floor height to match the virtual floor height, such as standing experiences.
* When used, all poses in {@link OVRTrackingState} are reported as an offset transform from the profile calibrated floor pose. Calling
* {@link #ovr_RecenterTrackingOrigin RecenterTrackingOrigin} will recenter the X & Z axes as well as yaw, but the Y-axis (i.e. height) will continue to be reported using the
* floor height as the origin for all poses.
*
*
*/
public static final int
ovrTrackingOrigin_EyeLevel = 0,
ovrTrackingOrigin_FloorLevel = 1;
/**
* Color space types for HMDs.
*
* Until {@link #ovr_SetClientColorDesc SetClientColorDesc} is called, for backwards compatibility, a new session will start with {@link #ovrColorSpace_Unknown ColorSpace_Unknown} which will default to
* {@link #ovrColorSpace_Rift_CV1 ColorSpace_Rift_CV1}. This assumes the app visuals were authored to be viewed in a Rift CV1 HMD. Therefore it does the following:
*
*
* - For Rift CV1, assumes submitted images are authored for CV1 color space, and keeps them as is.
* - For Rift S and Quest (via Oculus Link), converts images to reproduce CV1's color space.
*
*
* This API only handles color-space remapping. Unless specified, all color spaces use D65 white point. This API will not affect brightness, contrast or
* gamma curves. Some of these aspects such as gamma, is handled by the texture format being used. From the GPU samplers' point-of-view, each texture will
* continue to be treated as linear luminance including the sRGB format which is converted to linear by the texture sampler.
*
* It is recommended that content is authored for the Rift CV1 color space as it has a wider color gamut than the Rift S. If content is authored to a
* narrow color space such as "Rec. 709" or "Rift S", this can lead to content looking "dull", "washed out" or "desaturated" when viewed in a
* wider-color-space-capable device such as Rift CV1 and Quest. This is because the colors stored in the submitted images will no longer be able to hit
* the deeper saturated chromaticity values.
*
* Using {@link #ovrColorSpace_Unmanaged ColorSpace_Unmanaged} will force the runtime to skip color correction on to the provided content. This is not recommended unless the app
* developer is sure about what they're doing. {@code ovrColorSpace_Unmanaged} is mostly useful for research & experimentation, but not for software
* distribution. This is because unless the client is applying the necessary corrections for each HMD type, the results seen in the HMD will be
* uncalibrated. This is especially true for future HMDs where the color space is not yet known or defined, leading to colors that might look too dull or
* saturated.
*
* Requested rectilinear-mirror outputs are composited without any color space adjustment. However, if client requests a post-distortion (i.e.
* non-rectilinear) mirror output, it will be provided with the same color adjustment that was applied for the HMD output. Therefore, post-distortion
* mirror output are not guaranteed to have acceptable color-space accuracy for desktop viewing.
*
* Color Space Details with Chromaticity Primaries in CIE 1931 xy:
*
*
* Color Space: Rift CV1 between P3 & Adobe RGB using D75 white point
* Red : (0.666, 0.334)
* Green: (0.238, 0.714)
* Blue : (0.139, 0.053)
* White: (0.298, 0.318)
*
* Color Space: Quest similar to Rift CV1 using D75 white point
* Red : (0.661, 0.338)
* Green: (0.228, 0.718)
* Blue : (0.142, 0.042)
* White: (0.298, 0.318)
*
* Color Space: Rift S similar to Rec 709 using D75
* Red : (0.640, 0.330)
* Green: (0.292, 0.586)
* Blue : (0.156, 0.058)
* White: (0.298, 0.318)
*
* Color Space: P3, similar to DCI-P3, but using D65 white point instead.
* Red : (0.680, 0.320)
* Green: (0.265, 0.690)
* Blue : (0.150, 0.060)
* White: (0.313, 0.329)
*
* Note: Due to LCD limitations, the Rift S display will not be able to meaningfully differentiate brightness levels below 13 out of 255 for 8-bit sRGB or
* 0.0015 out of 1.0 max for linear-RGB shader output values. To that end, it is recommended that reliance on a dark and narrow gamut is avoided, and the
* content is instead spread across a larger brightness range when possible.
*
* Enum values:
*
*
* - {@link #ovrColorSpace_Unknown ColorSpace_Unknown} - Default value until client sets calls {@link #ovr_SetClientColorDesc SetClientColorDesc}
* - {@link #ovrColorSpace_Unmanaged ColorSpace_Unmanaged} - See notes above. No correction, i.e. color space of active HMD
* - {@link #ovrColorSpace_Rift_CV1 ColorSpace_Rift_CV1} - See notes above. Unique color space.
* - {@link #ovrColorSpace_Rift_S ColorSpace_Rift_S} - See notes above. Unique color space.
* - {@link #ovrColorSpace_Quest ColorSpace_Quest} - See notes above. Unique color space.
* - {@link #ovrColorSpace_Rec_2020 ColorSpace_Rec_2020} - Standard Rec. 2020 chromaticities
* - {@link #ovrColorSpace_Rec_709 ColorSpace_Rec_709} - Standard Rec. 709 chromaticities, similar to sRGB
* - {@link #ovrColorSpace_P3 ColorSpace_P3} - See notes above
* - {@link #ovrColorSpace_Adobe_RGB ColorSpace_Adobe_RGB} - Standard AdobeRGB chromaticities
*
*/
public static final int
ovrColorSpace_Unknown = 0,
ovrColorSpace_Unmanaged = 1,
ovrColorSpace_Rift_CV1 = 2,
ovrColorSpace_Rift_S = 3,
ovrColorSpace_Quest = 4,
ovrColorSpace_Rec_2020 = 5,
ovrColorSpace_Rec_709 = 6,
ovrColorSpace_P3 = 7,
ovrColorSpace_Adobe_RGB = 8;
/**
* Bit flags describing the current status of sensor tracking. ({@code ovrStatusBits}
*
* Enum values:
*
*
* - {@link #ovrStatus_OrientationTracked Status_OrientationTracked} -
* Device orientation is currently tracked.
*
*
It's possible that the device orientation is not tracked, but its reported orientation is nevertheless valid (e.g. due to estimation).
*
* - {@link #ovrStatus_PositionTracked Status_PositionTracked} -
* Device position is currently tracked.
*
*
It's possible that the device position is not tracked, but its reported position is nevertheless valid (e.g. due to estimation).
*
* - {@link #ovrStatus_OrientationValid Status_OrientationValid} -
* The reported device orientation is valid for application use.
*
*
In the case that {@code OrientationValid} is true and {@code OrientationTracked} is false, the runtime may be estimating the orientation of the
* device. In the case that {@code OrientationValid} is false, the application should not use the returned orientation value.
*
* - {@link #ovrStatus_PositionValid Status_PositionValid} -
* The reported device orientation is valid for application use.
*
*
In the case that {@code PositionValid} is true and {@code PositionTracked} is false, the runtime may be estimating the position of the device. In
* the case that {@code PositionValid} is false, the application should not use the returned position value.
*
*
*/
public static final int
ovrStatus_OrientationTracked = 0x1,
ovrStatus_PositionTracked = 0x2,
ovrStatus_OrientationValid = 0x4,
ovrStatus_PositionValid = 0x8;
/**
* Specifies sensor flags. ({@code ovrTrackerFlags})
*
* Enum values:
*
*
* - {@link #ovrTracker_Connected Tracker_Connected} - The sensor is present, else the sensor is absent or offline.
* - {@link #ovrTracker_PoseTracked Tracker_PoseTracked} - The sensor has a valid pose, else the pose is unavailable. This will only be set if ovrTracker_Connected is set.
*
*/
public static final int
ovrTracker_Connected = 0x20,
ovrTracker_PoseTracked = 0x4;
/**
* The type of texture resource. ({@code ovrTextureType})
*
* Enum values:
*
*
* - {@link #ovrTexture_2D Texture_2D} - 2D textures or texture arrays.
* - {@link #ovrTexture_2D_External Texture_2D_External} - Application-provided 2D texture. Not supported on PC.
* - {@link #ovrTexture_Cube Texture_Cube} - Cube maps. {@link OVRTextureSwapChainDesc}{@code ::ArraySize} must be 6 for this type.
*
*/
public static final int
ovrTexture_2D = 0,
ovrTexture_2D_External = 1,
ovrTexture_Cube = 2;
/**
* The bindings required for texture swap chain. ({@code ovrTextureBindFlags})
*
* All texture swap chains are automatically bindable as shader input resources since the Oculus runtime needs this to read them.
*
* Enum values:
*
*
* - {@link #ovrTextureBind_None TextureBind_None}
* - {@link #ovrTextureBind_DX_RenderTarget TextureBind_DX_RenderTarget} - The application can write into the chain with pixel shader
* - {@link #ovrTextureBind_DX_UnorderedAccess TextureBind_DX_UnorderedAccess} - The application can write to the chain with compute shader
* - {@link #ovrTextureBind_DX_DepthStencil TextureBind_DX_DepthStencil} - The chain buffers can be bound as depth and/or stencil buffers. This flag cannot be combined with {@link #ovrTextureBind_DX_RenderTarget TextureBind_DX_RenderTarget}.
*
*/
public static final int
ovrTextureBind_None = 0,
ovrTextureBind_DX_RenderTarget = 0x1,
ovrTextureBind_DX_UnorderedAccess = 0x2,
ovrTextureBind_DX_DepthStencil = 0x4;
/**
* The format of a texture. ({@code ovrTextureFormat})
*
* Enum values:
*
*
* - {@link #OVR_FORMAT_UNKNOWN OVR_FORMAT_UNKNOWN}
* - {@link #OVR_FORMAT_B5G6R5_UNORM OVR_FORMAT_B5G6R5_UNORM} - Not currently supported on PC. Requires a DirectX 11.1 device.
* - {@link #OVR_FORMAT_B5G5R5A1_UNORM OVR_FORMAT_B5G5R5A1_UNORM} - Not currently supported on PC. Requires a DirectX 11.1 device.
* - {@link #OVR_FORMAT_B4G4R4A4_UNORM OVR_FORMAT_B4G4R4A4_UNORM} - Not currently supported on PC. Requires a DirectX 11.1 device.
* - {@link #OVR_FORMAT_R8G8B8A8_UNORM OVR_FORMAT_R8G8B8A8_UNORM}
* - {@link #OVR_FORMAT_R8G8B8A8_UNORM_SRGB OVR_FORMAT_R8G8B8A8_UNORM_SRGB}
* - {@link #OVR_FORMAT_B8G8R8A8_UNORM OVR_FORMAT_B8G8R8A8_UNORM}
* - {@link #OVR_FORMAT_B8G8R8_UNORM OVR_FORMAT_B8G8R8_UNORM} - Not currently supported.
* - {@link #OVR_FORMAT_B8G8R8A8_UNORM_SRGB OVR_FORMAT_B8G8R8A8_UNORM_SRGB} - Not supported for OpenGL applications.
* - {@link #OVR_FORMAT_B8G8R8X8_UNORM OVR_FORMAT_B8G8R8X8_UNORM} - Not supported for OpenGL applications.
* - {@link #OVR_FORMAT_B8G8R8X8_UNORM_SRGB OVR_FORMAT_B8G8R8X8_UNORM_SRGB} - Not supported for OpenGL applications.
* - {@link #OVR_FORMAT_R16G16B16A16_FLOAT OVR_FORMAT_R16G16B16A16_FLOAT}
* - {@link #OVR_FORMAT_R11G11B10_FLOAT OVR_FORMAT_R11G11B10_FLOAT} - Not supported for D3D12 applications.
* - {@link #OVR_FORMAT_D16_UNORM OVR_FORMAT_D16_UNORM}
* - {@link #OVR_FORMAT_D24_UNORM_S8_UINT OVR_FORMAT_D24_UNORM_S8_UINT}
* - {@link #OVR_FORMAT_D32_FLOAT OVR_FORMAT_D32_FLOAT}
* - {@link #OVR_FORMAT_D32_FLOAT_S8X24_UINT OVR_FORMAT_D32_FLOAT_S8X24_UINT}
* - {@link #OVR_FORMAT_BC1_UNORM OVR_FORMAT_BC1_UNORM}
* - {@link #OVR_FORMAT_BC1_UNORM_SRGB OVR_FORMAT_BC1_UNORM_SRGB}
* - {@link #OVR_FORMAT_BC2_UNORM OVR_FORMAT_BC2_UNORM}
* - {@link #OVR_FORMAT_BC2_UNORM_SRGB OVR_FORMAT_BC2_UNORM_SRGB}
* - {@link #OVR_FORMAT_BC3_UNORM OVR_FORMAT_BC3_UNORM}
* - {@link #OVR_FORMAT_BC3_UNORM_SRGB OVR_FORMAT_BC3_UNORM_SRGB}
* - {@link #OVR_FORMAT_BC6H_UF16 OVR_FORMAT_BC6H_UF16}
* - {@link #OVR_FORMAT_BC6H_SF16 OVR_FORMAT_BC6H_SF16}
* - {@link #OVR_FORMAT_BC7_UNORM OVR_FORMAT_BC7_UNORM}
* - {@link #OVR_FORMAT_BC7_UNORM_SRGB OVR_FORMAT_BC7_UNORM_SRGB}
*
*/
public static final int
OVR_FORMAT_UNKNOWN = 0,
OVR_FORMAT_B5G6R5_UNORM = 1,
OVR_FORMAT_B5G5R5A1_UNORM = 2,
OVR_FORMAT_B4G4R4A4_UNORM = 3,
OVR_FORMAT_R8G8B8A8_UNORM = 4,
OVR_FORMAT_R8G8B8A8_UNORM_SRGB = 5,
OVR_FORMAT_B8G8R8A8_UNORM = 6,
OVR_FORMAT_B8G8R8_UNORM = 27,
OVR_FORMAT_B8G8R8A8_UNORM_SRGB = 7,
OVR_FORMAT_B8G8R8X8_UNORM = 8,
OVR_FORMAT_B8G8R8X8_UNORM_SRGB = 9,
OVR_FORMAT_R16G16B16A16_FLOAT = 10,
OVR_FORMAT_R11G11B10_FLOAT = 25,
OVR_FORMAT_D16_UNORM = 11,
OVR_FORMAT_D24_UNORM_S8_UINT = 12,
OVR_FORMAT_D32_FLOAT = 13,
OVR_FORMAT_D32_FLOAT_S8X24_UINT = 14,
OVR_FORMAT_BC1_UNORM = 15,
OVR_FORMAT_BC1_UNORM_SRGB = 16,
OVR_FORMAT_BC2_UNORM = 17,
OVR_FORMAT_BC2_UNORM_SRGB = 18,
OVR_FORMAT_BC3_UNORM = 19,
OVR_FORMAT_BC3_UNORM_SRGB = 20,
OVR_FORMAT_BC6H_UF16 = 21,
OVR_FORMAT_BC6H_SF16 = 22,
OVR_FORMAT_BC7_UNORM = 23,
OVR_FORMAT_BC7_UNORM_SRGB = 24;
/**
* Misc flags overriding particular behaviors of a texture swap chain. ({@code ovrTextureFlags})
*
* Enum values:
*
*
* - {@link #ovrTextureMisc_None TextureMisc_None}
* - {@link #ovrTextureMisc_DX_Typeless TextureMisc_DX_Typeless} -
* 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
* texture using the format specified in the texture desc, but the app can create views with different formats if this is specified.
*
* - {@link #ovrTextureMisc_AllowGenerateMips TextureMisc_AllowGenerateMips} - DX only: Allow generation of the mip chain on the GPU via the GenerateMips call. This flag requires that RenderTarget binding also be specified.
* - {@link #ovrTextureMisc_ProtectedContent TextureMisc_ProtectedContent} -
* Texture swap chain contains protected content, and requires HDCP connection in order to display to HMD. Also prevents mirroring or other
* redirection of any frame containing this contents
*
* - {@link #ovrTextureMisc_AutoGenerateMips TextureMisc_AutoGenerateMips} -
* Automatically generate and use the mip chain in composition on each submission. Mips are regenerated from highest quality level, ignoring other
* pre-existing mip levels.
*
*
Not supported for depth or compressed (BC) formats.
*
*
*/
public static final int
ovrTextureMisc_None = 0,
ovrTextureMisc_DX_Typeless = 0x1,
ovrTextureMisc_AllowGenerateMips = 0x2,
ovrTextureMisc_ProtectedContent = 0x4,
ovrTextureMisc_AutoGenerateMips = 0x8;
/**
* Bit flags used as part of {@link OVRMirrorTextureDesc}'s {@code MirrorOptions} field. {@code ovrMirrorOptions}
*
* Enum values:
*
*
* - {@link #ovrMirrorOption_Default MirrorOption_Default} -
* By default the mirror texture will be:
*
*
* - Pre-distortion (i.e. rectilinear)
* - Contain both eye textures
* - Exclude Guardian, Notifications, System Menu GUI
*
*
* - {@link #ovrMirrorOption_PostDistortion MirrorOption_PostDistortion} -
* Retrieves the barrel distorted texture contents instead of the rectilinear one.
*
*
This is only recommended for debugging purposes, and not for final desktop presentation.
*
* - {@link #ovrMirrorOption_LeftEyeOnly MirrorOption_LeftEyeOnly} - Since {@link #ovrMirrorOption_Default MirrorOption_Default} renders both eyes into the mirror texture, these two flags are exclusive (i.e. cannot use them simultaneously)
* - {@link #ovrMirrorOption_RightEyeOnly MirrorOption_RightEyeOnly} - See {@link #ovrMirrorOption_LeftEyeOnly MirrorOption_LeftEyeOnly}
* - {@link #ovrMirrorOption_IncludeGuardian MirrorOption_IncludeGuardian} - Shows the boundary system aka Guardian on the mirror texture.
* - {@link #ovrMirrorOption_IncludeNotifications MirrorOption_IncludeNotifications} - Shows system notifications the user receives on the mirror texture.
* - {@link #ovrMirrorOption_IncludeSystemGui MirrorOption_IncludeSystemGui} - Shows the system menu (triggered by hitting the Home button) on the mirror texture.
* - {@link #ovrMirrorOption_ForceSymmetricFov MirrorOption_ForceSymmetricFov} -
* Forces mirror output to use max symmetric FOV instead of asymmetric full FOV used by HMD.
*
*
Only valid for rectilinear mirrors i.e. using {@link #ovrMirrorOption_PostDistortion MirrorOption_PostDistortion} with {@code ovrMirrorOption_ForceSymmetricFov} will result in
* {@link OVRErrorCode#ovrError_InvalidParameter Error_InvalidParameter} error.
*
*
*/
public static final int
ovrMirrorOption_Default = 0x0,
ovrMirrorOption_PostDistortion = 0x1,
ovrMirrorOption_LeftEyeOnly = 0x2,
ovrMirrorOption_RightEyeOnly = 0x4,
ovrMirrorOption_IncludeGuardian = 0x8,
ovrMirrorOption_IncludeNotifications = 0x10,
ovrMirrorOption_IncludeSystemGui = 0x20,
ovrMirrorOption_ForceSymmetricFov = 0x40;
/**
* Viewport stencil types provided by the {@link #ovr_GetFovStencil GetFovStencil} call. {@code ovrFovStencilType}
*
* Enum values:
*
*
* - {@link #ovrFovStencil_HiddenArea FovStencil_HiddenArea} - Triangle list covering parts that are hidden to users.
* - {@link #ovrFovStencil_VisibleArea FovStencil_VisibleArea} - Triangle list covering parts that are visible to users.
* - {@link #ovrFovStencil_BorderLine FovStencil_BorderLine} - Line list that draws the boundary visible to users.
* - {@link #ovrFovStencil_VisibleRectangle FovStencil_VisibleRectangle} - Axis-aligned rectangle fit in visible region. 4x vertices: TopLeft, TopRight, BottomRight, BottomLeft.
*
*/
public static final int
ovrFovStencil_HiddenArea = 0,
ovrFovStencil_VisibleArea = 1,
ovrFovStencil_BorderLine = 2,
ovrFovStencil_VisibleRectangle = 3;
/**
* Flags used by {@link OVRFovStencilDesc} and which are passed to {@link #ovr_GetFovStencil GetFovStencil}. ({@code ovrFovStencilFlags}
*
* Enum values:
*
*
* - {@link #ovrFovStencilFlag_MeshOriginAtBottomLeft FovStencilFlag_MeshOriginAtBottomLeft} -
* When used, flips the Y component of the provided 2D mesh coordinates, such that Y increases upwards. When not used, places mesh origin at top-left
* where Y increases downwards.
*
*
*/
public static final int ovrFovStencilFlag_MeshOriginAtBottomLeft = 0x1;
/**
* Describes button input types.({@code ovrButton})
*
* Button inputs are combined; that is they will be reported as pressed if they are pressed on either one of the two devices. The
* {@code ovrButton_Up/Down/Left/Right} map to both XBox D-Pad and directional buttons. The {@code ovrButton_Enter} and {@code ovrButton_Return} map to
* Start and Back controller buttons, respectively.
*
* Enum values:
*
*
* - {@link #ovrButton_A Button_A} - A button on XBox controllers and right Touch controller. Select button on Oculus Remote.
* - {@link #ovrButton_B Button_B} - B button on XBox controllers and right Touch controller. Back button on Oculus Remote.
* - {@link #ovrButton_RThumb Button_RThumb} - Right thumbstick on XBox controllers and Touch controllers. Not present on Oculus Remote.
* - {@link #ovrButton_RShoulder Button_RShoulder} - Right shoulder button on XBox controllers. Not present on Touch controllers or Oculus Remote.
* - {@link #ovrButton_X Button_X} - X button on XBox controllers and left Touch controller. Not present on Oculus Remote.
* - {@link #ovrButton_Y Button_Y} - Y button on XBox controllers and left Touch controller. Not present on Oculus Remote.
* - {@link #ovrButton_LThumb Button_LThumb} - Left thumbstick on XBox controllers and Touch controllers. Not present on Oculus Remote.
* - {@link #ovrButton_LShoulder Button_LShoulder} - Left shoulder button on XBox controllers. Not present on Touch controllers or Oculus Remote.
* - {@link #ovrButton_Up Button_Up} - Up button on XBox controllers and Oculus Remote. Not present on Touch controllers.
* - {@link #ovrButton_Down Button_Down} - Down button on XBox controllers and Oculus Remote. Not present on Touch controllers.
* - {@link #ovrButton_Left Button_Left} - Left button on XBox controllers and Oculus Remote. Not present on Touch controllers.
* - {@link #ovrButton_Right Button_Right} - Right button on XBox controllers and Oculus Remote. Not present on Touch controllers.
* - {@link #ovrButton_Enter Button_Enter} -
* Start on XBox 360 controller. Menu on XBox One controller and Left Touch controller. Should be referred to as the Menu button in user-facing
* documentation.
*
* - {@link #ovrButton_Back Button_Back} - Back on Xbox 360 controller. View button on XBox One controller. Not present on Touch controllers or Oculus Remote.
* - {@link #ovrButton_VolUp Button_VolUp} - Volume button on Oculus Remote. Not present on XBox or Touch controllers.
* - {@link #ovrButton_VolDown Button_VolDown} - Volume button on Oculus Remote. Not present on XBox or Touch controllers.
* - {@link #ovrButton_Home Button_Home} - Home button on XBox controllers. Oculus button on Touch controllers and Oculus Remote.
* - {@link #ovrButton_Private Button_Private} - Bit mask of all buttons that are for private usage by Oculus
* - {@link #ovrButton_RMask Button_RMask} - Bit mask of all buttons on the right Touch controller
* - {@link #ovrButton_LMask Button_LMask} - Bit mask of all buttons on the left Touch controller
*
*/
public static final int
ovrButton_A = 0x1,
ovrButton_B = 0x2,
ovrButton_RThumb = 0x4,
ovrButton_RShoulder = 0x8,
ovrButton_X = 0x100,
ovrButton_Y = 0x200,
ovrButton_LThumb = 0x400,
ovrButton_LShoulder = 0x800,
ovrButton_Up = 0x10000,
ovrButton_Down = 0x20000,
ovrButton_Left = 0x40000,
ovrButton_Right = 0x80000,
ovrButton_Enter = 0x100000,
ovrButton_Back = 0x200000,
ovrButton_VolUp = 0x400000,
ovrButton_VolDown = 0x800000,
ovrButton_Home = 0x1000000,
ovrButton_Private = ovrButton_VolUp | ovrButton_VolDown | ovrButton_Home,
ovrButton_RMask = ovrButton_A | ovrButton_B | ovrButton_RThumb | ovrButton_RShoulder,
ovrButton_LMask = ovrButton_X | ovrButton_Y | ovrButton_LThumb | ovrButton_LShoulder | ovrButton_Enter;
/**
* Describes touch input types. ({@code ovrTouch})
*
* These values map to capacitive touch values reported {@link OVRInputState}{@code ::Touch}. Some of these values are mapped to button bits for consistency.
*
* Enum values:
*
*
* - {@link #ovrTouch_A Touch_A} - Touch A
* - {@link #ovrTouch_B Touch_B} - Touch B
* - {@link #ovrTouch_RThumb Touch_RThumb} - Touch RThumb
* - {@link #ovrTouch_RThumbRest Touch_RThumbRest} - Touch RThumbRest
* - {@link #ovrTouch_RIndexTrigger Touch_RIndexTrigger} - Touch RIndexTrigger
* - {@link #ovrTouch_RButtonMask Touch_RButtonMask} - Bit mask of all the button touches on the right controller
* - {@link #ovrTouch_X Touch_X} - Touch X
* - {@link #ovrTouch_Y Touch_Y} - Touch Y
* - {@link #ovrTouch_LThumb Touch_LThumb} - Touch LThumb
* - {@link #ovrTouch_LThumbRest Touch_LThumbRest} - Touch LThumbRest
* - {@link #ovrTouch_LIndexTrigger Touch_LIndexTrigger} - Touch LIndexTrigger
* - {@link #ovrTouch_LButtonMask Touch_LButtonMask} - Bit mask of all the button touches on the left controller
* - {@link #ovrTouch_RIndexPointing Touch_RIndexPointing} - TouchRIndexPointing
* - {@link #ovrTouch_RThumbUp Touch_RThumbUp} - Touch RThumbUp
* - {@link #ovrTouch_LIndexPointing Touch_LIndexPointing} - Touch LIndexPointing
* - {@link #ovrTouch_LThumbUp Touch_LThumbUp} - Touch LThumbUp
* - {@link #ovrTouch_RPoseMask Touch_RPoseMask} - Bit mask of all right controller poses
* - {@link #ovrTouch_LPoseMask Touch_LPoseMask} - Bit mask of all left controller poses.
*
*/
public static final int
ovrTouch_A = ovrButton_A,
ovrTouch_B = ovrButton_B,
ovrTouch_RThumb = ovrButton_RThumb,
ovrTouch_RThumbRest = 0x8,
ovrTouch_RIndexTrigger = 0x10,
ovrTouch_RButtonMask = ovrTouch_A | ovrTouch_B | ovrTouch_RThumb | ovrTouch_RThumbRest | ovrTouch_RIndexTrigger,
ovrTouch_X = ovrButton_X,
ovrTouch_Y = ovrButton_Y,
ovrTouch_LThumb = ovrButton_LThumb,
ovrTouch_LThumbRest = 0x800,
ovrTouch_LIndexTrigger = 0x1000,
ovrTouch_LButtonMask = ovrTouch_X | ovrTouch_Y | ovrTouch_LThumb | ovrTouch_LThumbRest | ovrTouch_LIndexTrigger,
ovrTouch_RIndexPointing = 0x20,
ovrTouch_RThumbUp = 0x40,
ovrTouch_LIndexPointing = 0x2000,
ovrTouch_LThumbUp = 0x4000,
ovrTouch_RPoseMask = ovrTouch_RIndexPointing | ovrTouch_RThumbUp,
ovrTouch_LPoseMask = ovrTouch_LIndexPointing | ovrTouch_LThumbUp;
/**
* Which controller is connected; multiple can be connected at once. ({@code ovrControllerType})
*
* Enum values:
*
*
* - {@link #ovrControllerType_None ControllerType_None}
* - {@link #ovrControllerType_LTouch ControllerType_LTouch}
* - {@link #ovrControllerType_RTouch ControllerType_RTouch}
* - {@link #ovrControllerType_Touch ControllerType_Touch}
* - {@link #ovrControllerType_Remote ControllerType_Remote}
* - {@link #ovrControllerType_XBox ControllerType_XBox}
* - {@link #ovrControllerType_Object0 ControllerType_Object0}
* - {@link #ovrControllerType_Object1 ControllerType_Object1}
* - {@link #ovrControllerType_Object2 ControllerType_Object2}
* - {@link #ovrControllerType_Object3 ControllerType_Object3}
* - {@link #ovrControllerType_Active ControllerType_Active} - Operate on or query whichever controller is active.
*
*/
public static final int
ovrControllerType_None = 0x0,
ovrControllerType_LTouch = 0x1,
ovrControllerType_RTouch = 0x2,
ovrControllerType_Touch = (ovrControllerType_LTouch | ovrControllerType_RTouch),
ovrControllerType_Remote = 0x4,
ovrControllerType_XBox = 0x10,
ovrControllerType_Object0 = 0x100,
ovrControllerType_Object1 = 0x200,
ovrControllerType_Object2 = 0x400,
ovrControllerType_Object3 = 0x800,
ovrControllerType_Active = 0xFFFFFFFF;
/**
* Haptics buffer submit mode. ({@code ovrHapticsBufferSubmitMode})
*
* Enum values:
*
*
* - {@link #ovrHapticsBufferSubmit_Enqueue HapticsBufferSubmit_Enqueue} - Enqueue buffer for later playback
*
*/
public static final int ovrHapticsBufferSubmit_Enqueue = 0;
/**
* Position tracked devices. ({@code ovrTrackedDeviceType})
*
* Enum values:
*
*
* - {@link #ovrTrackedDevice_None TrackedDevice_None}
* - {@link #ovrTrackedDevice_HMD TrackedDevice_HMD}
* - {@link #ovrTrackedDevice_LTouch TrackedDevice_LTouch}
* - {@link #ovrTrackedDevice_RTouch TrackedDevice_RTouch}
* - {@link #ovrTrackedDevice_Touch TrackedDevice_Touch}
* - {@link #ovrTrackedDevice_Object0 TrackedDevice_Object0}
* - {@link #ovrTrackedDevice_Object1 TrackedDevice_Object1}
* - {@link #ovrTrackedDevice_Object2 TrackedDevice_Object2}
* - {@link #ovrTrackedDevice_Object3 TrackedDevice_Object3}
* - {@link #ovrTrackedDevice_All TrackedDevice_All}
*
*/
public static final int
ovrTrackedDevice_None = 0x0,
ovrTrackedDevice_HMD = 0x1,
ovrTrackedDevice_LTouch = 0x2,
ovrTrackedDevice_RTouch = 0x4,
ovrTrackedDevice_Touch = (ovrTrackedDevice_LTouch | ovrTrackedDevice_RTouch),
ovrTrackedDevice_Object0 = 0x10,
ovrTrackedDevice_Object1 = 0x20,
ovrTrackedDevice_Object2 = 0x40,
ovrTrackedDevice_Object3 = 0x80,
ovrTrackedDevice_All = 0xFFFF;
/**
* Camera status flags. ({@code ovrCameraStatusFlags})
*
* Enum values:
*
*
* - {@link #ovrCameraStatus_None CameraStatus_None} - Initial state of camera.
* - {@link #ovrCameraStatus_Connected CameraStatus_Connected} - Bit set when the camera is connected to the system.
* - {@link #ovrCameraStatus_Calibrating CameraStatus_Calibrating} - Bit set when the camera is undergoing calibration.
* - {@link #ovrCameraStatus_CalibrationFailed CameraStatus_CalibrationFailed} - Bit set when the camera has tried & failed calibration.
* - {@link #ovrCameraStatus_Calibrated CameraStatus_Calibrated} - Bit set when the camera has tried & passed calibration.
* - {@link #ovrCameraStatus_Capturing CameraStatus_Capturing} - Bit set when the camera is capturing.
*
*/
public static final int
ovrCameraStatus_None = 0x0,
ovrCameraStatus_Connected = 0x1,
ovrCameraStatus_Calibrating = 0x2,
ovrCameraStatus_CalibrationFailed = 0x4,
ovrCameraStatus_Calibrated = 0x8,
ovrCameraStatus_Capturing = 0x10;
/**
* Boundary types that specified while using the boundary system. ({@code ovrBoundaryType})
*
* Enum values:
*
*
* - {@link #ovrBoundary_Outer Boundary_Outer} - Outer boundary - closely represents user setup walls
* - {@link #ovrBoundary_PlayArea Boundary_PlayArea} - Play area - safe rectangular area inside outer boundary which can optionally be used to restrict user interactions and motion.
*
*/
public static final int
ovrBoundary_Outer = 0x1,
ovrBoundary_PlayArea = 0x100;
/**
* Names for the left and right hand array indexes. ({@code ovrHandType})
*
* Enum values:
*
*
* - {@link #ovrHand_Left Hand_Left}
* - {@link #ovrHand_Right Hand_Right}
* - {@link #ovrHand_Count Hand_Count}
*
*/
public static final int
ovrHand_Left = 0x0,
ovrHand_Right = 0x1,
ovrHand_Count = 0x2;
/**
* Enum values:
*
*
* - {@link #ovrMaxProvidedFrameStats MaxProvidedFrameStats} - Maximum number of frames of performance stats provided back to the caller of {@link #ovr_GetPerfStats GetPerfStats}.
*
*/
public static final int ovrMaxProvidedFrameStats = 0x5;
/** Maximum number of samples in {@link OVRHapticsBuffer}. */
public static final int OVR_HAPTICS_BUFFER_SAMPLES_MAX = 256;
/** External camera constants */
public static final int
OVR_MAX_EXTERNAL_CAMERA_COUNT = 16,
OVR_EXTERNAL_CAMERA_NAME_SIZE = 32;
/** Defines the largest size for an extension name string, including the '\0' terminator. */
public static final int OVR_MAX_EXTENSION_NAME_SIZE = 128;
/** Specifies the maximum number of layers supported by {@link #ovr_SubmitFrame SubmitFrame}. */
public static final int ovrMaxLayerCount = 16;
/**
* Describes layer types that can be passed to {@link #ovr_SubmitFrame SubmitFrame}. ({@code ovrLayerType})
*
* Each layer type has an associated struct, such as {@link OVRLayerEyeFov}.
*
* Enum values:
*
*
* - {@link #ovrLayerType_Disabled LayerType_Disabled} - Layer is disabled.
* - {@link #ovrLayerType_EyeFov LayerType_EyeFov} - Described by {@link OVRLayerEyeFov}.
* - {@link #ovrLayerType_EyeFovDepth LayerType_EyeFovDepth} - Described by {@link OVRLayerEyeFovDepth}.
* - {@link #ovrLayerType_Quad LayerType_Quad} - Described by {@link OVRLayerQuad}.
* - {@link #ovrLayerType_EyeMatrix LayerType_EyeMatrix} - Described by {@link OVRLayerEyeMatrix}.
* - {@link #ovrLayerType_EyeFovMultires LayerType_EyeFovMultires} - Described by {@link OVRLayerEyeFovMultires}.
* - {@link #ovrLayerType_Cylinder LayerType_Cylinder} - Described by {@link OVRLayerCylinder}.
* - {@link #ovrLayerType_Cube LayerType_Cube} - Described by {@link OVRLayerCube}.
*
*/
public static final int
ovrLayerType_Disabled = 0,
ovrLayerType_EyeFov = 1,
ovrLayerType_EyeFovDepth = 2,
ovrLayerType_Quad = 3,
ovrLayerType_EyeMatrix = 5,
ovrLayerType_EyeFovMultires = 7,
ovrLayerType_Cylinder = 8,
ovrLayerType_Cube = 10;
/**
* Identifies flags used by {@link OVRLayerHeader} and which are passed to {@link #ovr_SubmitFrame SubmitFrame}. ({@code ovrLayerFlags})
*
* Enum values:
*
*
* - {@link #ovrLayerFlag_HighQuality LayerFlag_HighQuality} -
* Enables 4x anisotropic sampling during the composition of the layer. The benefits are mostly visible at the periphery for high-frequency &
* high-contrast visuals. For best results consider combining this flag with an {@code ovrTextureSwapChain} that has mipmaps and instead of using
* arbitrary sized textures, prefer texture sizes that are powers-of-two. Actual rendered viewport and doesn't necessarily have to fill the whole
* texture.
*
* - {@link #ovrLayerFlag_TextureOriginAtBottomLeft LayerFlag_TextureOriginAtBottomLeft} - the opposite is TopLeft. Generally this is false for D3D, true for OpenGL.
* - {@link #ovrLayerFlag_HeadLocked LayerFlag_HeadLocked} -
* Mark this surface as "headlocked", which means it is specified relative to the HMD and moves with it, rather than being specified relative to
* sensor/torso space and remaining still while the head moves. What used to be {@code ovrLayerType_QuadHeadLocked} is now {@link #ovrLayerType_Quad LayerType_Quad} plus this
* flag. However the flag can be applied to any layer type to achieve a similar effect.
*
*
*/
public static final int
ovrLayerFlag_HighQuality = 0x1,
ovrLayerFlag_TextureOriginAtBottomLeft = 0x2,
ovrLayerFlag_HeadLocked = 0x4;
/**
* Describes eye texture layouts. Used with {@link OVRLayerEyeFovMultires}. ({@code ovrTextureLayout})
*
* Enum values:
*
*
* - {@link #ovrTextureLayout_Rectilinear TextureLayout_Rectilinear} - Regular eyeFov layer.
* - {@link #ovrTextureLayout_Octilinear TextureLayout_Octilinear} - Octilinear extension must be enabled.
*
*/
public static final int
ovrTextureLayout_Rectilinear = 0,
ovrTextureLayout_Octilinear = 1;
/**
* Performance HUD enables the HMD user to see information critical to the real-time operation of the VR application such as latency timing, and CPU &
* GPU performance metrics.
*
* App can toggle performance HUD modes as such:
*
*
* ovrPerfHudMode PerfHudMode = ovrPerfHud_LatencyTiming;
* ovr_SetInt(session, OVR_PERF_HUD_MODE, (int)PerfHudMode);
*
* Enum values:
*
*
* - {@link #ovrPerfHud_Off PerfHud_Off} - Turns off the performance HUD
* - {@link #ovrPerfHud_PerfSummary PerfHud_PerfSummary} - Shows performance summary and headroom
* - {@link #ovrPerfHud_LatencyTiming PerfHud_LatencyTiming} - Shows latency related timing info
* - {@link #ovrPerfHud_AppRenderTiming PerfHud_AppRenderTiming} - Shows render timing info for application
* - {@link #ovrPerfHud_CompRenderTiming PerfHud_CompRenderTiming} - Shows render timing info for OVR compositor
* - {@link #ovrPerfHud_AwsStats PerfHud_AwsStats} - Shows Async Spacewarp-specific info
* - {@link #ovrPerfHud_VersionInfo PerfHud_VersionInfo} - Shows SDK & HMD version Info
* - {@link #ovrPerfHud_LinkPerf PerfHud_LinkPerf} - Shows Oculus Link performance.
*
*/
public static final int
ovrPerfHud_Off = 0,
ovrPerfHud_PerfSummary = 1,
ovrPerfHud_LatencyTiming = 2,
ovrPerfHud_AppRenderTiming = 3,
ovrPerfHud_CompRenderTiming = 4,
ovrPerfHud_AwsStats = 6,
ovrPerfHud_VersionInfo = 5,
ovrPerfHud_LinkPerf = 7;
/**
* Layer HUD enables the HMD user to see information about a layer.
*
* App can toggle layer HUD modes as such:
*
*
* ovrLayerHudMode LayerHudMode = ovrLayerHud_Info;
* ovr_SetInt(Hmd, OVR_LAYER_HUD_MODE, (int)LayerHudMode);
*
* Enum values:
*
*
* - {@link #ovrLayerHud_Off LayerHud_Off} - Turns off the layer HUD
* - {@link #ovrLayerHud_Info LayerHud_Info} - Shows info about a specific layer
*
*/
public static final int
ovrLayerHud_Off = 0,
ovrLayerHud_Info = 1;
/**
* 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, 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.
*
* App can toggle the debug HUD modes as such:
*
*
* ovrDebugHudStereoMode DebugHudMode = ovrDebugHudStereo_QuadWithCrosshair;
* ovr_SetInt(session, OVR_DEBUG_HUD_STEREO_MODE, (int)DebugHudMode);
*
* The app can modify the visual properties of the stereo guide (i.e. quad, crosshair) using the {@link #ovr_SetFloatArray SetFloatArray} function. For a list of tweakable
* properties, see the {@code OVR_DEBUG_HUD_STEREO_GUIDE_*} keys in {@link OVRKeys}.
*
* Enum values:
*
*
* - {@link #ovrDebugHudStereo_Off DebugHudStereo_Off} - Turns off the Stereo Debug HUD
* - {@link #ovrDebugHudStereo_Quad DebugHudStereo_Quad} - Renders Quad in world for Stereo Debugging
* - {@link #ovrDebugHudStereo_QuadWithCrosshair DebugHudStereo_QuadWithCrosshair} - Renders Quad+crosshair in world for Stereo Debugging
* - {@link #ovrDebugHudStereo_CrosshairAtInfinity DebugHudStereo_CrosshairAtInfinity} - Renders screen-space crosshair at infinity for Stereo Debugging
*
*/
public static final int
ovrDebugHudStereo_Off = 0,
ovrDebugHudStereo_Quad = 1,
ovrDebugHudStereo_QuadWithCrosshair = 2,
ovrDebugHudStereo_CrosshairAtInfinity = 3;
protected OVR() {
throw new UnsupportedOperationException();
}
// --- [ ovr_Initialize ] ---
/** Unsafe version of: {@link #ovr_Initialize Initialize} */
public static native int novr_Initialize(long params);
/**
* Initialize LibOVR for application usage. This includes finding and loading the LibOVRRT shared library. No LibOVR API functions, other than
* {@link #ovr_GetLastErrorInfo GetLastErrorInfo} and {@link OVRUtil#ovr_Detect _Detect}, can be called unless {@link #ovr_Initialize Initialize} succeeds. A successful call to {@code ovr_Initialize} must be eventually
* followed by a call to {@link #ovr_Shutdown Shutdown}. {@code ovr_Initialize} calls are idempotent. Calling {@code ovr_Initialize} twice does not require two matching
* calls to {@code ovr_Shutdown}. If already initialized, the return value is {@link OVRErrorCode#ovrSuccess Success}.
*
* LibOVRRT shared library search order:
*
*
* - Current working directory (often the same as the application directory).
* - Module directory (usually the same as the application directory, but not if the module is a separate shared library).
* - Application directory
* - Development directory (only if OVR_ENABLE_DEVELOPER_SEARCH is enabled, which is off by default).
* - Standard OS shared library search location(s) (OS-specific).
*
*
* @param params specifies custom initialization options. May be {@code NULL} to indicate default options when using the CAPI shim. If you are directly calling the
* LibOVRRT version of {@code ovr_Initialize} in the LibOVRRT DLL then this must be valid and include {@link #ovrInit_RequestVersion Init_RequestVersion}.
*
* @return an {@code ovrResult} indicating success or failure. In the case of failure, use {@link #ovr_GetLastErrorInfo GetLastErrorInfo} to get more information. Example failed results
* include:
*
*
* - {@link OVRErrorCode#ovrError_Initialize Error_Initialize}: Generic initialization error.
* - {@link OVRErrorCode#ovrError_LibLoad Error_LibLoad}: Couldn't load LibOVRRT.
* - {@link OVRErrorCode#ovrError_LibVersion Error_LibVersion}: LibOVRRT version incompatibility.
* - {@link OVRErrorCode#ovrError_ServiceConnection Error_ServiceConnection}: Couldn't connect to the OVR Service.
* - {@link OVRErrorCode#ovrError_ServiceVersion Error_ServiceVersion}: OVR Service version incompatibility.
* - {@link OVRErrorCode#ovrError_IncompatibleOS Error_IncompatibleOS}: The operating system version is incompatible.
* - {@link OVRErrorCode#ovrError_DisplayInit Error_DisplayInit}: Unable to initialize the HMD display.
* - {@link OVRErrorCode#ovrError_ServerStart Error_ServerStart}: Unable to start the server. Is it already running?
* - {@link OVRErrorCode#ovrError_Reinitialization Error_Reinitialization}: Attempted to re-initialize with a different version.
*
*/
@NativeType("ovrResult")
public static int ovr_Initialize(@Nullable @NativeType("ovrInitParams const *") OVRInitParams params) {
return novr_Initialize(memAddressSafe(params));
}
// --- [ ovr_Shutdown ] ---
/**
* Shuts down LibOVR.
*
* A successful call to {@link #ovr_Initialize Initialize} must be eventually matched by a call to {@code ovr_Shutdown}. After calling {@code ovr_Shutdown}, no LibOVR
* functions can be called except {@link #ovr_GetLastErrorInfo GetLastErrorInfo} or another {@link #ovr_Initialize Initialize}. {@code ovr_Shutdown} invalidates all pointers, references, and created
* objects previously returned by LibOVR functions. The LibOVRRT shared library can be unloaded by {@code ovr_Shutdown}.
*/
public static native void ovr_Shutdown();
// --- [ ovr_GetLastErrorInfo ] ---
/** Unsafe version of: {@link #ovr_GetLastErrorInfo GetLastErrorInfo} */
public static native void novr_GetLastErrorInfo(long errorInfo);
/**
* Returns information about the most recent failed return value by the current thread for this library.
*
* This function itself can never generate an error. The last error is never cleared by LibOVR, but will be overwritten by new errors. Do not use this
* call to determine if there was an error in the last API call as successful API calls don't clear the last {@link OVRErrorInfo}. To avoid any inconsistency,
* {@link #ovr_GetLastErrorInfo GetLastErrorInfo} should be called immediately after an API function that returned a failed {@code ovrResult}, with no other API functions called in
* the interim.
*
* @param errorInfo The last {@link OVRErrorInfo} for the current thread
*/
public static void ovr_GetLastErrorInfo(@NativeType("ovrErrorInfo *") OVRErrorInfo errorInfo) {
novr_GetLastErrorInfo(errorInfo.address());
}
// --- [ ovr_GetVersionString ] ---
/** Unsafe version of: {@link #ovr_GetVersionString GetVersionString} */
public static native long novr_GetVersionString();
/**
* Returns the version string representing the LibOVRRT version.
*
* The returned string pointer is valid until the next call to {@link #ovr_Shutdown Shutdown}.
*
* Note that the returned version string doesn't necessarily match the current OVR_MAJOR_VERSION, etc., as the returned string refers to the LibOVRRT
* shared library version and not the locally compiled interface version.
*
* The format of this string is subject to change in future versions and its contents should not be interpreted.
*
* @return a UTF8-encoded null-terminated version string
*/
@NativeType("char const *")
public static String ovr_GetVersionString() {
long __result = novr_GetVersionString();
return memUTF8(__result);
}
// --- [ ovr_TraceMessage ] ---
/** Unsafe version of: {@link #ovr_TraceMessage TraceMessage} */
public static native int novr_TraceMessage(int level, long message);
/**
* Writes a message string to the LibOVR tracing mechanism (if enabled).
*
* This message will be passed back to the application via the {@link OVRLogCallback} if it was registered.
*
* @param level an {@code ovrLogLevel} constant. One of:
{@link #ovrLogLevel_Debug LogLevel_Debug} {@link #ovrLogLevel_Info LogLevel_Info} {@link #ovrLogLevel_Error LogLevel_Error}
* @param message a UTF8-encoded null-terminated string
*
* @return the {@code strlen} of the message or a negative value if the message is too large
*/
public static int ovr_TraceMessage(int level, @NativeType("char const *") ByteBuffer message) {
if (CHECKS) {
checkNT1(message);
}
return novr_TraceMessage(level, memAddress(message));
}
/**
* Writes a message string to the LibOVR tracing mechanism (if enabled).
*
* This message will be passed back to the application via the {@link OVRLogCallback} if it was registered.
*
* @param level an {@code ovrLogLevel} constant. One of:
{@link #ovrLogLevel_Debug LogLevel_Debug} {@link #ovrLogLevel_Info LogLevel_Info} {@link #ovrLogLevel_Error LogLevel_Error}
* @param message a UTF8-encoded null-terminated string
*
* @return the {@code strlen} of the message or a negative value if the message is too large
*/
public static int ovr_TraceMessage(int level, @NativeType("char const *") CharSequence message) {
MemoryStack stack = stackGet(); int stackPointer = stack.getPointer();
try {
stack.nUTF8(message, true);
long messageEncoded = stack.getPointerAddress();
return novr_TraceMessage(level, messageEncoded);
} finally {
stack.setPointer(stackPointer);
}
}
// --- [ ovr_IdentifyClient ] ---
/** Unsafe version of: {@link #ovr_IdentifyClient IdentifyClient} */
public static native int novr_IdentifyClient(long identity);
/**
* Identifies client application info.
*
* The string is one or more newline-delimited lines of optional info indicating engine name, engine version, engine plugin name, engine plugin version,
* engine editor. The order of the lines is not relevant. Individual lines are optional. A newline is not necessary at the end of the last line. Call
* after {@link #ovr_Initialize Initialize} and before the first call to {@link #ovr_Create Create}. Each value is limited to 20 characters. Key names such as 'EngineName:', 'EngineVersion:'
* do not count towards this limit.
*
*
* EngineName: %s\n
* EngineVersion: %s\n
* EnginePluginName: %s\n
* EnginePluginVersion: %s\n
* EngineEditor: <boolean> ('true' or 'false')\n
*
* Example code:
*
*
* ovr_IdentifyClient(
* "EngineName: Unity\n" +
* "EngineVersion: 5.3.3\n" +
* "EnginePluginName: OVRPlugin\n" +
* "EnginePluginVersion: 1.2.0\n" +
* "EngineEditor: true");
*
* @param identity specifies one or more newline-delimited lines of optional info
*/
@NativeType("ovrResult")
public static int ovr_IdentifyClient(@NativeType("char const *") ByteBuffer identity) {
if (CHECKS) {
checkNT1(identity);
}
return novr_IdentifyClient(memAddress(identity));
}
/**
* Identifies client application info.
*
* The string is one or more newline-delimited lines of optional info indicating engine name, engine version, engine plugin name, engine plugin version,
* engine editor. The order of the lines is not relevant. Individual lines are optional. A newline is not necessary at the end of the last line. Call
* after {@link #ovr_Initialize Initialize} and before the first call to {@link #ovr_Create Create}. Each value is limited to 20 characters. Key names such as 'EngineName:', 'EngineVersion:'
* do not count towards this limit.
*
*
* EngineName: %s\n
* EngineVersion: %s\n
* EnginePluginName: %s\n
* EnginePluginVersion: %s\n
* EngineEditor: <boolean> ('true' or 'false')\n
*
* Example code:
*
*
* ovr_IdentifyClient(
* "EngineName: Unity\n" +
* "EngineVersion: 5.3.3\n" +
* "EnginePluginName: OVRPlugin\n" +
* "EnginePluginVersion: 1.2.0\n" +
* "EngineEditor: true");
*
* @param identity specifies one or more newline-delimited lines of optional info
*/
@NativeType("ovrResult")
public static int ovr_IdentifyClient(@NativeType("char const *") CharSequence identity) {
MemoryStack stack = stackGet(); int stackPointer = stack.getPointer();
try {
stack.nUTF8(identity, true);
long identityEncoded = stack.getPointerAddress();
return novr_IdentifyClient(identityEncoded);
} finally {
stack.setPointer(stackPointer);
}
}
// --- [ ovr_GetHmdColorDesc ] ---
/** Unsafe version of: {@link #ovr_GetHmdColorDesc GetHmdColorDesc} */
public static native void novr_GetHmdColorDesc(long session, long __result);
/**
* Returns native color space information about the current HMD.
*
* {@link #ovr_Initialize Initialize} must be called prior to calling this function, otherwise call will fail.
*
* @param session specifies an {@code ovrSession} previously returned by {@link #ovr_Create Create} or {@code NULL}
* @param __result an {@code ovrHmdColorDesc}
*/
public static ovrHmdColorDesc ovr_GetHmdColorDesc(@NativeType("ovrSession") long session, ovrHmdColorDesc __result) {
novr_GetHmdColorDesc(session, __result.address());
return __result;
}
// --- [ ovr_SetClientColorDesc ] ---
/** Unsafe version of: {@link #ovr_SetClientColorDesc SetClientColorDesc} */
public static native int novr_SetClientColorDesc(long session, long colorDesc);
/**
* Sets the color space actively being used by the client app.
*
* This value does not have to follow the color space provided in {@link #ovr_GetHmdColorDesc GetHmdColorDesc}. It should reflect the color space the final rendered frame the
* client has submitted to the SDK. If this function is never called, the session will keep using the default color space deemed appropriate by the
* runtime. See remarks in {@code ovrColorSpace} enum for more info on default behavior.
*
* {@link #ovr_Initialize Initialize} must be called prior to calling this function, otherwise call will fail.
*
* @param session an {@code ovrSession} previously returned by {@link #ovr_Create Create} or {@code NULL}
* @param colorDesc the color description to use for the current HMD
*
* @return an {@code ovrResult} indicating success or failure
*/
@NativeType("ovrResult")
public static int ovr_SetClientColorDesc(@NativeType("ovrSession") long session, @NativeType("ovrHmdColorDesc const *") ovrHmdColorDesc colorDesc) {
if (CHECKS) {
check(session);
}
return novr_SetClientColorDesc(session, colorDesc.address());
}
// --- [ ovr_GetHmdDesc ] ---
/** Unsafe version of: {@link #ovr_GetHmdDesc GetHmdDesc} */
public static native void novr_GetHmdDesc(long session, long __result);
/**
* Returns information about the current HMD.
*
* {@link #ovr_Initialize Initialize} must be called prior to calling this function, otherwise {@code ovrHmdDesc::Type} will be set to {@link #ovrHmd_None Hmd_None} without checking for the HMD
* presence.
*
* For newer headsets being used on a game built against an old SDK version, we may return the {@code ovrHmdType} as {@link #ovrHmd_CV1 Hmd_CV1} for backwards compatibility.
*
* @param session an {@code ovrSession} previously returned by {@link #ovr_Create Create} or {@code NULL}
* @param __result an {@link OVRHmdDesc}. If invoked with {@code NULL} session argument, {@code ovrHmdDesc::Type} to {@link #ovrHmd_None Hmd_None} indicates that the HMD is not connected.
*/
@NativeType("ovrHmdDesc")
public static OVRHmdDesc ovr_GetHmdDesc(@NativeType("ovrSession") long session, @NativeType("ovrHmdDesc") OVRHmdDesc __result) {
novr_GetHmdDesc(session, __result.address());
return __result;
}
// --- [ ovr_GetTrackerCount ] ---
/** Unsafe version of: {@link #ovr_GetTrackerCount GetTrackerCount} */
public static native int novr_GetTrackerCount(long session);
/**
* Returns the number of attached trackers.
*
* The number of trackers may change at any time, so this function should be called before use as opposed to once on startup.
*
* For newer headsets being used on a game built against an old SDK version, we may simulate three CV1 trackers to maintain backwards compatibility.
*
* @param session an {@code ovrSession} previously returned by {@link #ovr_Create Create}
*/
@NativeType("unsigned int")
public static int ovr_GetTrackerCount(@NativeType("ovrSession") long session) {
if (CHECKS) {
check(session);
}
return novr_GetTrackerCount(session);
}
// --- [ ovr_GetTrackerDesc ] ---
/** Unsafe version of: {@link #ovr_GetTrackerDesc GetTrackerDesc} */
public static native void novr_GetTrackerDesc(long session, int trackerDescIndex, long __result);
/**
* Returns a given attached tracker description.
*
* {@link #ovr_Initialize Initialize} must have first been called in order for this to succeed, otherwise the returned {@code trackerDescArray} will be zero-initialized. The
* data returned by this function can change at runtime.
*
* For newer headsets being used on a game built against an old SDK version, we may simulate three CV1 trackers to maintain backwards compatibility.
*
* @param session an {@code ovrSession} previously returned by {@link #ovr_Create Create}
* @param trackerDescIndex a tracker index. The valid indexes are in the range of 0 to the tracker count returned by {@link #ovr_GetTrackerCount GetTrackerCount}.
* @param __result an {@link OVRTrackerDesc}. An empty {@code OVRTrackerDesc} will be returned if {@code trackerDescIndex} is out of range.
*/
@NativeType("ovrTrackerDesc")
public static OVRTrackerDesc ovr_GetTrackerDesc(@NativeType("ovrSession") long session, @NativeType("unsigned int") int trackerDescIndex, @NativeType("ovrTrackerDesc") OVRTrackerDesc __result) {
if (CHECKS) {
check(session);
}
novr_GetTrackerDesc(session, trackerDescIndex, __result.address());
return __result;
}
// --- [ ovr_Create ] ---
/** Unsafe version of: {@link #ovr_Create Create} */
public static native int novr_Create(long pSession, long pLuid);
/**
* Creates a handle to a VR session.
*
* Upon success the returned {@code ovrSession} must be eventually freed with {@link #ovr_Destroy Destroy} when it is no longer needed. A second call to {@link #ovr_Create Create} will result
* in an error return value if the previous session has not been destroyed.
*
* @param pSession a pointer to an {@code ovrSession} which will be written to upon success
* @param pLuid a system specific graphics adapter identifier that locates which graphics adapter has the HMD attached. This must match the adapter used by the
* application or no rendering output will be possible. This is important for stability on multi-adapter systems. An application that simply chooses
* the default adapter will not run reliably on multi-adapter systems.
*
* @return an {@code ovrResult} indicating success or failure. Upon failure the returned {@code ovrSession} will be {@code NULL}.
*/
@NativeType("ovrResult")
public static int ovr_Create(@NativeType("ovrSession *") PointerBuffer pSession, @NativeType("ovrGraphicsLuid *") OVRGraphicsLuid pLuid) {
if (CHECKS) {
check(pSession, 1);
}
return novr_Create(memAddress(pSession), pLuid.address());
}
// --- [ ovr_Destroy ] ---
/** Unsafe version of: {@link #ovr_Destroy Destroy} */
public static native void novr_Destroy(long session);
/**
* Destroys the session.
*
* @param session an {@code ovrSession} previously returned by {@link #ovr_Create Create}
*/
public static void ovr_Destroy(@NativeType("ovrSession") long session) {
if (CHECKS) {
check(session);
}
novr_Destroy(session);
}
// --- [ ovr_GetSessionStatus ] ---
/** Unsafe version of: {@link #ovr_GetSessionStatus GetSessionStatus} */
public static native int novr_GetSessionStatus(long session, long sessionStatus);
/**
* Returns status information for the application.
*
* @param session an {@code ovrSession} previously returned by {@link #ovr_Create Create}
* @param sessionStatus an {@link OVRSessionStatus} that is filled in
*/
@NativeType("ovrResult")
public static int ovr_GetSessionStatus(@NativeType("ovrSession") long session, @NativeType("ovrSessionStatus *") OVRSessionStatus sessionStatus) {
if (CHECKS) {
check(session);
}
return novr_GetSessionStatus(session, sessionStatus.address());
}
// --- [ ovr_IsExtensionSupported ] ---
/** Unsafe version of: {@link #ovr_IsExtensionSupported IsExtensionSupported} */
public static native int novr_IsExtensionSupported(long session, int extension, long outExtensionSupported);
/**
* Queries extension support status.
*
* @param session an {@code ovrSession} previously returned by {@link #ovr_Create Create}
* @param extension extension to query
* @param outExtensionSupported set to extension support status. {@link #ovrTrue True} if supported.
*
* @return an {@code ovrResult} indicating success or failure. In the case of failure use {@link #ovr_GetLastErrorInfo GetLastErrorInfo} to get more information.
*/
@NativeType("ovrResult")
public static int ovr_IsExtensionSupported(@NativeType("ovrSession") long session, @NativeType("ovrExtensions") int extension, @NativeType("ovrBool *") ByteBuffer outExtensionSupported) {
if (CHECKS) {
check(session);
check(outExtensionSupported, 1);
}
return novr_IsExtensionSupported(session, extension, memAddress(outExtensionSupported));
}
// --- [ ovr_EnableExtension ] ---
/** Unsafe version of: {@link #ovr_EnableExtension EnableExtension} */
public static native int novr_EnableExtension(long session, int extension);
/**
* Enable extension. Extensions must be enabled after {@link #ovr_Create Create} is called.
*
* @param session an {@code ovrSession} previously returned by {@link #ovr_Create Create}
* @param extension extension to enable.
*
* @return an {@code ovrResult} indicating success or failure. Extension is only enabled if successful. In the case of failure use {@link #ovr_GetLastErrorInfo GetLastErrorInfo} to get more
* information.
*/
@NativeType("ovrResult")
public static int ovr_EnableExtension(@NativeType("ovrSession") long session, @NativeType("ovrExtensions") int extension) {
if (CHECKS) {
check(session);
}
return novr_EnableExtension(session, extension);
}
// --- [ ovr_SetTrackingOriginType ] ---
/** Unsafe version of: {@link #ovr_SetTrackingOriginType SetTrackingOriginType} */
public static native int novr_SetTrackingOriginType(long session, int origin);
/**
* Sets the tracking origin type.
*
* When the tracking origin is changed, all of the calls that either provide or accept ovrPosef will use the new tracking origin provided.
*
* @param session an {@code ovrSession} previously returned by {@link #ovr_Create Create}
* @param origin an {@code ovrTrackingOrigin} to be used for all {@link OVRPosef}
*/
@NativeType("ovrResult")
public static int ovr_SetTrackingOriginType(@NativeType("ovrSession") long session, @NativeType("ovrTrackingOrigin") int origin) {
if (CHECKS) {
check(session);
}
return novr_SetTrackingOriginType(session, origin);
}
// --- [ ovr_GetTrackingOriginType ] ---
/** Unsafe version of: {@link #ovr_GetTrackingOriginType GetTrackingOriginType} */
public static native int novr_GetTrackingOriginType(long session);
/**
* Gets the tracking origin state.
*
* @param session an {@code ovrSession} previously returned by {@link #ovr_Create Create}
*/
@NativeType("ovrTrackingOrigin")
public static int ovr_GetTrackingOriginType(@NativeType("ovrSession") long session) {
if (CHECKS) {
check(session);
}
return novr_GetTrackingOriginType(session);
}
// --- [ ovr_RecenterTrackingOrigin ] ---
/** Unsafe version of: {@link #ovr_RecenterTrackingOrigin RecenterTrackingOrigin} */
public static native int novr_RecenterTrackingOrigin(long session);
/**
* Re-centers the sensor position and orientation.
*
* This resets the (x,y,z) positional components and the yaw orientation component of the tracking space for the HMD and controllers using the HMD's
* current tracking pose. If the caller requires some tweaks on top of the HMD's current tracking pose, consider using {@link #ovr_SpecifyTrackingOrigin SpecifyTrackingOrigin} instead.
*
* 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 {@code ovrTrackerPoses} then you will need to call {@link #ovr_GetTrackerPose 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
* {@link OVRErrorCode#ovrError_InvalidHeadsetOrientation Error_InvalidHeadsetOrientation}.
*
* For more info, see the notes on each {@code ovrTrackingOrigin} enumeration to understand how recenter will vary slightly in its behavior based on the
* current {@code ovrTrackingOrigin} setting.
*
* @param session an {@code ovrSession} previously returned by {@link #ovr_Create Create}
*/
@NativeType("ovrResult")
public static int ovr_RecenterTrackingOrigin(@NativeType("ovrSession") long session) {
if (CHECKS) {
check(session);
}
return novr_RecenterTrackingOrigin(session);
}
// --- [ ovr_SpecifyTrackingOrigin ] ---
/** Unsafe version of: {@link #ovr_SpecifyTrackingOrigin SpecifyTrackingOrigin} */
public static native int novr_SpecifyTrackingOrigin(long session, long originPose);
/**
* Allows manually tweaking the sensor position and orientation.
*
* This function is similar to {@link #ovr_RecenterTrackingOrigin RecenterTrackingOrigin} in that it modifies the (x,y,z) positional components and the yaw orientation component of the
* tracking space for the HMD and controllers.
*
* While {@code ovr_RecenterTrackingOrigin} resets the tracking origin in reference to the HMD's current pose, {@code ovr_SpecifyTrackingOrigin} allows
* the caller to explicitly specify a transform for the tracking origin. This transform is expected to be an offset to the most recent recentered origin,
* so calling this function repeatedly with the same originPose will keep nudging the recentered origin in that direction.
*
* There are several use cases for this function. For example, if the application decides to limit the yaw, or translation of the recentered pose instead
* of directly using the HMD pose the application can query the current tracking state via {@link #ovr_GetTrackingState GetTrackingState}, and apply some limitations to the HMD pose
* because feeding this pose back into this function. Similarly, this can be used to "adjust the seating position" incrementally in apps that feature
* seated experiences such as cockpit-based games.
*
* This function can emulate ovr_RecenterTrackingOrigin as such:
*
*
* ovrTrackingState ts = ovr_GetTrackingState(session, 0.0, ovrFalse);
* ovr_SpecifyTrackingOrigin(session, ts.HeadPose.ThePose);
*
* The roll and pitch orientation components are determined by gravity and cannot be redefined. If you are using {@code ovrTrackerPoses} then you will
* need to call {@link #ovr_GetTrackerPose GetTrackerPose} after this, because the sensor position(s) will change as a result of this.
*
* For more info, see the notes on each {@code ovrTrackingOrigin} enumeration to understand how recenter will vary slightly in its behavior based on the
* current {@code ovrTrackingOrigin} setting.
*
* @param session an {@code ovrSession} previously returned by {@link #ovr_Create Create}
* @param originPose specifies a pose that will be used to transform the current tracking origin
*/
@NativeType("ovrResult")
public static int ovr_SpecifyTrackingOrigin(@NativeType("ovrSession") long session, @NativeType("ovrPosef") OVRPosef originPose) {
if (CHECKS) {
check(session);
}
return novr_SpecifyTrackingOrigin(session, originPose.address());
}
// --- [ ovr_ClearShouldRecenterFlag ] ---
/** Unsafe version of: {@link #ovr_ClearShouldRecenterFlag ClearShouldRecenterFlag} */
public static native void novr_ClearShouldRecenterFlag(long session);
/**
* Clears the {@code ShouldRecenter} status bit in {@link OVRSessionStatus}.
*
* Clears the {@code ShouldRecenter} status bit in {@link OVRSessionStatus}, allowing further recenter requests to be detected. Since this is automatically done
* by {@link #ovr_RecenterTrackingOrigin RecenterTrackingOrigin} and {@link #ovr_SpecifyTrackingOrigin SpecifyTrackingOrigin}, this function only needs to be called when application is doing its own re-centering logic.
*
* @param session an {@code ovrSession} previously returned by {@link #ovr_Create Create}
*/
public static void ovr_ClearShouldRecenterFlag(@NativeType("ovrSession") long session) {
if (CHECKS) {
check(session);
}
novr_ClearShouldRecenterFlag(session);
}
// --- [ ovr_GetTrackingState ] ---
/** Unsafe version of: {@link #ovr_GetTrackingState GetTrackingState} */
public static native void novr_GetTrackingState(long session, double absTime, boolean latencyMarker, long __result);
/**
* Returns tracking state reading based on the specified absolute system time.
*
* Pass an {@code absTime} value of 0.0 to request the most recent sensor reading. In this case both {@code PredictedPose} and {@code SamplePose} will
* have the same value.
*
* This may also be used for more refined timing of front buffer rendering logic, and so on.
*
* This may be called by multiple threads.
*
* @param session an {@code ovrSession} previously returned by {@link #ovr_Create Create}
* @param absTime the absolute future time to predict the return {@link OVRTrackingState} value. Use 0 to request the most recent tracking state.
* @param latencyMarker specifies that this call is the point in time where the "App-to-Mid-Photon" latency timer starts from. If a given {@code ovrLayer} provides
* "SensorSampleTime", that will override the value stored here.
* @param __result the {@link OVRTrackingState} that is predicted for the given {@code absTime}
*/
@NativeType("ovrTrackingState")
public static OVRTrackingState ovr_GetTrackingState(@NativeType("ovrSession") long session, double absTime, @NativeType("ovrBool") boolean latencyMarker, @NativeType("ovrTrackingState") OVRTrackingState __result) {
if (CHECKS) {
check(session);
}
novr_GetTrackingState(session, absTime, latencyMarker, __result.address());
return __result;
}
// --- [ ovr_GetDevicePoses ] ---
/**
* Unsafe version of: {@link #ovr_GetDevicePoses GetDevicePoses}
*
* @param deviceCount number of queried poses. This number must match the length of the {@code outDevicePoses} and {@code deviceTypes} array.
*/
public static native int novr_GetDevicePoses(long session, long deviceTypes, int deviceCount, double absTime, long outDevicePoses);
/**
* Returns an array of poses, where each pose matches a device type provided by the {@code deviceTypes} array parameter.
*
* If any pose cannot be retrieved, it will return a reason for the missing pose and the device pose will be zeroed out with a pose quaternion
* {@code [x=0, y=0, z=0, w=1]}.
*
* @param session an {@code ovrSession} previously returned by {@link #ovr_Create Create}
* @param deviceTypes array of device types to query for their poses
* @param absTime specifies the absolute future time to predict the return {@code ovrTrackingState} value. Use 0 to request the most recent tracking state.
* @param outDevicePoses array of poses, one for each device type in {@code deviceTypes} arrays
*
* @return an {@code ovrResult} for which {@code OVR_SUCCESS(result)} is false upon error and true upon success
*/
@NativeType("ovrResult")
public static int ovr_GetDevicePoses(@NativeType("ovrSession") long session, @NativeType("ovrTrackedDeviceType *") IntBuffer deviceTypes, double absTime, @NativeType("ovrPoseStatef *") OVRPoseStatef.Buffer outDevicePoses) {
if (CHECKS) {
check(session);
check(outDevicePoses, deviceTypes.remaining());
}
return novr_GetDevicePoses(session, memAddress(deviceTypes), deviceTypes.remaining(), absTime, outDevicePoses.address());
}
// --- [ ovr_GetTrackerPose ] ---
/** Unsafe version of: {@link #ovr_GetTrackerPose GetTrackerPose} */
public static native void novr_GetTrackerPose(long session, int trackerPoseIndex, long __result);
/**
* Returns the {@link OVRTrackerPose} for the given attached tracker.
*
* For newer headsets being used on a game built against an old SDK version, we may simulate three CV1 trackers to maintain backwards compatibility.
*
* @param session an {@code ovrSession} previously returned by {@link #ovr_Create Create}
* @param trackerPoseIndex index of the tracker being requested.
*/
@NativeType("ovrTrackerPose")
public static OVRTrackerPose ovr_GetTrackerPose(@NativeType("ovrSession") long session, @NativeType("unsigned int") int trackerPoseIndex, @NativeType("ovrTrackerPose") OVRTrackerPose __result) {
if (CHECKS) {
check(session);
}
novr_GetTrackerPose(session, trackerPoseIndex, __result.address());
return __result;
}
// --- [ ovr_GetInputState ] ---
/** Unsafe version of: {@link #ovr_GetInputState GetInputState} */
public static native int novr_GetInputState(long session, int controllerType, long inputState);
/**
* Returns the most recent input state for controllers, without positional tracking info. Developers can tell whether the same state was returned by
* checking the {@code PacketNumber}.
*
* @param session an {@code ovrSession} previously returned by {@link #ovr_Create Create}
* @param controllerType which controllers the input will be returned for
* @param inputState the input state that will be filled in
*
* @return {@link OVRErrorCode#ovrSuccess Success} if the new state was successfully obtained
*/
@NativeType("ovrResult")
public static int ovr_GetInputState(@NativeType("ovrSession") long session, @NativeType("ovrControllerType") int controllerType, @NativeType("ovrInputState *") OVRInputState inputState) {
if (CHECKS) {
check(session);
}
return novr_GetInputState(session, controllerType, inputState.address());
}
// --- [ ovr_GetConnectedControllerTypes ] ---
/** Unsafe version of: {@link #ovr_GetConnectedControllerTypes GetConnectedControllerTypes} */
public static native int novr_GetConnectedControllerTypes(long session);
/**
* Returns controller types connected to the system OR'ed together.
*
* @param session an {@code ovrSession} previously returned by {@link #ovr_Create Create}
*/
@NativeType("unsigned int")
public static int ovr_GetConnectedControllerTypes(@NativeType("ovrSession") long session) {
if (CHECKS) {
check(session);
}
return novr_GetConnectedControllerTypes(session);
}
// --- [ ovr_GetTouchHapticsDesc ] ---
/** Unsafe version of: {@link #ovr_GetTouchHapticsDesc GetTouchHapticsDesc} */
public static native void novr_GetTouchHapticsDesc(long session, int controllerType, long __result);
/**
* Gets information about Haptics engine for the specified Touch controller.
*
* @param session an {@code ovrSession} previously returned by {@link #ovr_Create Create}
* @param controllerType the controller to retrieve the information from
* @param __result an {@link OVRTouchHapticsDesc}
*/
@NativeType("ovrTouchHapticsDesc")
public static OVRTouchHapticsDesc ovr_GetTouchHapticsDesc(@NativeType("ovrSession") long session, @NativeType("ovrControllerType") int controllerType, @NativeType("ovrTouchHapticsDesc") OVRTouchHapticsDesc __result) {
if (CHECKS) {
check(session);
}
novr_GetTouchHapticsDesc(session, controllerType, __result.address());
return __result;
}
// --- [ ovr_SetControllerVibration ] ---
/** Unsafe version of: {@link #ovr_SetControllerVibration SetControllerVibration} */
public static native int novr_SetControllerVibration(long session, int controllerType, float frequency, float amplitude);
/**
* Sets constant vibration (with specified frequency and amplitude) to a controller.
*
* Note: {@code ovr_SetControllerVibration} cannot be used interchangeably with {@link #ovr_SubmitControllerVibration SubmitControllerVibration}.
*
* This method should be called periodically, vibration lasts for a maximum of 2.5 seconds.
*
* @param session an {@code ovrSession} previously returned by {@link #ovr_Create Create}
* @param controllerType the controller to set the vibration to
* @param frequency the vibration frequency. Supported values are: 0.0 (disabled), 0.5 and 1.0. Non valid values will be clamped.
* @param amplitude the vibration amplitude in the {@code [0.0, 1.0]} range
*
* @return an {@code ovrResult} for which {@code OVR_SUCCESS(result)} is false upon error and true upon success. Return values include but aren't limited to:
*
*
* - {@link OVRErrorCode#ovrSuccess Success}: The call succeeded and a result was returned.
* - {@link OVRErrorCode#ovrSuccess_DeviceUnavailable Success_DeviceUnavailable}: The call succeeded but the device referred to by {@code controllerType} is not available.
*
*/
@NativeType("ovrResult")
public static int ovr_SetControllerVibration(@NativeType("ovrSession") long session, @NativeType("ovrControllerType") int controllerType, float frequency, float amplitude) {
if (CHECKS) {
check(session);
}
return novr_SetControllerVibration(session, controllerType, frequency, amplitude);
}
// --- [ ovr_SubmitControllerVibration ] ---
/** Unsafe version of: {@link #ovr_SubmitControllerVibration SubmitControllerVibration} */
public static native int novr_SubmitControllerVibration(long session, int controllerType, long buffer);
/**
* Submits a Haptics buffer (used for vibration) to Touch (only) controllers.
*
* Note: {@code ovr_SubmitControllerVibration} cannot be used interchangeably with {@link #ovr_SetControllerVibration SetControllerVibration}.
*
* @param session an {@code ovrSession} previously returned by {@link #ovr_Create Create}
* @param controllerType the controller where the Haptics buffer will be played
* @param buffer the Haptics buffer containing amplitude samples to be played
*
* @return an {@code ovrResult} for which {@code OVR_SUCCESS(result)} is false upon error and true upon success. Return values include but aren't limited to:
*
*
* - {@link OVRErrorCode#ovrSuccess Success}: The call succeeded and a result was returned.
* - {@link OVRErrorCode#ovrSuccess_DeviceUnavailable Success_DeviceUnavailable}: The call succeeded but the device referred to by {@code controllerType} is not available.
*
*/
@NativeType("ovrResult")
public static int ovr_SubmitControllerVibration(@NativeType("ovrSession") long session, @NativeType("ovrControllerType") int controllerType, @NativeType("ovrHapticsBuffer const *") OVRHapticsBuffer buffer) {
if (CHECKS) {
check(session);
OVRHapticsBuffer.validate(buffer.address());
}
return novr_SubmitControllerVibration(session, controllerType, buffer.address());
}
// --- [ ovr_GetControllerVibrationState ] ---
/** Unsafe version of: {@link #ovr_GetControllerVibrationState GetControllerVibrationState} */
public static native int novr_GetControllerVibrationState(long session, int controllerType, long outState);
/**
* Gets the Haptics engine playback state of a specific Touch controller.
*
* @param session an {@code ovrSession} previously returned by {@link #ovr_Create Create}
* @param controllerType the controller where the Haptics buffer will be played
* @param outState the state of the haptics engine
*
* @return an {@code ovrResult} for which {@code OVR_SUCCESS(result)} is false upon error and true upon success. Return values include but aren't limited to:
*
*
* - {@link OVRErrorCode#ovrSuccess Success}: The call succeeded and a result was returned.
* - {@link OVRErrorCode#ovrSuccess_DeviceUnavailable Success_DeviceUnavailable}: The call succeeded but the device referred to by {@code controllerType} is not available.
*
*/
@NativeType("ovrResult")
public static int ovr_GetControllerVibrationState(@NativeType("ovrSession") long session, @NativeType("ovrControllerType") int controllerType, @NativeType("ovrHapticsPlaybackState *") OVRHapticsPlaybackState outState) {
if (CHECKS) {
check(session);
}
return novr_GetControllerVibrationState(session, controllerType, outState.address());
}
// --- [ ovr_TestBoundary ] ---
/** Unsafe version of: {@link #ovr_TestBoundary TestBoundary} */
public static native int novr_TestBoundary(long session, int deviceBitmask, int boundaryType, long outTestResult);
/**
* Tests collision/proximity of position tracked devices (e.g. HMD and/or Touch) against the Boundary System.
*
* Note: this method is similar to {@link #ovr_TestBoundaryPoint TestBoundaryPoint} but can be more precise as it may take into account device acceleration/momentum.
*
* @param session an {@code ovrSession} previously returned by {@link #ovr_Create Create}
* @param deviceBitmask bitmask of one or more tracked devices to test. One or more of:
{@link #ovrTrackedDevice_None TrackedDevice_None} {@link #ovrTrackedDevice_HMD TrackedDevice_HMD} {@link #ovrTrackedDevice_LTouch TrackedDevice_LTouch} {@link #ovrTrackedDevice_RTouch TrackedDevice_RTouch} {@link #ovrTrackedDevice_Touch TrackedDevice_Touch} {@link #ovrTrackedDevice_Object0 TrackedDevice_Object0} {@link #ovrTrackedDevice_Object1 TrackedDevice_Object1} {@link #ovrTrackedDevice_Object2 TrackedDevice_Object2} {@link #ovrTrackedDevice_Object3 TrackedDevice_Object3} {@link #ovrTrackedDevice_All TrackedDevice_All}
* @param boundaryType the boundary type. One of:
{@link #ovrBoundary_Outer Boundary_Outer} {@link #ovrBoundary_PlayArea Boundary_PlayArea}
* @param outTestResult result of collision/proximity test, contains information such as distance and closest point
*
* @return an {@code ovrResult} for which {@code OVR_SUCCESS(result)} is false upon error and true upon success. Return values include but aren't limited to:
*
*
* - {@link OVRErrorCode#ovrSuccess Success}: The call succeeded and a result was returned.
* - {@link OVRErrorCode#ovrSuccess_BoundaryInvalid Success_BoundaryInvalid}: The call succeeded but the result is not a valid boundary due to not being set up.
* - {@link OVRErrorCode#ovrSuccess_DeviceUnavailable Success_DeviceUnavailable}: The call succeeded but the device referred to by {@code deviceBitmask} is not available.
*
*/
@NativeType("ovrResult")
public static int ovr_TestBoundary(@NativeType("ovrSession") long session, @NativeType("ovrTrackedDeviceType") int deviceBitmask, @NativeType("ovrBoundaryType") int boundaryType, @NativeType("ovrBoundaryTestResult *") OVRBoundaryTestResult outTestResult) {
if (CHECKS) {
check(session);
}
return novr_TestBoundary(session, deviceBitmask, boundaryType, outTestResult.address());
}
// --- [ ovr_TestBoundaryPoint ] ---
/** Unsafe version of: {@link #ovr_TestBoundaryPoint TestBoundaryPoint} */
public static native int novr_TestBoundaryPoint(long session, long point, int singleBoundaryType, long outTestResult);
/**
* Tests collision/proximity of a 3D point against the Boundary System.
*
* @param session an {@code ovrSession} previously returned by {@link #ovr_Create Create}
* @param point the 3D point to test
* @param singleBoundaryType the boundary type. One of:
{@link #ovrBoundary_Outer Boundary_Outer} {@link #ovrBoundary_PlayArea Boundary_PlayArea}
* @param outTestResult result of collision/proximity test, contains information such as distance and closest point
*
* @return an {@code ovrResult} for which {@code OVR_SUCCESS(result)} is false upon error and true upon success. Return values include but aren't limited to:
*
*
* - {@link OVRErrorCode#ovrSuccess Success}: The call succeeded and a result was returned.
* - {@link OVRErrorCode#ovrSuccess_BoundaryInvalid Success_BoundaryInvalid}: The call succeeded but the result is not a valid boundary due to not being set up.
*
*/
@NativeType("ovrResult")
public static int ovr_TestBoundaryPoint(@NativeType("ovrSession") long session, @NativeType("ovrVector3f const *") OVRVector3f point, @NativeType("ovrBoundaryType") int singleBoundaryType, @NativeType("ovrBoundaryTestResult *") OVRBoundaryTestResult outTestResult) {
if (CHECKS) {
check(session);
}
return novr_TestBoundaryPoint(session, point.address(), singleBoundaryType, outTestResult.address());
}
// --- [ ovr_SetBoundaryLookAndFeel ] ---
/** Unsafe version of: {@link #ovr_SetBoundaryLookAndFeel SetBoundaryLookAndFeel} */
public static native int novr_SetBoundaryLookAndFeel(long session, long lookAndFeel);
/**
* Compatibility stub.
*
* Deprecated: previously set the look and feel of the Boundary System - this functionality has been removed.
*
* @param session an {@code ovrSession} previously returned by {@link #ovr_Create Create}
* @param lookAndFeel the look and feel parameters
*
* @return {@link OVRErrorCode#ovrSuccess Success} upon success
*/
@NativeType("ovrResult")
public static int ovr_SetBoundaryLookAndFeel(@NativeType("ovrSession") long session, @NativeType("ovrBoundaryLookAndFeel const *") OVRBoundaryLookAndFeel lookAndFeel) {
if (CHECKS) {
check(session);
}
return novr_SetBoundaryLookAndFeel(session, lookAndFeel.address());
}
// --- [ ovr_ResetBoundaryLookAndFeel ] ---
/** Unsafe version of: {@link #ovr_ResetBoundaryLookAndFeel ResetBoundaryLookAndFeel} */
public static native int novr_ResetBoundaryLookAndFeel(long session);
/**
* Resets the look and feel of the Boundary System to its default state.
*
* @param session an {@code ovrSession} previously returned by {@link #ovr_Create Create}
*
* @return {@link OVRErrorCode#ovrSuccess Success} upon success
*/
@NativeType("ovrResult")
public static int ovr_ResetBoundaryLookAndFeel(@NativeType("ovrSession") long session) {
if (CHECKS) {
check(session);
}
return novr_ResetBoundaryLookAndFeel(session);
}
// --- [ ovr_GetBoundaryGeometry ] ---
/** Unsafe version of: {@link #ovr_GetBoundaryGeometry GetBoundaryGeometry} */
public static native int novr_GetBoundaryGeometry(long session, int boundaryType, long outFloorPoints, long outFloorPointsCount);
/**
* Gets the geometry of the Boundary System's "play area" or "outer boundary" as 3D floor points.
*
* @param session an {@code ovrSession} previously returned by {@link #ovr_Create Create}
* @param boundaryType the boundary type. One of:
{@link #ovrBoundary_Outer Boundary_Outer} {@link #ovrBoundary_PlayArea Boundary_PlayArea}
* @param outFloorPoints an array of 3D points (in clockwise order) defining the boundary at floor height (can be {@code NULL} to retrieve only the number of points)
* @param outFloorPointsCount the number of 3D points returned in the array
*
* @return an {@code ovrResult} for which {@code OVR_SUCCESS(result)} is false upon error and true upon success. Return values include but aren't limited to:
*
*
* - {@link OVRErrorCode#ovrSuccess Success}: The call succeeded and a result was returned.
* - {@link OVRErrorCode#ovrSuccess_BoundaryInvalid Success_BoundaryInvalid}: The call succeeded but the result is not a valid boundary due to not being set up.
*
*/
@NativeType("ovrResult")
public static int ovr_GetBoundaryGeometry(@NativeType("ovrSession") long session, @NativeType("ovrBoundaryType") int boundaryType, @Nullable @NativeType("ovrVector3f *") OVRVector3f outFloorPoints, @Nullable @NativeType("int *") IntBuffer outFloorPointsCount) {
if (CHECKS) {
check(session);
checkSafe(outFloorPointsCount, 1);
}
return novr_GetBoundaryGeometry(session, boundaryType, memAddressSafe(outFloorPoints), memAddressSafe(outFloorPointsCount));
}
// --- [ ovr_GetBoundaryDimensions ] ---
/** Unsafe version of: {@link #ovr_GetBoundaryDimensions GetBoundaryDimensions} */
public static native int novr_GetBoundaryDimensions(long session, int boundaryType, long outDimensions);
/**
* Gets the dimension of the Boundary System's "play area" or "outer boundary".
*
* @param session an {@code ovrSession} previously returned by {@link #ovr_Create Create}
* @param boundaryType the boundary type. One of:
{@link #ovrBoundary_Outer Boundary_Outer} {@link #ovrBoundary_PlayArea Boundary_PlayArea}
* @param outDimensions dimensions of the axis aligned bounding box that encloses the area in meters (width, height and length)
*
* @return an {@code ovrResult} for which {@code OVR_SUCCESS(result)} is false upon error and true upon success. Return values include but aren't limited to:
*
*
* - {@link OVRErrorCode#ovrSuccess Success}: The call succeeded and a result was returned.
* - {@link OVRErrorCode#ovrSuccess_BoundaryInvalid Success_BoundaryInvalid}: The call succeeded but the result is not a valid boundary due to not being set up.
*
*/
@NativeType("ovrResult")
public static int ovr_GetBoundaryDimensions(@NativeType("ovrSession") long session, @NativeType("ovrBoundaryType") int boundaryType, @NativeType("ovrVector3f *") OVRVector3f outDimensions) {
if (CHECKS) {
check(session);
}
return novr_GetBoundaryDimensions(session, boundaryType, outDimensions.address());
}
// --- [ ovr_GetBoundaryVisible ] ---
/** Unsafe version of: {@link #ovr_GetBoundaryVisible GetBoundaryVisible} */
public static native int novr_GetBoundaryVisible(long session, long outIsVisible);
/**
* Returns if the boundary is currently visible.
*
* Note: visibility is false if the user has turned off boundaries, otherwise, it's true if the app has requested boundaries to be visible or if any
* tracked device is currently triggering it. This may not exactly match rendering due to fade-in and fade-out effects.
*
* @param session an {@code ovrSession} previously returned by {@link #ovr_Create Create}
* @param outIsVisible {@link #ovrTrue True}, if the boundary is visible
*
* @return an {@code ovrResult} for which {@code OVR_SUCCESS(result)} is false upon error and true upon success. Return values include but aren't limited to:
*
*
* - {@link OVRErrorCode#ovrSuccess Success}: The call succeeded and a result was returned.
* - {@link OVRErrorCode#ovrSuccess_BoundaryInvalid Success_BoundaryInvalid}: The call succeeded but the result is not a valid boundary due to not being set up.
*
*/
@NativeType("ovrResult")
public static int ovr_GetBoundaryVisible(@NativeType("ovrSession") long session, @NativeType("ovrBool *") ByteBuffer outIsVisible) {
if (CHECKS) {
check(session);
check(outIsVisible, 1);
}
return novr_GetBoundaryVisible(session, memAddress(outIsVisible));
}
// --- [ ovr_RequestBoundaryVisible ] ---
/** Unsafe version of: {@link #ovr_RequestBoundaryVisible RequestBoundaryVisible} */
public static native int novr_RequestBoundaryVisible(long session, boolean visible);
/**
* Requests boundary to be visible.
*
* @param session an {@code ovrSession} previously returned by {@link #ovr_Create Create}
* @param visible forces the outer boundary to be visible. An application can't force it to be invisible, but can cancel its request by passing false.
*
* @return {@link OVRErrorCode#ovrSuccess Success} upon success
*/
@NativeType("ovrResult")
public static int ovr_RequestBoundaryVisible(@NativeType("ovrSession") long session, @NativeType("ovrBool") boolean visible) {
if (CHECKS) {
check(session);
}
return novr_RequestBoundaryVisible(session, visible);
}
// --- [ ovr_GetExternalCameras ] ---
/**
* Unsafe version of: {@link #ovr_GetExternalCameras GetExternalCameras}
*
* @param inoutCameraCount supply the array capacity, will return the actual \\# of cameras defined. If {@code *inoutCameraCount} is too small, will return
* {@link OVRErrorCode#ovrError_InsufficientArraySize Error_InsufficientArraySize}.
*/
public static native int novr_GetExternalCameras(long session, long cameras, long inoutCameraCount);
/**
* Returns the number of camera properties of all cameras
*
* @param session an {@code ovrSession} previously returned by {@link #ovr_Create Create}
* @param cameras pointer to the array. If null and the provided array capacity is sufficient, will return {@code ovrError_NullArrayPointer}.
* @param inoutCameraCount supply the array capacity, will return the actual \\# of cameras defined. If {@code *inoutCameraCount} is too small, will return
* {@link OVRErrorCode#ovrError_InsufficientArraySize Error_InsufficientArraySize}.
*
* @return the list of external cameras the system knows about. Returns {@link OVRErrorCode#ovrError_NoExternalCameraInfo Error_NoExternalCameraInfo} if there is not any external camera information.
*/
@NativeType("ovrResult")
public static int ovr_GetExternalCameras(@NativeType("ovrSession") long session, @Nullable @NativeType("ovrExternalCamera *") OVRExternalCamera.Buffer cameras, @NativeType("unsigned int *") IntBuffer inoutCameraCount) {
if (CHECKS) {
check(session);
check(inoutCameraCount, 1);
checkSafe(cameras, inoutCameraCount.get(inoutCameraCount.position()));
}
return novr_GetExternalCameras(session, memAddressSafe(cameras), memAddress(inoutCameraCount));
}
// --- [ ovr_SetExternalCameraProperties ] ---
/** Unsafe version of: {@link #ovr_SetExternalCameraProperties SetExternalCameraProperties} */
public static native int novr_SetExternalCameraProperties(long session, long name, long intrinsics, long extrinsics);
/**
* Sets the camera intrinsics and/or extrinsics stored for the {@code cameraName} camera.
*
* Names must be < 32 characters and null-terminated.
*
* @param session an {@code ovrSession} previously returned by {@link #ovr_Create Create}
* @param name specifies which camera to set the intrinsics or extrinsics for. The name must be at most {@link #OVR_EXTERNAL_CAMERA_NAME_SIZE} - 1 characters. Otherwise,
* {@link OVRErrorCode#ovrError_ExternalCameraNameWrongSize Error_ExternalCameraNameWrongSize} is returned.
* @param intrinsics contains the intrinsic parameters to set, can be null
* @param extrinsics ontains the extrinsic parameters to set, can be null
*
* @return {@link OVRErrorCode#ovrSuccess Success} or an {@code ovrError} code
*/
@NativeType("ovrResult")
public static int ovr_SetExternalCameraProperties(@NativeType("ovrSession") long session, @NativeType("char const *") ByteBuffer name, @NativeType("ovrCameraIntrinsics const * const") OVRCameraIntrinsics intrinsics, @NativeType("ovrCameraExtrinsics const * const") OVRCameraExtrinsics extrinsics) {
if (CHECKS) {
check(session);
checkNT1(name);
}
return novr_SetExternalCameraProperties(session, memAddress(name), intrinsics.address(), extrinsics.address());
}
/**
* Sets the camera intrinsics and/or extrinsics stored for the {@code cameraName} camera.
*
* Names must be < 32 characters and null-terminated.
*
* @param session an {@code ovrSession} previously returned by {@link #ovr_Create Create}
* @param name specifies which camera to set the intrinsics or extrinsics for. The name must be at most {@link #OVR_EXTERNAL_CAMERA_NAME_SIZE} - 1 characters. Otherwise,
* {@link OVRErrorCode#ovrError_ExternalCameraNameWrongSize Error_ExternalCameraNameWrongSize} is returned.
* @param intrinsics contains the intrinsic parameters to set, can be null
* @param extrinsics ontains the extrinsic parameters to set, can be null
*
* @return {@link OVRErrorCode#ovrSuccess Success} or an {@code ovrError} code
*/
@NativeType("ovrResult")
public static int ovr_SetExternalCameraProperties(@NativeType("ovrSession") long session, @NativeType("char const *") CharSequence name, @NativeType("ovrCameraIntrinsics const * const") OVRCameraIntrinsics intrinsics, @NativeType("ovrCameraExtrinsics const * const") OVRCameraExtrinsics extrinsics) {
if (CHECKS) {
check(session);
}
MemoryStack stack = stackGet(); int stackPointer = stack.getPointer();
try {
stack.nASCII(name, true);
long nameEncoded = stack.getPointerAddress();
return novr_SetExternalCameraProperties(session, nameEncoded, intrinsics.address(), extrinsics.address());
} finally {
stack.setPointer(stackPointer);
}
}
// --- [ ovr_GetTextureSwapChainLength ] ---
/** Unsafe version of: {@link #ovr_GetTextureSwapChainLength GetTextureSwapChainLength} */
public static native int novr_GetTextureSwapChainLength(long session, long chain, long out_Length);
/**
* Gets the number of buffers in an {@code ovrTextureSwapChain}.
*
* @param session an {@code ovrSession} previously returned by {@link #ovr_Create Create}
* @param chain the {@code ovrTextureSwapChain} for which the length should be retrieved
* @param out_Length returns the number of buffers in the specified chain
*/
@NativeType("ovrResult")
public static int ovr_GetTextureSwapChainLength(@NativeType("ovrSession") long session, @NativeType("ovrTextureSwapChain") long chain, @NativeType("int *") IntBuffer out_Length) {
if (CHECKS) {
check(session);
check(chain);
check(out_Length, 1);
}
return novr_GetTextureSwapChainLength(session, chain, memAddress(out_Length));
}
// --- [ ovr_GetTextureSwapChainCurrentIndex ] ---
/** Unsafe version of: {@link #ovr_GetTextureSwapChainCurrentIndex GetTextureSwapChainCurrentIndex} */
public static native int novr_GetTextureSwapChainCurrentIndex(long session, long chain, long out_Index);
/**
* Gets the current index in an {@code ovrTextureSwapChain}.
*
* @param session an {@code ovrSession} previously returned by {@link #ovr_Create Create}
* @param chain the {@code ovrTextureSwapChain} for which the index should be retrieved
* @param out_Index returns the current (free) index in specified chain
*/
@NativeType("ovrResult")
public static int ovr_GetTextureSwapChainCurrentIndex(@NativeType("ovrSession") long session, @NativeType("ovrTextureSwapChain") long chain, @NativeType("int *") IntBuffer out_Index) {
if (CHECKS) {
check(session);
check(chain);
check(out_Index, 1);
}
return novr_GetTextureSwapChainCurrentIndex(session, chain, memAddress(out_Index));
}
// --- [ ovr_GetTextureSwapChainDesc ] ---
/** Unsafe version of: {@link #ovr_GetTextureSwapChainDesc GetTextureSwapChainDesc} */
public static native int novr_GetTextureSwapChainDesc(long session, long chain, long out_Desc);
/**
* Gets the description of the buffers in an {@code ovrTextureSwapChain}.
*
* @param session an {@code ovrSession} previously returned by {@link #ovr_Create Create}
* @param chain the {@code ovrTextureSwapChain} for which the description should be retrieved
* @param out_Desc returns the description of the specified chain
*/
@NativeType("ovrResult")
public static int ovr_GetTextureSwapChainDesc(@NativeType("ovrSession") long session, @NativeType("ovrTextureSwapChain") long chain, @NativeType("ovrTextureSwapChainDesc *") OVRTextureSwapChainDesc out_Desc) {
if (CHECKS) {
check(session);
check(chain);
}
return novr_GetTextureSwapChainDesc(session, chain, out_Desc.address());
}
// --- [ ovr_CommitTextureSwapChain ] ---
/** Unsafe version of: {@link #ovr_CommitTextureSwapChain CommitTextureSwapChain} */
public static native int novr_CommitTextureSwapChain(long session, long chain);
/**
* Commits any pending changes to an {@code ovrTextureSwapChain}, and advances its current index.
*
* When Commit is called, the texture at the current index is considered ready for use by the runtime, and further writes to it should be avoided. The
* swap chain's current index is advanced, providing there's room in the chain. The next time the SDK dereferences this texture swap chain, 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.
*
* @param session an {@code ovrSession} previously returned by {@link #ovr_Create Create}
* @param chain the {@code ovrTextureSwapChain} to commit
*/
@NativeType("ovrResult")
public static int ovr_CommitTextureSwapChain(@NativeType("ovrSession") long session, @NativeType("ovrTextureSwapChain") long chain) {
if (CHECKS) {
check(session);
check(chain);
}
return novr_CommitTextureSwapChain(session, chain);
}
// --- [ ovr_DestroyTextureSwapChain ] ---
/** Unsafe version of: {@link #ovr_DestroyTextureSwapChain DestroyTextureSwapChain} */
public static native void novr_DestroyTextureSwapChain(long session, long chain);
/**
* Destroys an {@code ovrTextureSwapChain} and frees all the resources associated with it.
*
* @param session an {@code ovrSession} previously returned by {@link #ovr_Create Create}
* @param chain the {@code ovrTextureSwapChain} to destroy. If it is {@code NULL} then this function has no effect.
*/
public static void ovr_DestroyTextureSwapChain(@NativeType("ovrSession") long session, @NativeType("ovrTextureSwapChain") long chain) {
if (CHECKS) {
check(session);
}
novr_DestroyTextureSwapChain(session, chain);
}
// --- [ ovr_DestroyMirrorTexture ] ---
/** Unsafe version of: {@link #ovr_DestroyMirrorTexture DestroyMirrorTexture} */
public static native void novr_DestroyMirrorTexture(long session, long mirrorTexture);
/**
* Destroys a mirror texture previously created by one of the mirror texture creation functions.
*
* @param session an {@code ovrSession} previously returned by {@link #ovr_Create Create}
* @param mirrorTexture the {@code ovrTexture} to destroy. If it is {@code NULL} then this function has no effect.
*/
public static void ovr_DestroyMirrorTexture(@NativeType("ovrSession") long session, @NativeType("ovrMirrorTexture") long mirrorTexture) {
if (CHECKS) {
check(session);
}
novr_DestroyMirrorTexture(session, mirrorTexture);
}
// --- [ ovr_GetFovTextureSize ] ---
/** Unsafe version of: {@link #ovr_GetFovTextureSize GetFovTextureSize} */
public static native void novr_GetFovTextureSize(long session, int eye, long fov, float pixelsPerDisplayPixel, long __result);
/**
* Calculates the recommended viewport size for rendering a given eye within the HMD with a given FOV cone.
*
* Higher FOV will generally require larger textures to maintain quality. Apps packing multiple eye views together on the same texture should ensure there
* are at least 8 pixels of padding between them to prevent texture filtering and chromatic aberration causing images to leak between the two eye views.
*
* Example code:
*
*
* ovrHmdDesc hmdDesc = ovr_GetHmdDesc(session);
* ovrSizei eyeSizeLeft = ovr_GetFovTextureSize(session, ovrEye_Left, hmdDesc.DefaultEyeFov[ovrEye_Left], 1.0f);
* ovrSizei eyeSizeRight = ovr_GetFovTextureSize(session, ovrEye_Right, hmdDesc.DefaultEyeFov[ovrEye_Right], 1.0f);
*
* @param session an {@code ovrSession} previously returned by {@link #ovr_Create Create}
* @param eye which eye (left or right) to calculate for. One of:
{@link #ovrEye_Left Eye_Left} {@link #ovrEye_Right Eye_Right}
* @param fov the {@link OVRFovPort} to use
* @param pixelsPerDisplayPixel the ratio of the number of render target pixels to display pixels at the center of distortion. 1.0 is the default value. Lower values can improve
* performance, higher values give improved quality.
* @param __result the texture width and height size
*/
@NativeType("ovrSizei")
public static OVRSizei ovr_GetFovTextureSize(@NativeType("ovrSession") long session, @NativeType("ovrEyeType") int eye, @NativeType("ovrFovPort") OVRFovPort fov, float pixelsPerDisplayPixel, @NativeType("ovrSizei") OVRSizei __result) {
if (CHECKS) {
check(session);
}
novr_GetFovTextureSize(session, eye, fov.address(), pixelsPerDisplayPixel, __result.address());
return __result;
}
// --- [ ovr_GetRenderDesc ] ---
/** Unsafe version of: {@link #ovr_GetRenderDesc GetRenderDesc} */
public static native void novr_GetRenderDesc(long session, int eyeType, long fov, long __result);
/**
* Computes the distortion viewport, view adjust, and other rendering parameters for the specified eye.
*
* @param session an {@code ovrSession} previously returned by {@link #ovr_Create Create}
* @param eyeType which eye (left or right) for which to perform calculations. One of:
{@link #ovrEye_Left Eye_Left} {@link #ovrEye_Right Eye_Right}
* @param fov the {@link OVRFovPort} to use.
* @param __result the computed {@link OVREyeRenderDesc} for the given {@code eyeType} and field of view
*/
@NativeType("ovrEyeRenderDesc")
public static OVREyeRenderDesc ovr_GetRenderDesc(@NativeType("ovrSession") long session, @NativeType("ovrEyeType") int eyeType, @NativeType("ovrFovPort") OVRFovPort fov, @NativeType("ovrEyeRenderDesc") OVREyeRenderDesc __result) {
if (CHECKS) {
check(session);
}
novr_GetRenderDesc(session, eyeType, fov.address(), __result.address());
return __result;
}
// --- [ ovr_GetFovStencil ] ---
/** Unsafe version of: {@link #ovr_GetFovStencil GetFovStencil} */
public static native int novr_GetFovStencil(long session, long fovStencilDesc, long meshBuffer);
/**
* Returns a viewport stencil mesh to be used for defining the area or outline the user can see through the lens on an area defined by a given
* {@code ovrFovPort}.
*
* To find out how big the vertex and index buffers in {@code meshBuffer} buffer should be, first call this function setting {@code AllocVertexCount}
* & {@code AllocIndexCount} to 0 while also sending in {@code nullptr} for {@code VertexBuffer} & {@code IndexBuffer}. The SDK will populate
* {@code UsedVertexCount} & {@code UsedIndexCount} values.
*
* If {@code Alloc*Count} fields in {@code meshBuffer} are smaller than the expected {@code Used*Count} fields, (except when they are 0) then the SDK will
* return {@link OVRErrorCode#ovrError_InvalidParameter Error_InvalidParameter} and leave {@code VertexBuffer} and {@code IndexBuffer} untouched.
*
* 2D positions provided in the buffer will be in the {@code [0,1]} range where Y increases downward, similar to texture-UV space. If Y coordinates need
* to be flipped upside down, use the {@link #ovrFovStencilFlag_MeshOriginAtBottomLeft FovStencilFlag_MeshOriginAtBottomLeft}.
*
* @param session an {@code ovrSession} previously returned by {@link #ovr_Create Create}
* @param fovStencilDesc info provided by caller necessary to generate a stencil mesh
* @param meshBuffer mesh buffer to be partially filled in and returned by the SDK
*
* @return an ovrResult indicating success or failure. In the case of failure, use {@link #ovr_GetLastErrorInfo GetLastErrorInfo} to get more information. Return values include but aren't
* limited to:
*
*
* - {@link OVRErrorCode#ovrSuccess Success}: Completed successfully.
* - {@link OVRErrorCode#ovrError_ServiceConnection Error_ServiceConnection}: The service connection was lost and the application must destroy the session.
* - {@link OVRErrorCode#ovrError_InvalidParameter Error_InvalidParameter}: One or more of the parameters
*
*/
@NativeType("ovrResult")
public static int ovr_GetFovStencil(@NativeType("ovrSession") long session, @NativeType("ovrFovStencilDesc const *") OVRFovStencilDesc fovStencilDesc, @NativeType("ovrFovStencilMeshBuffer *") OVRFovStencilMeshBuffer meshBuffer) {
if (CHECKS) {
check(session);
}
return novr_GetFovStencil(session, fovStencilDesc.address(), meshBuffer.address());
}
// --- [ ovr_WaitToBeginFrame ] ---
/** Unsafe version of: {@link #ovr_WaitToBeginFrame WaitToBeginFrame} */
public static native int novr_WaitToBeginFrame(long session, long frameIndex);
/**
* Waits until surfaces are available and it is time to begin rendering the frame. Must be called before {@link #ovr_BeginFrame BeginFrame}, but not necessarily from the same
* thread.
*
* @param session an {@code ovrSession} previously returned by {@link #ovr_Create Create}
* @param frameIndex specifies the targeted application frame index
*
* @return an {@code ovrResult} for which {@code OVR_SUCCESS(result)} is false upon error and true upon success. Return values include but aren't limited to:
*
*
* - {@link OVRErrorCode#ovrSuccess Success}: command completed successfully.
* - {@link OVRErrorCode#ovrSuccess_NotVisible Success_NotVisible}: rendering of a previous frame completed successfully but was not displayed on the HMD, usually because another application
* currently has ownership of the HMD. Applications receiving this result should stop rendering new content and call {@link #ovr_GetSessionStatus GetSessionStatus} to detect
* visibility.
* - {@link OVRErrorCode#ovrError_DisplayLost Error_DisplayLost}: The session has become invalid (such as due to a device removal) and the shared resources need to be released
* ({@link #ovr_DestroyTextureSwapChain DestroyTextureSwapChain}), the session needs to destroyed ({@link #ovr_Destroy Destroy}) and recreated ({@link #ovr_Create Create}), and new resources need to be created
* ({@code ovr_CreateTextureSwapChainXXX}). The application's existing private graphics resources do not need to be recreated unless the new
* {@code ovr_Create} call returns a different {@code GraphicsLuid}.
*
*/
@NativeType("ovrResult")
public static int ovr_WaitToBeginFrame(@NativeType("ovrSession") long session, @NativeType("long long") long frameIndex) {
if (CHECKS) {
check(session);
}
return novr_WaitToBeginFrame(session, frameIndex);
}
// --- [ ovr_BeginFrame ] ---
/** Unsafe version of: {@link #ovr_BeginFrame BeginFrame} */
public static native int novr_BeginFrame(long session, long frameIndex);
/**
* Called from render thread before application begins rendering. Must be called after {@link #ovr_WaitToBeginFrame WaitToBeginFrame} and before {@link #ovr_EndFrame EndFrame}, but not necessarily
* from the same threads.
*
* @param session an {@code ovrSession} previously returned by {@link #ovr_Create Create}
* @param frameIndex specifies the targeted application frame index. It must match what was passed to {@link #ovr_WaitToBeginFrame WaitToBeginFrame}.
*
* @return an {@code ovrResult} for which {@code OVR_SUCCESS(result)} is false upon error and true upon success. Return values include but aren't limited to:
*
*
* - {@link OVRErrorCode#ovrSuccess Success}: command completed successfully.
* - {@link OVRErrorCode#ovrError_DisplayLost Error_DisplayLost}: The session has become invalid (such as due to a device removal) and the shared resources need to be released
* ({@link #ovr_DestroyTextureSwapChain DestroyTextureSwapChain}), the session needs to destroyed ({@link #ovr_Destroy Destroy}) and recreated ({@link #ovr_Create Create}), and new resources need to be created
* ({@code ovr_CreateTextureSwapChainXXX}). The application's existing private graphics resources do not need to be recreated unless the new
* {@code ovr_Create} call returns a different {@code GraphicsLuid}.
*
*/
@NativeType("ovrResult")
public static int ovr_BeginFrame(@NativeType("ovrSession") long session, @NativeType("long long") long frameIndex) {
if (CHECKS) {
check(session);
}
return novr_BeginFrame(session, frameIndex);
}
// --- [ ovr_EndFrame ] ---
/**
* Unsafe version of: {@link #ovr_EndFrame EndFrame}
*
* @param layerCount indicates the number of valid elements in {@code layerPtrList}. The maximum supported {@code layerCount} is not currently specified, but may be
* specified in a future version.
*/
public static native int novr_EndFrame(long session, long frameIndex, long viewScaleDesc, long layerPtrList, int layerCount);
/**
* Called from render thread after application has finished rendering. Must be called after {@link #ovr_BeginFrame BeginFrame}, but not necessarily from the same thread.
* Submits layers for distortion and display, which will happen asynchronously.
*
*
* - Layers are drawn in the order they are specified in the array, regardless of the layer type.
* - Layers are not remembered between successive calls to {@link #ovr_EndFrame EndFrame}. A layer must be specified in every call to {@link #ovr_EndFrame EndFrame} or it won't be displayed.
* - If a {@code layerPtrList} entry that was specified in a previous call to {@link #ovr_EndFrame EndFrame} is passed as {@code NULL} or is of type {@link #ovrLayerType_Disabled LayerType_Disabled}, that
* layer is no longer displayed.
* - A {@code layerPtrList} entry can be of any layer type and multiple entries of the same layer type are allowed. No {@code layerPtrList} entry may be
* duplicated (i.e. the same pointer as an earlier entry).
*
*
* Example code
*
*
* ovrLayerEyeFov layer0;
* ovrLayerQuad layer1;
* ...
* ovrLayerHeader* layers[2] = { &layer0.Header, &layer1.Header };
* ovrResult result = ovr_EndFrame(session, frameIndex, nullptr, layers, 2);
*
* @param session an {@code ovrSession} previously returned by {@link #ovr_Create Create}
* @param frameIndex specifies the targeted application frame index. It must match what was passed to {@link #ovr_BeginFrame BeginFrame}.
* @param viewScaleDesc provides additional information needed only if {@code layerPtrList} contains an {@link #ovrLayerType_Quad LayerType_Quad}. If {@code NULL}, a default version is used based on the
* current configuration and a 1.0 world scale.
* @param layerPtrList specifies a list of ovrLayer pointers, which can include {@code NULL} entries to indicate that any previously shown layer at that index is to not be
* displayed. Each layer header must be a part of a layer structure such as {@link OVRLayerEyeFov} or {@link OVRLayerQuad}, with {@code Header.Type} identifying
* its type. A {@code NULL} layerPtrList entry in the array indicates the absence of the given layer.
*
* @return an {@code ovrResult} for which {@code OVR_SUCCESS(result)} is false upon error and true upon success. Return values include but aren't limited to:
*
*
* - {@link OVRErrorCode#ovrSuccess Success}: rendering completed successfully.
* - {@link OVRErrorCode#ovrError_DisplayLost Error_DisplayLost}: The session has become invalid (such as due to a device removal) and the shared resources need to be released
* ({@link #ovr_DestroyTextureSwapChain DestroyTextureSwapChain}), the session needs to destroyed ({@link #ovr_Destroy Destroy}) and recreated ({@link #ovr_Create Create}), and new resources need to be created
* ({@code ovr_CreateTextureSwapChainXXX}). The application's existing private graphics resources do not need to be recreated unless the new
* {@code ovr_Create} call returns a different {@code GraphicsLuid}.
* - {@link OVRErrorCode#ovrError_TextureSwapChainInvalid Error_TextureSwapChainInvalid}: The {@code ovrTextureSwapChain} is in an incomplete or inconsistent state. Ensure {@link #ovr_CommitTextureSwapChain CommitTextureSwapChain} was
* called at least once first.
*
*/
@NativeType("ovrResult")
public static int ovr_EndFrame(@NativeType("ovrSession") long session, @NativeType("long long") long frameIndex, @Nullable @NativeType("ovrViewScaleDesc const *") OVRViewScaleDesc viewScaleDesc, @NativeType("ovrLayerHeader const * const *") PointerBuffer layerPtrList) {
if (CHECKS) {
check(session);
}
return novr_EndFrame(session, frameIndex, memAddressSafe(viewScaleDesc), memAddress(layerPtrList), layerPtrList.remaining());
}
// --- [ ovr_SubmitFrame ] ---
/**
* Unsafe version of: {@link #ovr_SubmitFrame SubmitFrame}
*
* @param layerCount the number of valid elements in {@code layerPtrList}. The maximum supported {@code layerCount} is not currently specified, but may be specified in
* a future version.
*/
public static native int novr_SubmitFrame(long session, long frameIndex, long viewScaleDesc, long layerPtrList, int layerCount);
/**
* Submits layers for distortion and display.
*
* Deprecated. Use WaitToBeginFrame(), BeginFrame(), and {@link #ovr_EndFrame EndFrame} instead.
*
* {@code ovr_SubmitFrame} triggers distortion and processing which might happen asynchronously. The function will return when there is room in the
* submission queue and surfaces are available. Distortion might or might not have completed.
*
*
* - Layers are drawn in the order they are specified in the array, regardless of the layer type.
* - Layers are not remembered between successive calls to {@code ovr_SubmitFrame}. A layer must be specified in every call to {@code ovr_SubmitFrame}
* or it won't be displayed.
* - If a {@code layerPtrList} entry that was specified in a previous call to {@code ovr_SubmitFrame} is passed as {@code NULL} or is of type
* {@link #ovrLayerType_Disabled LayerType_Disabled}, that layer is no longer displayed.
* - A {@code layerPtrList} entry can be of any layer type and multiple entries of the same layer type are allowed. No {@code layerPtrList} entry may be
* duplicated (i.e. the same pointer as an earlier entry).
*
*
* Example code
*
*
* ovrLayerEyeFov layer0;
* ovrLayerQuad layer1;
* ...
* ovrLayerHeader* layers[2] = { &layer0.Header, &layer1.Header };
* ovrResult result = ovr_SubmitFrame(session, frameIndex, nullptr, layers, 2);
*
* @param session an {@code ovrSession} previously returned by {@link #ovr_Create Create}
* @param frameIndex the targeted application frame index, or 0 to refer to one frame after the last time {@link #ovr_SubmitFrame SubmitFrame} was called
* @param viewScaleDesc provides additional information needed only if {@code layerPtrList} contains an {@link #ovrLayerType_Quad LayerType_Quad}. If {@code NULL}, a default version is used based on the
* current configuration and a 1.0 world scale.
* @param layerPtrList a list of {@code ovrLayer} pointers, which can include {@code NULL} entries to indicate that any previously shown layer at that index is to not be
* displayed. Each layer header must be a part of a layer structure such as {@link OVRLayerEyeFov} or {@link OVRLayerQuad}, with {@code Header.Type} identifying
* its type. A {@code NULL} {@code layerPtrList} entry in the array indicates the absence of the given layer.
*
* @return an {@code ovrResult} for which {@code OVR_SUCCESS(result)} is false upon error and true upon one of the possible success values:
*
*
* - {@link OVRErrorCode#ovrSuccess Success}: rendering completed successfully.
* - {@link OVRErrorCode#ovrSuccess_NotVisible Success_NotVisible}: rendering completed successfully but was not displayed on the HMD, usually because another application currently has ownership
* of the HMD. Applications receiving this result should stop rendering new content, call {@link #ovr_GetSessionStatus GetSessionStatus} to detect visibility.
* - {@link OVRErrorCode#ovrError_DisplayLost Error_DisplayLost}: The session has become invalid (such as due to a device removal) and the shared resources need to be released
* ({@link #ovr_DestroyTextureSwapChain DestroyTextureSwapChain}), the session needs to be destroyed ({@link #ovr_Destroy Destroy}) and recreated ({@link #ovr_Create Create}), and new resources need to be created
* ({@code ovr_CreateTextureSwapChainXXX}). The application's existing private graphics resources do not need to be recreated unless the new
* {@code ovr_Create} call returns a different {@code GraphicsLuid}.
* - {@link OVRErrorCode#ovrError_TextureSwapChainInvalid Error_TextureSwapChainInvalid}: The {@code ovrTextureSwapChain} is in an incomplete or inconsistent state. Ensure
* {@link #ovr_CommitTextureSwapChain CommitTextureSwapChain} was called at least once first.
*
*/
@NativeType("ovrResult")
public static int ovr_SubmitFrame(@NativeType("ovrSession") long session, @NativeType("long long") long frameIndex, @Nullable @NativeType("ovrViewScaleDesc const *") OVRViewScaleDesc viewScaleDesc, @NativeType("ovrLayerHeader const * const *") PointerBuffer layerPtrList) {
if (CHECKS) {
check(session);
}
return novr_SubmitFrame(session, frameIndex, memAddressSafe(viewScaleDesc), memAddress(layerPtrList), layerPtrList.remaining());
}
// --- [ ovr_GetPerfStats ] ---
/** Unsafe version of: {@link #ovr_GetPerfStats GetPerfStats} */
public static native int novr_GetPerfStats(long session, long outStats);
/**
* Retrieves performance stats for the VR app as well as the SDK compositor.
*
* This function will return stats for the VR app that is currently visible in the HMD regardless of what VR app is actually calling this function.
*
* If the VR app is trying to make sure the stats returned belong to the same application, the caller can compare the {@code VisibleProcessId} with their
* own process ID. Normally this will be the case if the caller is only calling {@code ovr_GetPerfStats} when {@link #ovr_GetSessionStatus GetSessionStatus} has {@code IsVisible}
* flag set to be true.
*
* If the VR app calling {@code ovr_GetPerfStats} is actually the one visible in the HMD, then new perf stats will only be populated after a new call to
* {@link #ovr_SubmitFrame SubmitFrame}. That means subsequent calls to {@code ovr_GetPerfStats} after the first one without calling {@code ovr_SubmitFrame} will receive a
* {@code FrameStatsCount} of zero.
*
* If the VR app is not visible, or was initially marked as {@link #ovrInit_Invisible Init_Invisible}, then each call to {@code ovr_GetPerfStats} will immediately fetch new perf
* stats from the compositor without a need for the {@code ovr_SubmitFrame} call.
*
* Even though invisible VR apps do not require {@code ovr_SubmitFrame} to be called to gather new perf stats, since stats are generated at the native
* refresh rate of the HMD (i.e. 90 Hz for CV1), calling it at a higher rate than that would be unnecessary.
*
* @param session an {@code ovrSession} previously returned by {@link #ovr_Create Create}
* @param outStats contains the performance stats for the application and SDK compositor
*
* @return an {@code ovrResult} for which {@code OVR_SUCCESS(result)} is false upon error and true upon success
*/
@NativeType("ovrResult")
public static int ovr_GetPerfStats(@NativeType("ovrSession") long session, @NativeType("ovrPerfStats *") OVRPerfStats outStats) {
if (CHECKS) {
check(session);
}
return novr_GetPerfStats(session, outStats.address());
}
// --- [ ovr_ResetPerfStats ] ---
/** Unsafe version of: {@link #ovr_ResetPerfStats ResetPerfStats} */
public static native int novr_ResetPerfStats(long session);
/**
* Resets the accumulated stats reported in each {@link OVRPerfStatsPerCompositorFrame} back to zero.
*
* Only the integer values such as {@code HmdVsyncIndex}, {@code AppDroppedFrameCount} etc. will be reset as the other fields such as
* {@code AppMotionToPhotonLatency} are independent timing values updated per-frame.
*
* @param session an {@code ovrSession} previously returned by {@link #ovr_Create Create}
*
* @return an {@code ovrResult} for which {@code OVR_SUCCESS(result)} is false upon error and true upon success
*/
@NativeType("ovrResult")
public static int ovr_ResetPerfStats(@NativeType("ovrSession") long session) {
if (CHECKS) {
check(session);
}
return novr_ResetPerfStats(session);
}
// --- [ ovr_GetPredictedDisplayTime ] ---
/** Unsafe version of: {@link #ovr_GetPredictedDisplayTime GetPredictedDisplayTime} */
public static native double novr_GetPredictedDisplayTime(long session, long frameIndex);
/**
* 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.
*
* The application should increment frameIndex for each successively targeted 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 event 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 session an {@code ovrSession} previously returned by {@link #ovr_Create Create}
* @param frameIndex the frame the caller wishes to target. A value of zero returns the next frame index.
*
* @return the absolute frame midpoint time for the given {@code frameIndex}
*/
public static double ovr_GetPredictedDisplayTime(@NativeType("ovrSession") long session, @NativeType("long long") long frameIndex) {
if (CHECKS) {
check(session);
}
return novr_GetPredictedDisplayTime(session, frameIndex);
}
// --- [ ovr_GetTimeInSeconds ] ---
/**
* Returns global, absolute high-resolution time in seconds.
*
* The time frame of reference for this function is not specified and should not be depended upon.
*
* @return seconds as a floating point value
*/
public static native double ovr_GetTimeInSeconds();
// --- [ ovr_GetBool ] ---
/** Unsafe version of: {@link #ovr_GetBool GetBool} */
public static native boolean novr_GetBool(long session, long propertyName, boolean defaultVal);
/**
* Reads a boolean property.
*
* @param session an {@code ovrSession} previously returned by {@link #ovr_Create Create}
* @param propertyName the name of the property, which needs to be valid for only the call
* @param defaultVal specifes the value to return if the property couldn't be read
*
* @return the property interpreted as a boolean value. Returns {@code defaultVal} if the property doesn't exist.
*/
@NativeType("ovrBool")
public static boolean ovr_GetBool(@NativeType("ovrSession") long session, @NativeType("char const *") ByteBuffer propertyName, @NativeType("ovrBool") boolean defaultVal) {
if (CHECKS) {
check(session);
checkNT1(propertyName);
}
return novr_GetBool(session, memAddress(propertyName), defaultVal);
}
/**
* Reads a boolean property.
*
* @param session an {@code ovrSession} previously returned by {@link #ovr_Create Create}
* @param propertyName the name of the property, which needs to be valid for only the call
* @param defaultVal specifes the value to return if the property couldn't be read
*
* @return the property interpreted as a boolean value. Returns {@code defaultVal} if the property doesn't exist.
*/
@NativeType("ovrBool")
public static boolean ovr_GetBool(@NativeType("ovrSession") long session, @NativeType("char const *") CharSequence propertyName, @NativeType("ovrBool") boolean defaultVal) {
if (CHECKS) {
check(session);
}
MemoryStack stack = stackGet(); int stackPointer = stack.getPointer();
try {
stack.nASCII(propertyName, true);
long propertyNameEncoded = stack.getPointerAddress();
return novr_GetBool(session, propertyNameEncoded, defaultVal);
} finally {
stack.setPointer(stackPointer);
}
}
// --- [ ovr_SetBool ] ---
/** Unsafe version of: {@link #ovr_SetBool SetBool} */
public static native boolean novr_SetBool(long session, long propertyName, boolean value);
/**
* Writes or creates a boolean property.
*
* If the property wasn't previously a boolean property, it is changed to a boolean property.
*
* @param session an {@code ovrSession} previously returned by {@link #ovr_Create Create}
* @param propertyName the name of the property, which needs to be valid only for the call
* @param value the value to write
*
* @return true if successful, otherwise false. A false result should only occur if the property name is empty or if the property is read-only.
*/
@NativeType("ovrBool")
public static boolean ovr_SetBool(@NativeType("ovrSession") long session, @NativeType("char const *") ByteBuffer propertyName, @NativeType("ovrBool") boolean value) {
if (CHECKS) {
check(session);
checkNT1(propertyName);
}
return novr_SetBool(session, memAddress(propertyName), value);
}
/**
* Writes or creates a boolean property.
*
* If the property wasn't previously a boolean property, it is changed to a boolean property.
*
* @param session an {@code ovrSession} previously returned by {@link #ovr_Create Create}
* @param propertyName the name of the property, which needs to be valid only for the call
* @param value the value to write
*
* @return true if successful, otherwise false. A false result should only occur if the property name is empty or if the property is read-only.
*/
@NativeType("ovrBool")
public static boolean ovr_SetBool(@NativeType("ovrSession") long session, @NativeType("char const *") CharSequence propertyName, @NativeType("ovrBool") boolean value) {
if (CHECKS) {
check(session);
}
MemoryStack stack = stackGet(); int stackPointer = stack.getPointer();
try {
stack.nASCII(propertyName, true);
long propertyNameEncoded = stack.getPointerAddress();
return novr_SetBool(session, propertyNameEncoded, value);
} finally {
stack.setPointer(stackPointer);
}
}
// --- [ ovr_GetInt ] ---
/** Unsafe version of: {@link #ovr_GetInt GetInt} */
public static native int novr_GetInt(long session, long propertyName, int defaultVal);
/**
* Reads an integer property.
*
* @param session an {@code ovrSession} previously returned by {@link #ovr_Create Create}
* @param propertyName the name of the property, which needs to be valid only for the call
* @param defaultVal specifes the value to return if the property couldn't be read
*
* @return the property interpreted as an integer value. Returns {@code defaultVal} if the property doesn't exist.
*/
public static int ovr_GetInt(@NativeType("ovrSession") long session, @NativeType("char const *") ByteBuffer propertyName, int defaultVal) {
if (CHECKS) {
check(session);
checkNT1(propertyName);
}
return novr_GetInt(session, memAddress(propertyName), defaultVal);
}
/**
* Reads an integer property.
*
* @param session an {@code ovrSession} previously returned by {@link #ovr_Create Create}
* @param propertyName the name of the property, which needs to be valid only for the call
* @param defaultVal specifes the value to return if the property couldn't be read
*
* @return the property interpreted as an integer value. Returns {@code defaultVal} if the property doesn't exist.
*/
public static int ovr_GetInt(@NativeType("ovrSession") long session, @NativeType("char const *") CharSequence propertyName, int defaultVal) {
if (CHECKS) {
check(session);
}
MemoryStack stack = stackGet(); int stackPointer = stack.getPointer();
try {
stack.nASCII(propertyName, true);
long propertyNameEncoded = stack.getPointerAddress();
return novr_GetInt(session, propertyNameEncoded, defaultVal);
} finally {
stack.setPointer(stackPointer);
}
}
// --- [ ovr_SetInt ] ---
/** Unsafe version of: {@link #ovr_SetInt SetInt} */
public static native boolean novr_SetInt(long session, long propertyName, int value);
/**
* Writes or creates an integer property.
*
* If the property wasn't previously an integer property, it is changed to an integer property.
*
* @param session an {@code ovrSession} previously returned by {@link #ovr_Create Create}
* @param propertyName the name of the property, which needs to be valid only for the call
* @param value the value to write
*
* @return true if successful, otherwise false. A false result should only occur if the property name is empty or if the property is read-only.
*/
@NativeType("ovrBool")
public static boolean ovr_SetInt(@NativeType("ovrSession") long session, @NativeType("char const *") ByteBuffer propertyName, int value) {
if (CHECKS) {
check(session);
checkNT1(propertyName);
}
return novr_SetInt(session, memAddress(propertyName), value);
}
/**
* Writes or creates an integer property.
*
* If the property wasn't previously an integer property, it is changed to an integer property.
*
* @param session an {@code ovrSession} previously returned by {@link #ovr_Create Create}
* @param propertyName the name of the property, which needs to be valid only for the call
* @param value the value to write
*
* @return true if successful, otherwise false. A false result should only occur if the property name is empty or if the property is read-only.
*/
@NativeType("ovrBool")
public static boolean ovr_SetInt(@NativeType("ovrSession") long session, @NativeType("char const *") CharSequence propertyName, int value) {
if (CHECKS) {
check(session);
}
MemoryStack stack = stackGet(); int stackPointer = stack.getPointer();
try {
stack.nASCII(propertyName, true);
long propertyNameEncoded = stack.getPointerAddress();
return novr_SetInt(session, propertyNameEncoded, value);
} finally {
stack.setPointer(stackPointer);
}
}
// --- [ ovr_GetFloat ] ---
/** Unsafe version of: {@link #ovr_GetFloat GetFloat} */
public static native float novr_GetFloat(long session, long propertyName, float defaultVal);
/**
* Reads a float property.
*
* @param session an {@code ovrSession} previously returned by {@link #ovr_Create Create}
* @param propertyName the name of the property, which needs to be valid only for the call
* @param defaultVal specifes the value to return if the property couldn't be read
*
* @return the property interpreted as a float value. Returns {@code defaultVal} if the property doesn't exist.
*/
public static float ovr_GetFloat(@NativeType("ovrSession") long session, @NativeType("char const *") ByteBuffer propertyName, float defaultVal) {
if (CHECKS) {
check(session);
checkNT1(propertyName);
}
return novr_GetFloat(session, memAddress(propertyName), defaultVal);
}
/**
* Reads a float property.
*
* @param session an {@code ovrSession} previously returned by {@link #ovr_Create Create}
* @param propertyName the name of the property, which needs to be valid only for the call
* @param defaultVal specifes the value to return if the property couldn't be read
*
* @return the property interpreted as a float value. Returns {@code defaultVal} if the property doesn't exist.
*/
public static float ovr_GetFloat(@NativeType("ovrSession") long session, @NativeType("char const *") CharSequence propertyName, float defaultVal) {
if (CHECKS) {
check(session);
}
MemoryStack stack = stackGet(); int stackPointer = stack.getPointer();
try {
stack.nASCII(propertyName, true);
long propertyNameEncoded = stack.getPointerAddress();
return novr_GetFloat(session, propertyNameEncoded, defaultVal);
} finally {
stack.setPointer(stackPointer);
}
}
// --- [ ovr_SetFloat ] ---
/** Unsafe version of: {@link #ovr_SetFloat SetFloat} */
public static native boolean novr_SetFloat(long session, long propertyName, float value);
/**
* Writes or creates a float property.
*
* If the property wasn't previously a float property, it's changed to a float property.
*
* @param session an {@code ovrSession} previously returned by {@link #ovr_Create Create}
* @param propertyName the name of the property, which needs to be valid only for the call
* @param value the value to write
*
* @return true if successful, otherwise false. A false result should only occur if the property name is empty or if the property is read-only.
*/
@NativeType("ovrBool")
public static boolean ovr_SetFloat(@NativeType("ovrSession") long session, @NativeType("char const *") ByteBuffer propertyName, float value) {
if (CHECKS) {
check(session);
checkNT1(propertyName);
}
return novr_SetFloat(session, memAddress(propertyName), value);
}
/**
* Writes or creates a float property.
*
* If the property wasn't previously a float property, it's changed to a float property.
*
* @param session an {@code ovrSession} previously returned by {@link #ovr_Create Create}
* @param propertyName the name of the property, which needs to be valid only for the call
* @param value the value to write
*
* @return true if successful, otherwise false. A false result should only occur if the property name is empty or if the property is read-only.
*/
@NativeType("ovrBool")
public static boolean ovr_SetFloat(@NativeType("ovrSession") long session, @NativeType("char const *") CharSequence propertyName, float value) {
if (CHECKS) {
check(session);
}
MemoryStack stack = stackGet(); int stackPointer = stack.getPointer();
try {
stack.nASCII(propertyName, true);
long propertyNameEncoded = stack.getPointerAddress();
return novr_SetFloat(session, propertyNameEncoded, value);
} finally {
stack.setPointer(stackPointer);
}
}
// --- [ ovr_GetFloatArray ] ---
/**
* Unsafe version of: {@link #ovr_GetFloatArray GetFloatArray}
*
* @param valuesCapacity the maximum number of elements to write to the values array
*/
public static native int novr_GetFloatArray(long session, long propertyName, long values, int valuesCapacity);
/**
* Reads a float array property.
*
* @param session an {@code ovrSession} previously returned by {@link #ovr_Create Create}
* @param propertyName the name of the property, which needs to be valid only for the call
* @param values an array of float to write to
*
* @return the number of elements read, or 0 if property doesn't exist or is empty
*/
@NativeType("unsigned int")
public static int ovr_GetFloatArray(@NativeType("ovrSession") long session, @NativeType("char const *") ByteBuffer propertyName, @NativeType("float *") FloatBuffer values) {
if (CHECKS) {
check(session);
checkNT1(propertyName);
}
return novr_GetFloatArray(session, memAddress(propertyName), memAddress(values), values.remaining());
}
/**
* Reads a float array property.
*
* @param session an {@code ovrSession} previously returned by {@link #ovr_Create Create}
* @param propertyName the name of the property, which needs to be valid only for the call
* @param values an array of float to write to
*
* @return the number of elements read, or 0 if property doesn't exist or is empty
*/
@NativeType("unsigned int")
public static int ovr_GetFloatArray(@NativeType("ovrSession") long session, @NativeType("char const *") CharSequence propertyName, @NativeType("float *") FloatBuffer values) {
if (CHECKS) {
check(session);
}
MemoryStack stack = stackGet(); int stackPointer = stack.getPointer();
try {
stack.nASCII(propertyName, true);
long propertyNameEncoded = stack.getPointerAddress();
return novr_GetFloatArray(session, propertyNameEncoded, memAddress(values), values.remaining());
} finally {
stack.setPointer(stackPointer);
}
}
// --- [ ovr_SetFloatArray ] ---
/**
* Unsafe version of: {@link #ovr_SetFloatArray SetFloatArray}
*
* @param valuesSize the number of elements to write
*/
public static native boolean novr_SetFloatArray(long session, long propertyName, long values, int valuesSize);
/**
* Writes or creates a float array property.
*
* @param session an {@code ovrSession} previously returned by {@link #ovr_Create Create}
* @param propertyName the name of the property, which needs to be valid only for the call
* @param values an array of float to write from
*
* @return true if successful, otherwise false. A false result should only occur if the property name is empty or if the property is read-only.
*/
@NativeType("ovrBool")
public static boolean ovr_SetFloatArray(@NativeType("ovrSession") long session, @NativeType("char const *") ByteBuffer propertyName, @NativeType("float *") FloatBuffer values) {
if (CHECKS) {
check(session);
checkNT1(propertyName);
}
return novr_SetFloatArray(session, memAddress(propertyName), memAddress(values), values.remaining());
}
/**
* Writes or creates a float array property.
*
* @param session an {@code ovrSession} previously returned by {@link #ovr_Create Create}
* @param propertyName the name of the property, which needs to be valid only for the call
* @param values an array of float to write from
*
* @return true if successful, otherwise false. A false result should only occur if the property name is empty or if the property is read-only.
*/
@NativeType("ovrBool")
public static boolean ovr_SetFloatArray(@NativeType("ovrSession") long session, @NativeType("char const *") CharSequence propertyName, @NativeType("float *") FloatBuffer values) {
if (CHECKS) {
check(session);
}
MemoryStack stack = stackGet(); int stackPointer = stack.getPointer();
try {
stack.nASCII(propertyName, true);
long propertyNameEncoded = stack.getPointerAddress();
return novr_SetFloatArray(session, propertyNameEncoded, memAddress(values), values.remaining());
} finally {
stack.setPointer(stackPointer);
}
}
// --- [ ovr_GetString ] ---
/** Unsafe version of: {@link #ovr_GetString GetString} */
public static native long novr_GetString(long session, long propertyName, long defaultVal);
/**
* Reads a string property.
*
* Strings are UTF8-encoded and null-terminated.
*
* @param session an {@code ovrSession} previously returned by {@link #ovr_Create Create}
* @param propertyName the name of the property, which needs to be valid only for the call
* @param defaultVal specifes the value to return if the property couldn't be read
*
* @return the string property if it exists. Otherwise returns {@code defaultVal}, which can be specified as {@code NULL}. The return memory is guaranteed to be valid
* until next call to {@code ovr_GetString} or until the HMD is destroyed, whichever occurs first.
*/
@Nullable
@NativeType("char const *")
public static String ovr_GetString(@NativeType("ovrSession") long session, @NativeType("char const *") ByteBuffer propertyName, @Nullable @NativeType("char const *") ByteBuffer defaultVal) {
if (CHECKS) {
check(session);
checkNT1(propertyName);
checkNT1Safe(defaultVal);
}
long __result = novr_GetString(session, memAddress(propertyName), memAddressSafe(defaultVal));
return memUTF8Safe(__result);
}
/**
* Reads a string property.
*
* Strings are UTF8-encoded and null-terminated.
*
* @param session an {@code ovrSession} previously returned by {@link #ovr_Create Create}
* @param propertyName the name of the property, which needs to be valid only for the call
* @param defaultVal specifes the value to return if the property couldn't be read
*
* @return the string property if it exists. Otherwise returns {@code defaultVal}, which can be specified as {@code NULL}. The return memory is guaranteed to be valid
* until next call to {@code ovr_GetString} or until the HMD is destroyed, whichever occurs first.
*/
@Nullable
@NativeType("char const *")
public static String ovr_GetString(@NativeType("ovrSession") long session, @NativeType("char const *") CharSequence propertyName, @Nullable @NativeType("char const *") CharSequence defaultVal) {
if (CHECKS) {
check(session);
}
MemoryStack stack = stackGet(); int stackPointer = stack.getPointer();
try {
stack.nASCII(propertyName, true);
long propertyNameEncoded = stack.getPointerAddress();
stack.nUTF8Safe(defaultVal, true);
long defaultValEncoded = defaultVal == null ? NULL : stack.getPointerAddress();
long __result = novr_GetString(session, propertyNameEncoded, defaultValEncoded);
return memUTF8Safe(__result);
} finally {
stack.setPointer(stackPointer);
}
}
// --- [ ovr_SetString ] ---
/** Unsafe version of: {@link #ovr_SetString SetString} */
public static native boolean novr_SetString(long hmddesc, long propertyName, long value);
/**
* Writes or creates a string property.
*
* Strings are UTF8-encoded and null-terminated.
*
* @param hmddesc an {@code ovrSession} previously returned by {@link #ovr_Create Create}
* @param propertyName the name of the property, which needs to be valid only for the call
* @param value the string property, which only needs to be valid for the duration of the call
*
* @return true if successful, otherwise false. A false result should only occur if the property name is empty or if the property is read-only.
*/
@NativeType("ovrBool")
public static boolean ovr_SetString(@NativeType("ovrSession") long hmddesc, @NativeType("char const *") ByteBuffer propertyName, @NativeType("char const *") ByteBuffer value) {
if (CHECKS) {
check(hmddesc);
checkNT1(propertyName);
checkNT1(value);
}
return novr_SetString(hmddesc, memAddress(propertyName), memAddress(value));
}
/**
* Writes or creates a string property.
*
* Strings are UTF8-encoded and null-terminated.
*
* @param hmddesc an {@code ovrSession} previously returned by {@link #ovr_Create Create}
* @param propertyName the name of the property, which needs to be valid only for the call
* @param value the string property, which only needs to be valid for the duration of the call
*
* @return true if successful, otherwise false. A false result should only occur if the property name is empty or if the property is read-only.
*/
@NativeType("ovrBool")
public static boolean ovr_SetString(@NativeType("ovrSession") long hmddesc, @NativeType("char const *") CharSequence propertyName, @NativeType("char const *") CharSequence value) {
if (CHECKS) {
check(hmddesc);
}
MemoryStack stack = stackGet(); int stackPointer = stack.getPointer();
try {
stack.nASCII(propertyName, true);
long propertyNameEncoded = stack.getPointerAddress();
stack.nASCII(value, true);
long valueEncoded = stack.getPointerAddress();
return novr_SetString(hmddesc, propertyNameEncoded, valueEncoded);
} finally {
stack.setPointer(stackPointer);
}
}
/** Array version of: {@link #novr_GetDevicePoses} */
public static native int novr_GetDevicePoses(long session, int[] deviceTypes, int deviceCount, double absTime, long outDevicePoses);
/** Array version of: {@link #ovr_GetDevicePoses GetDevicePoses} */
@NativeType("ovrResult")
public static int ovr_GetDevicePoses(@NativeType("ovrSession") long session, @NativeType("ovrTrackedDeviceType *") int[] deviceTypes, double absTime, @NativeType("ovrPoseStatef *") OVRPoseStatef.Buffer outDevicePoses) {
if (CHECKS) {
check(session);
check(outDevicePoses, deviceTypes.length);
}
return novr_GetDevicePoses(session, deviceTypes, deviceTypes.length, absTime, outDevicePoses.address());
}
/** Array version of: {@link #novr_GetBoundaryGeometry} */
public static native int novr_GetBoundaryGeometry(long session, int boundaryType, long outFloorPoints, int[] outFloorPointsCount);
/** Array version of: {@link #ovr_GetBoundaryGeometry GetBoundaryGeometry} */
@NativeType("ovrResult")
public static int ovr_GetBoundaryGeometry(@NativeType("ovrSession") long session, @NativeType("ovrBoundaryType") int boundaryType, @Nullable @NativeType("ovrVector3f *") OVRVector3f outFloorPoints, @Nullable @NativeType("int *") int[] outFloorPointsCount) {
if (CHECKS) {
check(session);
checkSafe(outFloorPointsCount, 1);
}
return novr_GetBoundaryGeometry(session, boundaryType, memAddressSafe(outFloorPoints), outFloorPointsCount);
}
/** Array version of: {@link #novr_GetExternalCameras} */
public static native int novr_GetExternalCameras(long session, long cameras, int[] inoutCameraCount);
/** Array version of: {@link #ovr_GetExternalCameras GetExternalCameras} */
@NativeType("ovrResult")
public static int ovr_GetExternalCameras(@NativeType("ovrSession") long session, @Nullable @NativeType("ovrExternalCamera *") OVRExternalCamera.Buffer cameras, @NativeType("unsigned int *") int[] inoutCameraCount) {
if (CHECKS) {
check(session);
check(inoutCameraCount, 1);
checkSafe(cameras, inoutCameraCount[0]);
}
return novr_GetExternalCameras(session, memAddressSafe(cameras), inoutCameraCount);
}
/** Array version of: {@link #novr_GetTextureSwapChainLength} */
public static native int novr_GetTextureSwapChainLength(long session, long chain, int[] out_Length);
/** Array version of: {@link #ovr_GetTextureSwapChainLength GetTextureSwapChainLength} */
@NativeType("ovrResult")
public static int ovr_GetTextureSwapChainLength(@NativeType("ovrSession") long session, @NativeType("ovrTextureSwapChain") long chain, @NativeType("int *") int[] out_Length) {
if (CHECKS) {
check(session);
check(chain);
check(out_Length, 1);
}
return novr_GetTextureSwapChainLength(session, chain, out_Length);
}
/** Array version of: {@link #novr_GetTextureSwapChainCurrentIndex} */
public static native int novr_GetTextureSwapChainCurrentIndex(long session, long chain, int[] out_Index);
/** Array version of: {@link #ovr_GetTextureSwapChainCurrentIndex GetTextureSwapChainCurrentIndex} */
@NativeType("ovrResult")
public static int ovr_GetTextureSwapChainCurrentIndex(@NativeType("ovrSession") long session, @NativeType("ovrTextureSwapChain") long chain, @NativeType("int *") int[] out_Index) {
if (CHECKS) {
check(session);
check(chain);
check(out_Index, 1);
}
return novr_GetTextureSwapChainCurrentIndex(session, chain, out_Index);
}
/** Array version of: {@link #novr_GetFloatArray} */
public static native int novr_GetFloatArray(long session, long propertyName, float[] values, int valuesCapacity);
/** Array version of: {@link #ovr_GetFloatArray GetFloatArray} */
@NativeType("unsigned int")
public static int ovr_GetFloatArray(@NativeType("ovrSession") long session, @NativeType("char const *") ByteBuffer propertyName, @NativeType("float *") float[] values) {
if (CHECKS) {
check(session);
checkNT1(propertyName);
}
return novr_GetFloatArray(session, memAddress(propertyName), values, values.length);
}
/** Array version of: {@link #ovr_GetFloatArray GetFloatArray} */
@NativeType("unsigned int")
public static int ovr_GetFloatArray(@NativeType("ovrSession") long session, @NativeType("char const *") CharSequence propertyName, @NativeType("float *") float[] values) {
if (CHECKS) {
check(session);
}
MemoryStack stack = stackGet(); int stackPointer = stack.getPointer();
try {
stack.nASCII(propertyName, true);
long propertyNameEncoded = stack.getPointerAddress();
return novr_GetFloatArray(session, propertyNameEncoded, values, values.length);
} finally {
stack.setPointer(stackPointer);
}
}
/** Array version of: {@link #novr_SetFloatArray} */
public static native boolean novr_SetFloatArray(long session, long propertyName, float[] values, int valuesSize);
/** Array version of: {@link #ovr_SetFloatArray SetFloatArray} */
@NativeType("ovrBool")
public static boolean ovr_SetFloatArray(@NativeType("ovrSession") long session, @NativeType("char const *") ByteBuffer propertyName, @NativeType("float *") float[] values) {
if (CHECKS) {
check(session);
checkNT1(propertyName);
}
return novr_SetFloatArray(session, memAddress(propertyName), values, values.length);
}
/** Array version of: {@link #ovr_SetFloatArray SetFloatArray} */
@NativeType("ovrBool")
public static boolean ovr_SetFloatArray(@NativeType("ovrSession") long session, @NativeType("char const *") CharSequence propertyName, @NativeType("float *") float[] values) {
if (CHECKS) {
check(session);
}
MemoryStack stack = stackGet(); int stackPointer = stack.getPointer();
try {
stack.nASCII(propertyName, true);
long propertyNameEncoded = stack.getPointerAddress();
return novr_SetFloatArray(session, propertyNameEncoded, values, values.length);
} finally {
stack.setPointer(stackPointer);
}
}
}