├── LICENSE ├── README.md ├── battery_monitor_overlay.c ├── compile.bat ├── openvr_api.dll ├── openvr_capi.h ├── overlay_model_test.c ├── rawdraw_sf.h ├── screenshot.jpg └── teapot.h /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2021 CNLohr 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # openvr_overlay_model 2 | Mchanism to put models in overlays in SteamVR. By making an overlay that shows a different image in each eye. 3 | 4 | This renders a 3D model into a 2D quad that is aimed at the user. 5 | 6 | Click below for a youtube video: 7 | 8 | [![demo video](https://img.youtube.com/vi/RwS3-Y5tR_k/0.jpg)](https://www.youtube.com/watch?v=RwS3-Y5tR_k) -------------------------------------------------------------------------------- /battery_monitor_overlay.c: -------------------------------------------------------------------------------- 1 | // Battery Watcher for OpenVR (make an overlay with the battery left for all connected devices on your left hand) 2 | // 3 | // Compile with: 4 | // tcc battery_monitor_overlay.c -o bmo.exe -luser32 -lgdi32 -lkernel32 -lopengl32 C:\windows\system32\msvcrt.dll openvr_api.dll 5 | 6 | // System headers for any extra stuff we need. 7 | #include 8 | 9 | // Include CNFG (rawdraw) for generating a window and/or OpenGL context. 10 | #define CNFG_IMPLEMENTATION 11 | #define CNFGOGL 12 | #include "rawdraw_sf.h" 13 | 14 | // Include OpenVR header so we can interact with VR stuff. 15 | #undef EXTERN_C 16 | #include "openvr_capi.h" 17 | 18 | 19 | // OpenVR Doesn't define these for some reason (I don't remmeber why) so we define the functions here. They are copy-pasted from the bottom of openvr_capi.h 20 | intptr_t VR_InitInternal( EVRInitError *peError, EVRApplicationType eType ); 21 | void VR_ShutdownInternal(); 22 | bool VR_IsHmdPresent(); 23 | intptr_t VR_GetGenericInterface( const char *pchInterfaceVersion, EVRInitError *peError ); 24 | bool VR_IsRuntimeInstalled(); 25 | const char * VR_GetVRInitErrorAsSymbol( EVRInitError error ); 26 | const char * VR_GetVRInitErrorAsEnglishDescription( EVRInitError error ); 27 | 28 | // These are functions that rawdraw calls back into. 29 | void HandleKey( int keycode, int bDown ) { } 30 | void HandleButton( int x, int y, int button, int bDown ) { } 31 | void HandleMotion( int x, int y, int mask ) { } 32 | void HandleDestroy() { } 33 | 34 | // This function was copy-pasted from cnovr. 35 | void * CNOVRGetOpenVRFunctionTable( const char * interfacename ) 36 | { 37 | EVRInitError e; 38 | char fnTableName[128]; 39 | int result1 = snprintf( fnTableName, 128, "FnTable:%s", interfacename ); 40 | void * ret = (void *)VR_GetGenericInterface( fnTableName, &e ); 41 | printf( "Getting System FnTable: %s = %p (%d)\n", fnTableName, ret, e ); 42 | if( !ret ) 43 | { 44 | exit( 1 ); 45 | } 46 | return ret; 47 | } 48 | 49 | // These are interfaces into OpenVR, they are basically function call tables. 50 | struct VR_IVRSystem_FnTable * oSystem; 51 | struct VR_IVROverlay_FnTable * oOverlay; 52 | 53 | // The OpenVR Overlay handle. 54 | VROverlayHandle_t overlayID; 55 | 56 | // Was the overlay assocated or not? 57 | int overlayAssociated; 58 | 59 | // The width/height of the overlay. 60 | #define WIDTH 128 61 | #define HEIGHT 128 62 | 63 | int main() 64 | { 65 | // Create the window, needed for making an OpenGL context, but also 66 | // gives us a framebuffer we can draw into. Minus signs in front of 67 | // width/height hint to rawdrawthat we want a hidden window. 68 | CNFGSetup( "Example App", -WIDTH, -HEIGHT ); 69 | 70 | // We put this in a codeblock because it's logically together. 71 | // no reason to keep the token around. 72 | { 73 | EVRInitError ierr; 74 | uint32_t token = VR_InitInternal( &ierr, EVRApplicationType_VRApplication_Overlay ); 75 | if( !token ) 76 | { 77 | printf( "Error!!!! Could not initialize OpenVR\n" ); 78 | return -5; 79 | } 80 | 81 | // Get the system and overlay interfaces. We pass in the version of these 82 | // interfaces that we wish to use, in case the runtime is newer, we can still 83 | // get the interfaces we expect. 84 | oSystem = CNOVRGetOpenVRFunctionTable( IVRSystem_Version ); 85 | oOverlay = CNOVRGetOpenVRFunctionTable( IVROverlay_Version ); 86 | } 87 | 88 | { 89 | // Generate the overlay. 90 | oOverlay->CreateOverlay( "batterymonitoroverlay-overlay", "Battery Monitor Overlay", &overlayID ); 91 | oOverlay->SetOverlayWidthInMeters( overlayID, .1 ); 92 | oOverlay->SetOverlayColor( overlayID, 1., .8, .7 ); 93 | 94 | // Control texture bounds to control the way the texture is mapped to the overlay. 95 | VRTextureBounds_t bounds; 96 | bounds.uMin = 1; 97 | bounds.uMax = 0; 98 | bounds.vMin = 0; 99 | bounds.vMax = 1; 100 | oOverlay->SetOverlayTextureBounds( overlayID, &bounds ); 101 | } 102 | 103 | // Actually show the overlay. 104 | oOverlay->ShowOverlay( overlayID ); 105 | 106 | GLuint overlaytexture; 107 | { 108 | // Initialize the texture with junk data. 109 | uint8_t * myjunkdata = malloc( 128 * 128 * 4 ); 110 | int x, y; 111 | for( y = 0; y < 128; y++ ) 112 | for( x = 0; x < 128; x++ ) 113 | { 114 | myjunkdata[ ( x + y * 128 ) * 4 + 0 ] = x * 2; 115 | myjunkdata[ ( x + y * 128 ) * 4 + 1 ] = y * 2; 116 | myjunkdata[ ( x + y * 128 ) * 4 + 2 ] = 0; 117 | myjunkdata[ ( x + y * 128 ) * 4 + 3 ] = 255; 118 | } 119 | 120 | // We aren't doing it, but we could write directly into the overlay. 121 | //err = oOverlay->SetOverlayRaw( overlayID, myjunkdata, 128, 128, 4 ); 122 | 123 | // Generate the texture. 124 | glGenTextures( 1, &overlaytexture ); 125 | glBindTexture( GL_TEXTURE_2D, overlaytexture ); 126 | 127 | // It is required to setup the min and mag filter of the texture. 128 | glTexParameteri( GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST ); 129 | glTexParameteri( GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST ); 130 | 131 | // Load the texture with our dummy data. Optionally we could pass 0 in where we are 132 | // passing in myjunkdata. That would allocate the RAM on the GPU but not do anything with it. 133 | glTexImage2D( GL_TEXTURE_2D, 0, GL_RGBA, WIDTH, HEIGHT, 0, GL_RGBA, GL_UNSIGNED_BYTE, myjunkdata ); 134 | } 135 | 136 | int framenumber; 137 | 138 | while( true ) 139 | { 140 | CNFGBGColor = 0x00000000; //Black Transparent Background 141 | CNFGClearFrame(); 142 | 143 | // Process any window events and call callbacks. 144 | CNFGHandleInput(); 145 | 146 | // Setup draw color. 147 | CNFGColor( 0xffffffff ); 148 | 149 | // Setup where "CNFGDrawText" will draw. 150 | CNFGPenX = 1; 151 | CNFGPenY = 1; 152 | 153 | // Scratch buffer for us to write text into. 154 | char str[256]; 155 | sprintf( str, "%d\n", framenumber ); 156 | 157 | // Actually draw the string. 158 | CNFGDrawText( str, 2 ); 159 | 160 | // Iterate over the list of all devices. 161 | int i; 162 | int devices = 0; 163 | for( i = 0; i < k_unMaxTrackedDeviceCount; i++ ) 164 | { 165 | // See if this device has a battery charge. 166 | ETrackedDeviceProperty prop; 167 | ETrackedPropertyError err; 168 | float battery = oSystem->GetFloatTrackedDeviceProperty( i, ETrackedDeviceProperty_Prop_DeviceBatteryPercentage_Float, &err ); 169 | 170 | // No error? Proceed. 171 | if( err == 0 ) 172 | { 173 | // Get the device name 174 | char ctrlname[128]; 175 | oSystem->GetStringTrackedDeviceProperty( i, ETrackedDeviceProperty_Prop_ModelNumber_String, ctrlname, 128, &err ); 176 | 177 | // If the device name is nonempty... 178 | if( strlen( ctrlname ) ) 179 | { 180 | // Write into the scratch string. 181 | // Set the draw location, and draw that string. 182 | sprintf( str, "%4.0f %s", battery * 100., ctrlname ); 183 | CNFGPenX = 1; 184 | CNFGPenY = devices * 12 + 13; 185 | CNFGDrawText( str, 2 ); 186 | devices++; 187 | } 188 | } 189 | } 190 | 191 | // If the overlay is unassociated, associate it with the left controller. 192 | if( !overlayAssociated ) 193 | { 194 | TrackedDeviceIndex_t index; 195 | index = oSystem->GetTrackedDeviceIndexForControllerRole( ETrackedControllerRole_TrackedControllerRole_LeftHand ); 196 | if( index == k_unTrackedDeviceIndexInvalid || index == k_unTrackedDeviceIndex_Hmd ) 197 | { 198 | printf( "Couldn't find your controller to attach our overlay to (%d)\n", index ); 199 | } 200 | else 201 | { 202 | // We have a ETrackedControllerRole_TrackedControllerRole_LeftHand. Associate it. 203 | EVROverlayError err; 204 | 205 | // Transform that puts the text somewhere reasonable. 206 | HmdMatrix34_t transform = { 0 }; 207 | transform.m[1][1] = 1; 208 | transform.m[0][2] = 1; 209 | transform.m[2][0] = 1; 210 | 211 | // Apply the transform and attach the overlay to that tracked device object. 212 | err = oOverlay->SetOverlayTransformTrackedDeviceRelative( overlayID, index, &transform ); 213 | 214 | // Notify the terminal that this was associated. 215 | printf( "Successfully associated your battery status window to the tracked device (%d %d %08x).\n", 216 | err, index, overlayID ); 217 | 218 | overlayAssociated = true; 219 | } 220 | } 221 | 222 | // Finish rendering any pending draw operations. 223 | CNFGFlushRender(); 224 | 225 | // Bind the texture we will be sending to OpenVR. 226 | glBindTexture( GL_TEXTURE_2D, overlaytexture ); 227 | 228 | // Copy the current framebuffer into that texture. 229 | glCopyTexImage2D( GL_TEXTURE_2D, 0, GL_RGBA, 0, 0, WIDTH, HEIGHT, 0 ); 230 | 231 | // Setup a Texture_t object to send in the texture. 232 | struct Texture_t tex; 233 | tex.eColorSpace = EColorSpace_ColorSpace_Auto; 234 | tex.eType = ETextureType_TextureType_OpenGL; 235 | tex.handle = (void*)(intptr_t)overlaytexture; 236 | 237 | // Send texture into OpenVR as the overlay. 238 | oOverlay->SetOverlayTexture( overlayID, &tex ); 239 | 240 | // We have to process through texture events. 241 | struct VREvent_t nEvent; 242 | if( overlayAssociated ) 243 | { 244 | while( oOverlay->PollNextOverlayEvent( overlayID, &nEvent, sizeof( nEvent ) ) ); 245 | } 246 | 247 | // Don't swap buffers, otherwise we will lock to host FPS. 248 | //CNFGSwapBuffers(); 249 | 250 | framenumber++; 251 | 252 | // Don't go at 1,000+ FPS, wait til next frame sync from scene app. 253 | oOverlay->WaitFrameSync( 100 ); 254 | } 255 | 256 | return 0; 257 | } -------------------------------------------------------------------------------- /compile.bat: -------------------------------------------------------------------------------- 1 | tcc overlay_model_test.c -luser32 -lgdi32 -lkernel32 -lopengl32 C:\windows\system32\msvcrt.dll openvr_api.dll 2 | tcc battery_monitor_overlay.c -luser32 -lgdi32 -lkernel32 -lopengl32 C:\windows\system32\msvcrt.dll openvr_api.dll 3 | -------------------------------------------------------------------------------- /openvr_api.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cnlohr/openvr_overlay_model/d4a8f4d1668e313e7654cad65acdd98574763dba/openvr_api.dll -------------------------------------------------------------------------------- /openvr_capi.h: -------------------------------------------------------------------------------- 1 | //======= Copyright (c) Valve Corporation, All rights reserved. =============== 2 | // 3 | // Purpose: Header for flatted SteamAPI. Use this for binding to other languages. 4 | // This file is auto-generated, do not edit it. 5 | // 6 | //============================================================================= 7 | 8 | #ifndef __OPENVR_API_FLAT_H__ 9 | #define __OPENVR_API_FLAT_H__ 10 | #if defined( _WIN32 ) || defined( __clang__ ) 11 | #pragma once 12 | #endif 13 | 14 | #ifdef __cplusplus 15 | #define EXTERN_C extern "C" 16 | #else 17 | #define EXTERN_C 18 | #endif 19 | 20 | #if defined( _WIN32 ) 21 | #define OPENVR_FNTABLE_CALLTYPE __stdcall 22 | #else 23 | #define OPENVR_FNTABLE_CALLTYPE 24 | #endif 25 | 26 | // OPENVR API export macro 27 | #if defined( _WIN32 ) 28 | #if defined( OPENVR_API_EXPORTS ) 29 | #define S_API EXTERN_C __declspec( dllexport ) 30 | #elif defined( OPENVR_API_NODLL ) 31 | #define S_API EXTERN_C 32 | #else 33 | #define S_API extern "C" __declspec( dllimport ) 34 | #endif // OPENVR_API_EXPORTS 35 | #elif defined( __GNUC__ ) 36 | #if defined( OPENVR_API_EXPORTS ) 37 | #define S_API EXTERN_C __attribute__ ((visibility("default"))) 38 | #else 39 | #define S_API EXTERN_C 40 | #endif // OPENVR_API_EXPORTS 41 | #else // !WIN32 42 | #if defined( OPENVR_API_EXPORTS ) 43 | #define S_API EXTERN_C 44 | #else 45 | #define S_API EXTERN_C 46 | #endif // OPENVR_API_EXPORTS 47 | #endif 48 | 49 | #include 50 | 51 | #if defined( __WIN32 ) 52 | typedef char bool; 53 | #else 54 | #include 55 | #endif 56 | 57 | typedef uint64_t PropertyContainerHandle_t; 58 | typedef uint32_t PropertyTypeTag_t; 59 | typedef uint64_t VRActionHandle_t; 60 | typedef uint64_t VRActionSetHandle_t; 61 | typedef uint64_t VRInputValueHandle_t; 62 | typedef uint64_t PathHandle_t; 63 | 64 | // 64-bit types that are part of public structures 65 | // that are replicated in shared memory. 66 | #if defined(__linux__) || defined(__APPLE__) 67 | typedef uint64_t vrshared_uint64_t __attribute__ ((aligned(8))); 68 | typedef double vrshared_double __attribute__ ((aligned(8))); 69 | #else 70 | typedef uint64_t vrshared_uint64_t; 71 | typedef double vrshared_double; 72 | #endif 73 | 74 | 75 | // OpenVR Constants 76 | 77 | static const unsigned long k_nDriverNone = 4294967295; 78 | static const unsigned long k_unMaxDriverDebugResponseSize = 32768; 79 | static const unsigned long k_unTrackedDeviceIndex_Hmd = 0; 80 | static const unsigned long k_unMaxTrackedDeviceCount = 64; 81 | static const unsigned long k_unTrackedDeviceIndexOther = 4294967294; 82 | static const unsigned long k_unTrackedDeviceIndexInvalid = 4294967295; 83 | static const unsigned long long k_ulInvalidPropertyContainer = 0; 84 | static const unsigned long k_unInvalidPropertyTag = 0; 85 | static const unsigned long long k_ulInvalidDriverHandle = 0; 86 | static const unsigned long k_unFloatPropertyTag = 1; 87 | static const unsigned long k_unInt32PropertyTag = 2; 88 | static const unsigned long k_unUint64PropertyTag = 3; 89 | static const unsigned long k_unBoolPropertyTag = 4; 90 | static const unsigned long k_unStringPropertyTag = 5; 91 | static const unsigned long k_unErrorPropertyTag = 6; 92 | static const unsigned long k_unDoublePropertyTag = 7; 93 | static const unsigned long k_unHmdMatrix34PropertyTag = 20; 94 | static const unsigned long k_unHmdMatrix44PropertyTag = 21; 95 | static const unsigned long k_unHmdVector3PropertyTag = 22; 96 | static const unsigned long k_unHmdVector4PropertyTag = 23; 97 | static const unsigned long k_unHmdVector2PropertyTag = 24; 98 | static const unsigned long k_unHmdQuadPropertyTag = 25; 99 | static const unsigned long k_unHiddenAreaPropertyTag = 30; 100 | static const unsigned long k_unPathHandleInfoTag = 31; 101 | static const unsigned long k_unActionPropertyTag = 32; 102 | static const unsigned long k_unInputValuePropertyTag = 33; 103 | static const unsigned long k_unWildcardPropertyTag = 34; 104 | static const unsigned long k_unHapticVibrationPropertyTag = 35; 105 | static const unsigned long k_unSkeletonPropertyTag = 36; 106 | static const unsigned long k_unSpatialAnchorPosePropertyTag = 40; 107 | static const unsigned long k_unJsonPropertyTag = 41; 108 | static const unsigned long k_unActiveActionSetPropertyTag = 42; 109 | static const unsigned long k_unOpenVRInternalReserved_Start = 1000; 110 | static const unsigned long k_unOpenVRInternalReserved_End = 10000; 111 | static const unsigned long k_unMaxPropertyStringSize = 32768; 112 | static const unsigned long long k_ulInvalidActionHandle = 0; 113 | static const unsigned long long k_ulInvalidActionSetHandle = 0; 114 | static const unsigned long long k_ulInvalidInputValueHandle = 0; 115 | static const unsigned long k_unControllerStateAxisCount = 5; 116 | static const unsigned long long k_ulOverlayHandleInvalid = 0; 117 | static const unsigned long k_unMaxDistortionFunctionParameters = 8; 118 | static const unsigned long k_unScreenshotHandleInvalid = 0; 119 | static const char * IVRSystem_Version = "IVRSystem_022"; 120 | static const char * IVRExtendedDisplay_Version = "IVRExtendedDisplay_001"; 121 | static const char * IVRTrackedCamera_Version = "IVRTrackedCamera_006"; 122 | static const unsigned long k_unMaxApplicationKeyLength = 128; 123 | static const char * k_pch_MimeType_HomeApp = "vr/home"; 124 | static const char * k_pch_MimeType_GameTheater = "vr/game_theater"; 125 | static const char * IVRApplications_Version = "IVRApplications_007"; 126 | static const char * IVRChaperone_Version = "IVRChaperone_004"; 127 | static const char * IVRChaperoneSetup_Version = "IVRChaperoneSetup_006"; 128 | static const char * IVRCompositor_Version = "IVRCompositor_028"; 129 | static const unsigned long k_unVROverlayMaxKeyLength = 128; 130 | static const unsigned long k_unVROverlayMaxNameLength = 128; 131 | static const unsigned long k_unMaxOverlayCount = 128; 132 | static const unsigned long k_unMaxOverlayIntersectionMaskPrimitivesCount = 32; 133 | static const char * IVROverlay_Version = "IVROverlay_027"; 134 | static const char * IVROverlayView_Version = "IVROverlayView_003"; 135 | static const unsigned long k_unHeadsetViewMaxWidth = 3840; 136 | static const unsigned long k_unHeadsetViewMaxHeight = 2160; 137 | static const char * k_pchHeadsetViewOverlayKey = "system.HeadsetView"; 138 | static const char * IVRHeadsetView_Version = "IVRHeadsetView_001"; 139 | static const char * k_pch_Controller_Component_GDC2015 = "gdc2015"; 140 | static const char * k_pch_Controller_Component_Base = "base"; 141 | static const char * k_pch_Controller_Component_Tip = "tip"; 142 | static const char * k_pch_Controller_Component_OpenXR_Aim = "openxr_aim"; 143 | static const char * k_pch_Controller_Component_HandGrip = "handgrip"; 144 | static const char * k_pch_Controller_Component_OpenXR_Grip = "openxr_grip"; 145 | static const char * k_pch_Controller_Component_OpenXR_HandModel = "openxr_handmodel"; 146 | static const char * k_pch_Controller_Component_Status = "status"; 147 | static const char * IVRRenderModels_Version = "IVRRenderModels_006"; 148 | static const unsigned long k_unNotificationTextMaxSize = 256; 149 | static const char * IVRNotifications_Version = "IVRNotifications_002"; 150 | static const unsigned long k_unMaxSettingsKeyLength = 128; 151 | static const char * IVRSettings_Version = "IVRSettings_003"; 152 | static const char * k_pch_SteamVR_Section = "steamvr"; 153 | static const char * k_pch_SteamVR_RequireHmd_String = "requireHmd"; 154 | static const char * k_pch_SteamVR_ForcedDriverKey_String = "forcedDriver"; 155 | static const char * k_pch_SteamVR_ForcedHmdKey_String = "forcedHmd"; 156 | static const char * k_pch_SteamVR_DisplayDebug_Bool = "displayDebug"; 157 | static const char * k_pch_SteamVR_DebugProcessPipe_String = "debugProcessPipe"; 158 | static const char * k_pch_SteamVR_DisplayDebugX_Int32 = "displayDebugX"; 159 | static const char * k_pch_SteamVR_DisplayDebugY_Int32 = "displayDebugY"; 160 | static const char * k_pch_SteamVR_SendSystemButtonToAllApps_Bool = "sendSystemButtonToAllApps"; 161 | static const char * k_pch_SteamVR_LogLevel_Int32 = "loglevel"; 162 | static const char * k_pch_SteamVR_IPD_Float = "ipd"; 163 | static const char * k_pch_SteamVR_Background_String = "background"; 164 | static const char * k_pch_SteamVR_BackgroundUseDomeProjection_Bool = "backgroundUseDomeProjection"; 165 | static const char * k_pch_SteamVR_BackgroundCameraHeight_Float = "backgroundCameraHeight"; 166 | static const char * k_pch_SteamVR_BackgroundDomeRadius_Float = "backgroundDomeRadius"; 167 | static const char * k_pch_SteamVR_GridColor_String = "gridColor"; 168 | static const char * k_pch_SteamVR_PlayAreaColor_String = "playAreaColor"; 169 | static const char * k_pch_SteamVR_TrackingLossColor_String = "trackingLossColor"; 170 | static const char * k_pch_SteamVR_ShowStage_Bool = "showStage"; 171 | static const char * k_pch_SteamVR_DrawTrackingReferences_Bool = "drawTrackingReferences"; 172 | static const char * k_pch_SteamVR_ActivateMultipleDrivers_Bool = "activateMultipleDrivers"; 173 | static const char * k_pch_SteamVR_UsingSpeakers_Bool = "usingSpeakers"; 174 | static const char * k_pch_SteamVR_SpeakersForwardYawOffsetDegrees_Float = "speakersForwardYawOffsetDegrees"; 175 | static const char * k_pch_SteamVR_BaseStationPowerManagement_Int32 = "basestationPowerManagement"; 176 | static const char * k_pch_SteamVR_ShowBaseStationPowerManagementTip_Int32 = "ShowBaseStationPowerManagementTip"; 177 | static const char * k_pch_SteamVR_NeverKillProcesses_Bool = "neverKillProcesses"; 178 | static const char * k_pch_SteamVR_SupersampleScale_Float = "supersampleScale"; 179 | static const char * k_pch_SteamVR_MaxRecommendedResolution_Int32 = "maxRecommendedResolution"; 180 | static const char * k_pch_SteamVR_MotionSmoothing_Bool = "motionSmoothing"; 181 | static const char * k_pch_SteamVR_MotionSmoothingOverride_Int32 = "motionSmoothingOverride"; 182 | static const char * k_pch_SteamVR_FramesToThrottle_Int32 = "framesToThrottle"; 183 | static const char * k_pch_SteamVR_AdditionalFramesToPredict_Int32 = "additionalFramesToPredict"; 184 | static const char * k_pch_SteamVR_WorldScale_Float = "worldScale"; 185 | static const char * k_pch_SteamVR_FovScale_Int32 = "fovScale"; 186 | static const char * k_pch_SteamVR_FovScaleLetterboxed_Bool = "fovScaleLetterboxed"; 187 | static const char * k_pch_SteamVR_DisableAsyncReprojection_Bool = "disableAsync"; 188 | static const char * k_pch_SteamVR_ForceFadeOnBadTracking_Bool = "forceFadeOnBadTracking"; 189 | static const char * k_pch_SteamVR_DefaultMirrorView_Int32 = "mirrorView"; 190 | static const char * k_pch_SteamVR_ShowLegacyMirrorView_Bool = "showLegacyMirrorView"; 191 | static const char * k_pch_SteamVR_MirrorViewVisibility_Bool = "showMirrorView"; 192 | static const char * k_pch_SteamVR_MirrorViewDisplayMode_Int32 = "mirrorViewDisplayMode"; 193 | static const char * k_pch_SteamVR_MirrorViewEye_Int32 = "mirrorViewEye"; 194 | static const char * k_pch_SteamVR_MirrorViewGeometry_String = "mirrorViewGeometry"; 195 | static const char * k_pch_SteamVR_MirrorViewGeometryMaximized_String = "mirrorViewGeometryMaximized"; 196 | static const char * k_pch_SteamVR_PerfGraphVisibility_Bool = "showPerfGraph"; 197 | static const char * k_pch_SteamVR_StartMonitorFromAppLaunch = "startMonitorFromAppLaunch"; 198 | static const char * k_pch_SteamVR_StartCompositorFromAppLaunch_Bool = "startCompositorFromAppLaunch"; 199 | static const char * k_pch_SteamVR_StartDashboardFromAppLaunch_Bool = "startDashboardFromAppLaunch"; 200 | static const char * k_pch_SteamVR_StartOverlayAppsFromDashboard_Bool = "startOverlayAppsFromDashboard"; 201 | static const char * k_pch_SteamVR_EnableHomeApp = "enableHomeApp"; 202 | static const char * k_pch_SteamVR_CycleBackgroundImageTimeSec_Int32 = "CycleBackgroundImageTimeSec"; 203 | static const char * k_pch_SteamVR_RetailDemo_Bool = "retailDemo"; 204 | static const char * k_pch_SteamVR_IpdOffset_Float = "ipdOffset"; 205 | static const char * k_pch_SteamVR_AllowSupersampleFiltering_Bool = "allowSupersampleFiltering"; 206 | static const char * k_pch_SteamVR_SupersampleManualOverride_Bool = "supersampleManualOverride"; 207 | static const char * k_pch_SteamVR_EnableLinuxVulkanAsync_Bool = "enableLinuxVulkanAsync"; 208 | static const char * k_pch_SteamVR_AllowDisplayLockedMode_Bool = "allowDisplayLockedMode"; 209 | static const char * k_pch_SteamVR_HaveStartedTutorialForNativeChaperoneDriver_Bool = "haveStartedTutorialForNativeChaperoneDriver"; 210 | static const char * k_pch_SteamVR_ForceWindows32bitVRMonitor = "forceWindows32BitVRMonitor"; 211 | static const char * k_pch_SteamVR_DebugInputBinding = "debugInputBinding"; 212 | static const char * k_pch_SteamVR_DoNotFadeToGrid = "doNotFadeToGrid"; 213 | static const char * k_pch_SteamVR_EnableSharedResourceJournaling = "enableSharedResourceJournaling"; 214 | static const char * k_pch_SteamVR_EnableSafeMode = "enableSafeMode"; 215 | static const char * k_pch_SteamVR_PreferredRefreshRate = "preferredRefreshRate"; 216 | static const char * k_pch_SteamVR_LastVersionNotice = "lastVersionNotice"; 217 | static const char * k_pch_SteamVR_LastVersionNoticeDate = "lastVersionNoticeDate"; 218 | static const char * k_pch_SteamVR_HmdDisplayColorGainR_Float = "hmdDisplayColorGainR"; 219 | static const char * k_pch_SteamVR_HmdDisplayColorGainG_Float = "hmdDisplayColorGainG"; 220 | static const char * k_pch_SteamVR_HmdDisplayColorGainB_Float = "hmdDisplayColorGainB"; 221 | static const char * k_pch_SteamVR_CustomIconStyle_String = "customIconStyle"; 222 | static const char * k_pch_SteamVR_CustomOffIconStyle_String = "customOffIconStyle"; 223 | static const char * k_pch_SteamVR_CustomIconForceUpdate_String = "customIconForceUpdate"; 224 | static const char * k_pch_SteamVR_AllowGlobalActionSetPriority = "globalActionSetPriority"; 225 | static const char * k_pch_SteamVR_OverlayRenderQuality = "overlayRenderQuality_2"; 226 | static const char * k_pch_SteamVR_BlockOculusSDKOnOpenVRLaunchOption_Bool = "blockOculusSDKOnOpenVRLaunchOption"; 227 | static const char * k_pch_SteamVR_BlockOculusSDKOnAllLaunches_Bool = "blockOculusSDKOnAllLaunches"; 228 | static const char * k_pch_SteamVR_HDCPLegacyCompatibility_Bool = "hdcp14legacyCompatibility"; 229 | static const char * k_pch_SteamVR_DisplayPortTrainingMode_Int = "displayPortTrainingMode"; 230 | static const char * k_pch_SteamVR_UsePrism_Bool = "usePrism"; 231 | static const char * k_pch_SteamVR_AllowFallbackMirrorWindowLinux_Bool = "allowFallbackMirrorWindowLinux"; 232 | static const char * k_pch_OpenXR_Section = "openxr"; 233 | static const char * k_pch_OpenXR_MetaUnityPluginCompatibility_Int32 = "metaUnityPluginCompatibility"; 234 | static const char * k_pch_DirectMode_Section = "direct_mode"; 235 | static const char * k_pch_DirectMode_Enable_Bool = "enable"; 236 | static const char * k_pch_DirectMode_Count_Int32 = "count"; 237 | static const char * k_pch_DirectMode_EdidVid_Int32 = "edidVid"; 238 | static const char * k_pch_DirectMode_EdidPid_Int32 = "edidPid"; 239 | static const char * k_pch_Lighthouse_Section = "driver_lighthouse"; 240 | static const char * k_pch_Lighthouse_DisableIMU_Bool = "disableimu"; 241 | static const char * k_pch_Lighthouse_DisableIMUExceptHMD_Bool = "disableimuexcepthmd"; 242 | static const char * k_pch_Lighthouse_UseDisambiguation_String = "usedisambiguation"; 243 | static const char * k_pch_Lighthouse_DisambiguationDebug_Int32 = "disambiguationdebug"; 244 | static const char * k_pch_Lighthouse_PrimaryBasestation_Int32 = "primarybasestation"; 245 | static const char * k_pch_Lighthouse_DBHistory_Bool = "dbhistory"; 246 | static const char * k_pch_Lighthouse_EnableBluetooth_Bool = "enableBluetooth"; 247 | static const char * k_pch_Lighthouse_PowerManagedBaseStations_String = "PowerManagedBaseStations"; 248 | static const char * k_pch_Lighthouse_PowerManagedBaseStations2_String = "PowerManagedBaseStations2"; 249 | static const char * k_pch_Lighthouse_InactivityTimeoutForBaseStations_Int32 = "InactivityTimeoutForBaseStations"; 250 | static const char * k_pch_Lighthouse_EnableImuFallback_Bool = "enableImuFallback"; 251 | static const char * k_pch_Null_Section = "driver_null"; 252 | static const char * k_pch_Null_SerialNumber_String = "serialNumber"; 253 | static const char * k_pch_Null_ModelNumber_String = "modelNumber"; 254 | static const char * k_pch_Null_WindowX_Int32 = "windowX"; 255 | static const char * k_pch_Null_WindowY_Int32 = "windowY"; 256 | static const char * k_pch_Null_WindowWidth_Int32 = "windowWidth"; 257 | static const char * k_pch_Null_WindowHeight_Int32 = "windowHeight"; 258 | static const char * k_pch_Null_RenderWidth_Int32 = "renderWidth"; 259 | static const char * k_pch_Null_RenderHeight_Int32 = "renderHeight"; 260 | static const char * k_pch_Null_SecondsFromVsyncToPhotons_Float = "secondsFromVsyncToPhotons"; 261 | static const char * k_pch_Null_DisplayFrequency_Float = "displayFrequency"; 262 | static const char * k_pch_WindowsMR_Section = "driver_holographic"; 263 | static const char * k_pch_UserInterface_Section = "userinterface"; 264 | static const char * k_pch_UserInterface_StatusAlwaysOnTop_Bool = "StatusAlwaysOnTop"; 265 | static const char * k_pch_UserInterface_MinimizeToTray_Bool = "MinimizeToTray"; 266 | static const char * k_pch_UserInterface_HidePopupsWhenStatusMinimized_Bool = "HidePopupsWhenStatusMinimized"; 267 | static const char * k_pch_UserInterface_Screenshots_Bool = "screenshots"; 268 | static const char * k_pch_UserInterface_ScreenshotType_Int = "screenshotType"; 269 | static const char * k_pch_Notifications_Section = "notifications"; 270 | static const char * k_pch_Notifications_DoNotDisturb_Bool = "DoNotDisturb"; 271 | static const char * k_pch_Keyboard_Section = "keyboard"; 272 | static const char * k_pch_Keyboard_TutorialCompletions = "TutorialCompletions"; 273 | static const char * k_pch_Keyboard_ScaleX = "ScaleX"; 274 | static const char * k_pch_Keyboard_ScaleY = "ScaleY"; 275 | static const char * k_pch_Keyboard_OffsetLeftX = "OffsetLeftX"; 276 | static const char * k_pch_Keyboard_OffsetRightX = "OffsetRightX"; 277 | static const char * k_pch_Keyboard_OffsetY = "OffsetY"; 278 | static const char * k_pch_Keyboard_Smoothing = "Smoothing"; 279 | static const char * k_pch_Perf_Section = "perfcheck"; 280 | static const char * k_pch_Perf_PerfGraphInHMD_Bool = "perfGraphInHMD"; 281 | static const char * k_pch_Perf_AllowTimingStore_Bool = "allowTimingStore"; 282 | static const char * k_pch_Perf_SaveTimingsOnExit_Bool = "saveTimingsOnExit"; 283 | static const char * k_pch_Perf_TestData_Float = "perfTestData"; 284 | static const char * k_pch_Perf_GPUProfiling_Bool = "GPUProfiling"; 285 | static const char * k_pch_Perf_GpuBusMonitoring_Bool = "gpuBusMonitoring"; 286 | static const char * k_pch_CollisionBounds_Section = "collisionBounds"; 287 | static const char * k_pch_CollisionBounds_Style_Int32 = "CollisionBoundsStyle"; 288 | static const char * k_pch_CollisionBounds_GroundPerimeterOn_Bool = "CollisionBoundsGroundPerimeterOn"; 289 | static const char * k_pch_CollisionBounds_CenterMarkerOn_Bool = "CollisionBoundsCenterMarkerOn"; 290 | static const char * k_pch_CollisionBounds_PlaySpaceOn_Bool = "CollisionBoundsPlaySpaceOn"; 291 | static const char * k_pch_CollisionBounds_FadeDistance_Float = "CollisionBoundsFadeDistance"; 292 | static const char * k_pch_CollisionBounds_WallHeight_Float = "CollisionBoundsWallHeight"; 293 | static const char * k_pch_CollisionBounds_ColorGammaR_Int32 = "CollisionBoundsColorGammaR"; 294 | static const char * k_pch_CollisionBounds_ColorGammaG_Int32 = "CollisionBoundsColorGammaG"; 295 | static const char * k_pch_CollisionBounds_ColorGammaB_Int32 = "CollisionBoundsColorGammaB"; 296 | static const char * k_pch_CollisionBounds_ColorGammaA_Int32 = "CollisionBoundsColorGammaA"; 297 | static const char * k_pch_CollisionBounds_EnableDriverImport = "enableDriverBoundsImport"; 298 | static const char * k_pch_Camera_Section = "camera"; 299 | static const char * k_pch_Camera_EnableCamera_Bool = "enableCamera"; 300 | static const char * k_pch_Camera_ShowOnController_Bool = "showOnController"; 301 | static const char * k_pch_Camera_EnableCameraForCollisionBounds_Bool = "enableCameraForCollisionBounds"; 302 | static const char * k_pch_Camera_RoomView_Int32 = "roomView"; 303 | static const char * k_pch_Camera_BoundsColorGammaR_Int32 = "cameraBoundsColorGammaR"; 304 | static const char * k_pch_Camera_BoundsColorGammaG_Int32 = "cameraBoundsColorGammaG"; 305 | static const char * k_pch_Camera_BoundsColorGammaB_Int32 = "cameraBoundsColorGammaB"; 306 | static const char * k_pch_Camera_BoundsColorGammaA_Int32 = "cameraBoundsColorGammaA"; 307 | static const char * k_pch_Camera_BoundsStrength_Int32 = "cameraBoundsStrength"; 308 | static const char * k_pch_Camera_RoomViewStyle_Int32 = "roomViewStyle"; 309 | static const char * k_pch_audio_Section = "audio"; 310 | static const char * k_pch_audio_SetOsDefaultPlaybackDevice_Bool = "setOsDefaultPlaybackDevice"; 311 | static const char * k_pch_audio_EnablePlaybackDeviceOverride_Bool = "enablePlaybackDeviceOverride"; 312 | static const char * k_pch_audio_PlaybackDeviceOverride_String = "playbackDeviceOverride"; 313 | static const char * k_pch_audio_PlaybackDeviceOverrideName_String = "playbackDeviceOverrideName"; 314 | static const char * k_pch_audio_SetOsDefaultRecordingDevice_Bool = "setOsDefaultRecordingDevice"; 315 | static const char * k_pch_audio_EnableRecordingDeviceOverride_Bool = "enableRecordingDeviceOverride"; 316 | static const char * k_pch_audio_RecordingDeviceOverride_String = "recordingDeviceOverride"; 317 | static const char * k_pch_audio_RecordingDeviceOverrideName_String = "recordingDeviceOverrideName"; 318 | static const char * k_pch_audio_EnablePlaybackMirror_Bool = "enablePlaybackMirror"; 319 | static const char * k_pch_audio_PlaybackMirrorDevice_String = "playbackMirrorDevice"; 320 | static const char * k_pch_audio_PlaybackMirrorDeviceName_String = "playbackMirrorDeviceName"; 321 | static const char * k_pch_audio_OldPlaybackMirrorDevice_String = "onPlaybackMirrorDevice"; 322 | static const char * k_pch_audio_ActiveMirrorDevice_String = "activePlaybackMirrorDevice"; 323 | static const char * k_pch_audio_EnablePlaybackMirrorIndependentVolume_Bool = "enablePlaybackMirrorIndependentVolume"; 324 | static const char * k_pch_audio_LastHmdPlaybackDeviceId_String = "lastHmdPlaybackDeviceId"; 325 | static const char * k_pch_audio_VIVEHDMIGain = "viveHDMIGain"; 326 | static const char * k_pch_audio_DualSpeakerAndJackOutput_Bool = "dualSpeakerAndJackOutput"; 327 | static const char * k_pch_audio_MuteMicMonitor_Bool = "muteMicMonitor"; 328 | static const char * k_pch_Power_Section = "power"; 329 | static const char * k_pch_Power_PowerOffOnExit_Bool = "powerOffOnExit"; 330 | static const char * k_pch_Power_TurnOffScreensTimeout_Float = "turnOffScreensTimeout"; 331 | static const char * k_pch_Power_TurnOffControllersTimeout_Float = "turnOffControllersTimeout"; 332 | static const char * k_pch_Power_ReturnToWatchdogTimeout_Float = "returnToWatchdogTimeout"; 333 | static const char * k_pch_Power_AutoLaunchSteamVROnButtonPress = "autoLaunchSteamVROnButtonPress"; 334 | static const char * k_pch_Power_PauseCompositorOnStandby_Bool = "pauseCompositorOnStandby"; 335 | static const char * k_pch_Dashboard_Section = "dashboard"; 336 | static const char * k_pch_Dashboard_EnableDashboard_Bool = "enableDashboard"; 337 | static const char * k_pch_Dashboard_ArcadeMode_Bool = "arcadeMode"; 338 | static const char * k_pch_Dashboard_Position = "position"; 339 | static const char * k_pch_Dashboard_DesktopScale = "desktopScale"; 340 | static const char * k_pch_Dashboard_DashboardScale = "dashboardScale"; 341 | static const char * k_pch_Dashboard_UseStandaloneSystemLayer = "standaloneSystemLayer"; 342 | static const char * k_pch_Dashboard_StickyDashboard = "stickyDashboard"; 343 | static const char * k_pch_Dashboard_AllowSteamOverlays_Bool = "allowSteamOverlays"; 344 | static const char * k_pch_Dashboard_AllowVRGamepadUI_Bool = "allowVRGamepadUI"; 345 | static const char * k_pch_Dashboard_AllowVRGamepadUIViaGamescope_Bool = "allowVRGamepadUIViaGamescope"; 346 | static const char * k_pch_Dashboard_SteamMatchesHMDFramerate = "steamMatchesHMDFramerate"; 347 | static const char * k_pch_modelskin_Section = "modelskins"; 348 | static const char * k_pch_Driver_Enable_Bool = "enable"; 349 | static const char * k_pch_Driver_BlockedBySafemode_Bool = "blocked_by_safe_mode"; 350 | static const char * k_pch_Driver_LoadPriority_Int32 = "loadPriority"; 351 | static const char * k_pch_WebInterface_Section = "WebInterface"; 352 | static const char * k_pch_VRWebHelper_Section = "VRWebHelper"; 353 | static const char * k_pch_VRWebHelper_DebuggerEnabled_Bool = "DebuggerEnabled"; 354 | static const char * k_pch_VRWebHelper_DebuggerPort_Int32 = "DebuggerPort"; 355 | static const char * k_pch_TrackingOverride_Section = "TrackingOverrides"; 356 | static const char * k_pch_App_BindingAutosaveURLSuffix_String = "AutosaveURL"; 357 | static const char * k_pch_App_BindingLegacyAPISuffix_String = "_legacy"; 358 | static const char * k_pch_App_BindingSteamVRInputAPISuffix_String = "_steamvrinput"; 359 | static const char * k_pch_App_BindingOpenXRAPISuffix_String = "_openxr"; 360 | static const char * k_pch_App_BindingCurrentURLSuffix_String = "CurrentURL"; 361 | static const char * k_pch_App_BindingPreviousURLSuffix_String = "PreviousURL"; 362 | static const char * k_pch_App_NeedToUpdateAutosaveSuffix_Bool = "NeedToUpdateAutosave"; 363 | static const char * k_pch_App_DominantHand_Int32 = "DominantHand"; 364 | static const char * k_pch_App_BlockOculusSDK_Bool = "blockOculusSDK"; 365 | static const char * k_pch_Trackers_Section = "trackers"; 366 | static const char * k_pch_DesktopUI_Section = "DesktopUI"; 367 | static const char * k_pch_LastKnown_Section = "LastKnown"; 368 | static const char * k_pch_LastKnown_HMDManufacturer_String = "HMDManufacturer"; 369 | static const char * k_pch_LastKnown_HMDModel_String = "HMDModel"; 370 | static const char * k_pch_LastKnown_ActualHMDDriver_String = "ActualHMDDriver"; 371 | static const char * k_pch_DismissedWarnings_Section = "DismissedWarnings"; 372 | static const char * k_pch_Input_Section = "input"; 373 | static const char * k_pch_Input_LeftThumbstickRotation_Float = "leftThumbstickRotation"; 374 | static const char * k_pch_Input_RightThumbstickRotation_Float = "rightThumbstickRotation"; 375 | static const char * k_pch_Input_ThumbstickDeadzone_Float = "thumbstickDeadzone"; 376 | static const char * k_pch_GpuSpeed_Section = "GpuSpeed"; 377 | static const char * IVRScreenshots_Version = "IVRScreenshots_001"; 378 | static const char * IVRResources_Version = "IVRResources_001"; 379 | static const char * IVRDriverManager_Version = "IVRDriverManager_001"; 380 | static const unsigned long k_unMaxActionNameLength = 64; 381 | static const unsigned long k_unMaxActionSetNameLength = 64; 382 | static const unsigned long k_unMaxActionOriginCount = 16; 383 | static const unsigned long k_unMaxBoneNameLength = 32; 384 | static const int k_nActionSetOverlayGlobalPriorityMin = 16777216; 385 | static const int k_nActionSetOverlayGlobalPriorityMax = 33554431; 386 | static const int k_nActionSetPriorityReservedMin = 33554432; 387 | static const char * IVRInput_Version = "IVRInput_010"; 388 | static const unsigned long long k_ulInvalidIOBufferHandle = 0; 389 | static const char * IVRIOBuffer_Version = "IVRIOBuffer_002"; 390 | static const unsigned long k_ulInvalidSpatialAnchorHandle = 0; 391 | static const char * IVRSpatialAnchors_Version = "IVRSpatialAnchors_001"; 392 | static const char * IVRDebug_Version = "IVRDebug_001"; 393 | static const unsigned long long k_ulDisplayRedirectContainer = 25769803779; 394 | static const char * IVRProperties_Version = "IVRProperties_001"; 395 | static const char * k_pchPathUserHandRight = "/user/hand/right"; 396 | static const char * k_pchPathUserHandLeft = "/user/hand/left"; 397 | static const char * k_pchPathUserHandPrimary = "/user/hand/primary"; 398 | static const char * k_pchPathUserHandSecondary = "/user/hand/secondary"; 399 | static const char * k_pchPathUserHead = "/user/head"; 400 | static const char * k_pchPathUserGamepad = "/user/gamepad"; 401 | static const char * k_pchPathUserTreadmill = "/user/treadmill"; 402 | static const char * k_pchPathUserStylus = "/user/stylus"; 403 | static const char * k_pchPathDevices = "/devices"; 404 | static const char * k_pchPathDevicePath = "/device_path"; 405 | static const char * k_pchPathBestAliasPath = "/best_alias_path"; 406 | static const char * k_pchPathBoundTrackerAliasPath = "/bound_tracker_path"; 407 | static const char * k_pchPathBoundTrackerRole = "/bound_tracker_role"; 408 | static const char * k_pchPathPoseRaw = "/pose/raw"; 409 | static const char * k_pchPathPoseTip = "/pose/tip"; 410 | static const char * k_pchPathPoseGrip = "/pose/grip"; 411 | static const char * k_pchPathSystemButtonClick = "/input/system/click"; 412 | static const char * k_pchPathProximity = "/proximity"; 413 | static const char * k_pchPathControllerTypePrefix = "/controller_type/"; 414 | static const char * k_pchPathInputProfileSuffix = "/input_profile"; 415 | static const char * k_pchPathBindingNameSuffix = "/binding_name"; 416 | static const char * k_pchPathBindingUrlSuffix = "/binding_url"; 417 | static const char * k_pchPathBindingErrorSuffix = "/binding_error"; 418 | static const char * k_pchPathActiveActionSets = "/active_action_sets"; 419 | static const char * k_pchPathComponentUpdates = "/total_component_updates"; 420 | static const char * k_pchPathUserFootLeft = "/user/foot/left"; 421 | static const char * k_pchPathUserFootRight = "/user/foot/right"; 422 | static const char * k_pchPathUserShoulderLeft = "/user/shoulder/left"; 423 | static const char * k_pchPathUserShoulderRight = "/user/shoulder/right"; 424 | static const char * k_pchPathUserElbowLeft = "/user/elbow/left"; 425 | static const char * k_pchPathUserElbowRight = "/user/elbow/right"; 426 | static const char * k_pchPathUserKneeLeft = "/user/knee/left"; 427 | static const char * k_pchPathUserKneeRight = "/user/knee/right"; 428 | static const char * k_pchPathUserWristLeft = "/user/wrist/left"; 429 | static const char * k_pchPathUserWristRight = "/user/wrist/right"; 430 | static const char * k_pchPathUserAnkleLeft = "/user/ankle/left"; 431 | static const char * k_pchPathUserAnkleRight = "/user/ankle/right"; 432 | static const char * k_pchPathUserWaist = "/user/waist"; 433 | static const char * k_pchPathUserChest = "/user/chest"; 434 | static const char * k_pchPathUserCamera = "/user/camera"; 435 | static const char * k_pchPathUserKeyboard = "/user/keyboard"; 436 | static const char * k_pchPathClientAppKey = "/client_info/app_key"; 437 | static const unsigned long long k_ulInvalidPathHandle = 0; 438 | static const char * IVRPaths_Version = "IVRPaths_001"; 439 | static const char * IVRBlockQueue_Version = "IVRBlockQueue_005"; 440 | 441 | // OpenVR Enums 442 | 443 | typedef enum EVREye 444 | { 445 | EVREye_Eye_Left = 0, 446 | EVREye_Eye_Right = 1, 447 | } EVREye; 448 | 449 | typedef enum ETextureType 450 | { 451 | ETextureType_TextureType_Invalid = -1, 452 | ETextureType_TextureType_DirectX = 0, 453 | ETextureType_TextureType_OpenGL = 1, 454 | ETextureType_TextureType_Vulkan = 2, 455 | ETextureType_TextureType_IOSurface = 3, 456 | ETextureType_TextureType_DirectX12 = 4, 457 | ETextureType_TextureType_DXGISharedHandle = 5, 458 | ETextureType_TextureType_Metal = 6, 459 | ETextureType_TextureType_Reserved = 7, 460 | } ETextureType; 461 | 462 | typedef enum EColorSpace 463 | { 464 | EColorSpace_ColorSpace_Auto = 0, 465 | EColorSpace_ColorSpace_Gamma = 1, 466 | EColorSpace_ColorSpace_Linear = 2, 467 | } EColorSpace; 468 | 469 | typedef enum ETrackingResult 470 | { 471 | ETrackingResult_TrackingResult_Uninitialized = 1, 472 | ETrackingResult_TrackingResult_Calibrating_InProgress = 100, 473 | ETrackingResult_TrackingResult_Calibrating_OutOfRange = 101, 474 | ETrackingResult_TrackingResult_Running_OK = 200, 475 | ETrackingResult_TrackingResult_Running_OutOfRange = 201, 476 | ETrackingResult_TrackingResult_Fallback_RotationOnly = 300, 477 | } ETrackingResult; 478 | 479 | typedef enum ETrackedDeviceClass 480 | { 481 | ETrackedDeviceClass_TrackedDeviceClass_Invalid = 0, 482 | ETrackedDeviceClass_TrackedDeviceClass_HMD = 1, 483 | ETrackedDeviceClass_TrackedDeviceClass_Controller = 2, 484 | ETrackedDeviceClass_TrackedDeviceClass_GenericTracker = 3, 485 | ETrackedDeviceClass_TrackedDeviceClass_TrackingReference = 4, 486 | ETrackedDeviceClass_TrackedDeviceClass_DisplayRedirect = 5, 487 | ETrackedDeviceClass_TrackedDeviceClass_Max = 6, 488 | } ETrackedDeviceClass; 489 | 490 | typedef enum ETrackedControllerRole 491 | { 492 | ETrackedControllerRole_TrackedControllerRole_Invalid = 0, 493 | ETrackedControllerRole_TrackedControllerRole_LeftHand = 1, 494 | ETrackedControllerRole_TrackedControllerRole_RightHand = 2, 495 | ETrackedControllerRole_TrackedControllerRole_OptOut = 3, 496 | ETrackedControllerRole_TrackedControllerRole_Treadmill = 4, 497 | ETrackedControllerRole_TrackedControllerRole_Stylus = 5, 498 | ETrackedControllerRole_TrackedControllerRole_Max = 5, 499 | } ETrackedControllerRole; 500 | 501 | typedef enum ETrackingUniverseOrigin 502 | { 503 | ETrackingUniverseOrigin_TrackingUniverseSeated = 0, 504 | ETrackingUniverseOrigin_TrackingUniverseStanding = 1, 505 | ETrackingUniverseOrigin_TrackingUniverseRawAndUncalibrated = 2, 506 | } ETrackingUniverseOrigin; 507 | 508 | typedef enum EAdditionalRadioFeatures 509 | { 510 | EAdditionalRadioFeatures_AdditionalRadioFeatures_None = 0, 511 | EAdditionalRadioFeatures_AdditionalRadioFeatures_HTCLinkBox = 1, 512 | EAdditionalRadioFeatures_AdditionalRadioFeatures_InternalDongle = 2, 513 | EAdditionalRadioFeatures_AdditionalRadioFeatures_ExternalDongle = 4, 514 | } EAdditionalRadioFeatures; 515 | 516 | typedef enum ETrackedDeviceProperty 517 | { 518 | ETrackedDeviceProperty_Prop_Invalid = 0, 519 | ETrackedDeviceProperty_Prop_TrackingSystemName_String = 1000, 520 | ETrackedDeviceProperty_Prop_ModelNumber_String = 1001, 521 | ETrackedDeviceProperty_Prop_SerialNumber_String = 1002, 522 | ETrackedDeviceProperty_Prop_RenderModelName_String = 1003, 523 | ETrackedDeviceProperty_Prop_WillDriftInYaw_Bool = 1004, 524 | ETrackedDeviceProperty_Prop_ManufacturerName_String = 1005, 525 | ETrackedDeviceProperty_Prop_TrackingFirmwareVersion_String = 1006, 526 | ETrackedDeviceProperty_Prop_HardwareRevision_String = 1007, 527 | ETrackedDeviceProperty_Prop_AllWirelessDongleDescriptions_String = 1008, 528 | ETrackedDeviceProperty_Prop_ConnectedWirelessDongle_String = 1009, 529 | ETrackedDeviceProperty_Prop_DeviceIsWireless_Bool = 1010, 530 | ETrackedDeviceProperty_Prop_DeviceIsCharging_Bool = 1011, 531 | ETrackedDeviceProperty_Prop_DeviceBatteryPercentage_Float = 1012, 532 | ETrackedDeviceProperty_Prop_StatusDisplayTransform_Matrix34 = 1013, 533 | ETrackedDeviceProperty_Prop_Firmware_UpdateAvailable_Bool = 1014, 534 | ETrackedDeviceProperty_Prop_Firmware_ManualUpdate_Bool = 1015, 535 | ETrackedDeviceProperty_Prop_Firmware_ManualUpdateURL_String = 1016, 536 | ETrackedDeviceProperty_Prop_HardwareRevision_Uint64 = 1017, 537 | ETrackedDeviceProperty_Prop_FirmwareVersion_Uint64 = 1018, 538 | ETrackedDeviceProperty_Prop_FPGAVersion_Uint64 = 1019, 539 | ETrackedDeviceProperty_Prop_VRCVersion_Uint64 = 1020, 540 | ETrackedDeviceProperty_Prop_RadioVersion_Uint64 = 1021, 541 | ETrackedDeviceProperty_Prop_DongleVersion_Uint64 = 1022, 542 | ETrackedDeviceProperty_Prop_BlockServerShutdown_Bool = 1023, 543 | ETrackedDeviceProperty_Prop_CanUnifyCoordinateSystemWithHmd_Bool = 1024, 544 | ETrackedDeviceProperty_Prop_ContainsProximitySensor_Bool = 1025, 545 | ETrackedDeviceProperty_Prop_DeviceProvidesBatteryStatus_Bool = 1026, 546 | ETrackedDeviceProperty_Prop_DeviceCanPowerOff_Bool = 1027, 547 | ETrackedDeviceProperty_Prop_Firmware_ProgrammingTarget_String = 1028, 548 | ETrackedDeviceProperty_Prop_DeviceClass_Int32 = 1029, 549 | ETrackedDeviceProperty_Prop_HasCamera_Bool = 1030, 550 | ETrackedDeviceProperty_Prop_DriverVersion_String = 1031, 551 | ETrackedDeviceProperty_Prop_Firmware_ForceUpdateRequired_Bool = 1032, 552 | ETrackedDeviceProperty_Prop_ViveSystemButtonFixRequired_Bool = 1033, 553 | ETrackedDeviceProperty_Prop_ParentDriver_Uint64 = 1034, 554 | ETrackedDeviceProperty_Prop_ResourceRoot_String = 1035, 555 | ETrackedDeviceProperty_Prop_RegisteredDeviceType_String = 1036, 556 | ETrackedDeviceProperty_Prop_InputProfilePath_String = 1037, 557 | ETrackedDeviceProperty_Prop_NeverTracked_Bool = 1038, 558 | ETrackedDeviceProperty_Prop_NumCameras_Int32 = 1039, 559 | ETrackedDeviceProperty_Prop_CameraFrameLayout_Int32 = 1040, 560 | ETrackedDeviceProperty_Prop_CameraStreamFormat_Int32 = 1041, 561 | ETrackedDeviceProperty_Prop_AdditionalDeviceSettingsPath_String = 1042, 562 | ETrackedDeviceProperty_Prop_Identifiable_Bool = 1043, 563 | ETrackedDeviceProperty_Prop_BootloaderVersion_Uint64 = 1044, 564 | ETrackedDeviceProperty_Prop_AdditionalSystemReportData_String = 1045, 565 | ETrackedDeviceProperty_Prop_CompositeFirmwareVersion_String = 1046, 566 | ETrackedDeviceProperty_Prop_Firmware_RemindUpdate_Bool = 1047, 567 | ETrackedDeviceProperty_Prop_PeripheralApplicationVersion_Uint64 = 1048, 568 | ETrackedDeviceProperty_Prop_ManufacturerSerialNumber_String = 1049, 569 | ETrackedDeviceProperty_Prop_ComputedSerialNumber_String = 1050, 570 | ETrackedDeviceProperty_Prop_EstimatedDeviceFirstUseTime_Int32 = 1051, 571 | ETrackedDeviceProperty_Prop_DevicePowerUsage_Float = 1052, 572 | ETrackedDeviceProperty_Prop_IgnoreMotionForStandby_Bool = 1053, 573 | ETrackedDeviceProperty_Prop_ActualTrackingSystemName_String = 1054, 574 | ETrackedDeviceProperty_Prop_ReportsTimeSinceVSync_Bool = 2000, 575 | ETrackedDeviceProperty_Prop_SecondsFromVsyncToPhotons_Float = 2001, 576 | ETrackedDeviceProperty_Prop_DisplayFrequency_Float = 2002, 577 | ETrackedDeviceProperty_Prop_UserIpdMeters_Float = 2003, 578 | ETrackedDeviceProperty_Prop_CurrentUniverseId_Uint64 = 2004, 579 | ETrackedDeviceProperty_Prop_PreviousUniverseId_Uint64 = 2005, 580 | ETrackedDeviceProperty_Prop_DisplayFirmwareVersion_Uint64 = 2006, 581 | ETrackedDeviceProperty_Prop_IsOnDesktop_Bool = 2007, 582 | ETrackedDeviceProperty_Prop_DisplayMCType_Int32 = 2008, 583 | ETrackedDeviceProperty_Prop_DisplayMCOffset_Float = 2009, 584 | ETrackedDeviceProperty_Prop_DisplayMCScale_Float = 2010, 585 | ETrackedDeviceProperty_Prop_EdidVendorID_Int32 = 2011, 586 | ETrackedDeviceProperty_Prop_DisplayMCImageLeft_String = 2012, 587 | ETrackedDeviceProperty_Prop_DisplayMCImageRight_String = 2013, 588 | ETrackedDeviceProperty_Prop_DisplayGCBlackClamp_Float = 2014, 589 | ETrackedDeviceProperty_Prop_EdidProductID_Int32 = 2015, 590 | ETrackedDeviceProperty_Prop_CameraToHeadTransform_Matrix34 = 2016, 591 | ETrackedDeviceProperty_Prop_DisplayGCType_Int32 = 2017, 592 | ETrackedDeviceProperty_Prop_DisplayGCOffset_Float = 2018, 593 | ETrackedDeviceProperty_Prop_DisplayGCScale_Float = 2019, 594 | ETrackedDeviceProperty_Prop_DisplayGCPrescale_Float = 2020, 595 | ETrackedDeviceProperty_Prop_DisplayGCImage_String = 2021, 596 | ETrackedDeviceProperty_Prop_LensCenterLeftU_Float = 2022, 597 | ETrackedDeviceProperty_Prop_LensCenterLeftV_Float = 2023, 598 | ETrackedDeviceProperty_Prop_LensCenterRightU_Float = 2024, 599 | ETrackedDeviceProperty_Prop_LensCenterRightV_Float = 2025, 600 | ETrackedDeviceProperty_Prop_UserHeadToEyeDepthMeters_Float = 2026, 601 | ETrackedDeviceProperty_Prop_CameraFirmwareVersion_Uint64 = 2027, 602 | ETrackedDeviceProperty_Prop_CameraFirmwareDescription_String = 2028, 603 | ETrackedDeviceProperty_Prop_DisplayFPGAVersion_Uint64 = 2029, 604 | ETrackedDeviceProperty_Prop_DisplayBootloaderVersion_Uint64 = 2030, 605 | ETrackedDeviceProperty_Prop_DisplayHardwareVersion_Uint64 = 2031, 606 | ETrackedDeviceProperty_Prop_AudioFirmwareVersion_Uint64 = 2032, 607 | ETrackedDeviceProperty_Prop_CameraCompatibilityMode_Int32 = 2033, 608 | ETrackedDeviceProperty_Prop_ScreenshotHorizontalFieldOfViewDegrees_Float = 2034, 609 | ETrackedDeviceProperty_Prop_ScreenshotVerticalFieldOfViewDegrees_Float = 2035, 610 | ETrackedDeviceProperty_Prop_DisplaySuppressed_Bool = 2036, 611 | ETrackedDeviceProperty_Prop_DisplayAllowNightMode_Bool = 2037, 612 | ETrackedDeviceProperty_Prop_DisplayMCImageWidth_Int32 = 2038, 613 | ETrackedDeviceProperty_Prop_DisplayMCImageHeight_Int32 = 2039, 614 | ETrackedDeviceProperty_Prop_DisplayMCImageNumChannels_Int32 = 2040, 615 | ETrackedDeviceProperty_Prop_DisplayMCImageData_Binary = 2041, 616 | ETrackedDeviceProperty_Prop_SecondsFromPhotonsToVblank_Float = 2042, 617 | ETrackedDeviceProperty_Prop_DriverDirectModeSendsVsyncEvents_Bool = 2043, 618 | ETrackedDeviceProperty_Prop_DisplayDebugMode_Bool = 2044, 619 | ETrackedDeviceProperty_Prop_GraphicsAdapterLuid_Uint64 = 2045, 620 | ETrackedDeviceProperty_Prop_DriverProvidedChaperonePath_String = 2048, 621 | ETrackedDeviceProperty_Prop_ExpectedTrackingReferenceCount_Int32 = 2049, 622 | ETrackedDeviceProperty_Prop_ExpectedControllerCount_Int32 = 2050, 623 | ETrackedDeviceProperty_Prop_NamedIconPathControllerLeftDeviceOff_String = 2051, 624 | ETrackedDeviceProperty_Prop_NamedIconPathControllerRightDeviceOff_String = 2052, 625 | ETrackedDeviceProperty_Prop_NamedIconPathTrackingReferenceDeviceOff_String = 2053, 626 | ETrackedDeviceProperty_Prop_DoNotApplyPrediction_Bool = 2054, 627 | ETrackedDeviceProperty_Prop_CameraToHeadTransforms_Matrix34_Array = 2055, 628 | ETrackedDeviceProperty_Prop_DistortionMeshResolution_Int32 = 2056, 629 | ETrackedDeviceProperty_Prop_DriverIsDrawingControllers_Bool = 2057, 630 | ETrackedDeviceProperty_Prop_DriverRequestsApplicationPause_Bool = 2058, 631 | ETrackedDeviceProperty_Prop_DriverRequestsReducedRendering_Bool = 2059, 632 | ETrackedDeviceProperty_Prop_MinimumIpdStepMeters_Float = 2060, 633 | ETrackedDeviceProperty_Prop_AudioBridgeFirmwareVersion_Uint64 = 2061, 634 | ETrackedDeviceProperty_Prop_ImageBridgeFirmwareVersion_Uint64 = 2062, 635 | ETrackedDeviceProperty_Prop_ImuToHeadTransform_Matrix34 = 2063, 636 | ETrackedDeviceProperty_Prop_ImuFactoryGyroBias_Vector3 = 2064, 637 | ETrackedDeviceProperty_Prop_ImuFactoryGyroScale_Vector3 = 2065, 638 | ETrackedDeviceProperty_Prop_ImuFactoryAccelerometerBias_Vector3 = 2066, 639 | ETrackedDeviceProperty_Prop_ImuFactoryAccelerometerScale_Vector3 = 2067, 640 | ETrackedDeviceProperty_Prop_ConfigurationIncludesLighthouse20Features_Bool = 2069, 641 | ETrackedDeviceProperty_Prop_AdditionalRadioFeatures_Uint64 = 2070, 642 | ETrackedDeviceProperty_Prop_CameraWhiteBalance_Vector4_Array = 2071, 643 | ETrackedDeviceProperty_Prop_CameraDistortionFunction_Int32_Array = 2072, 644 | ETrackedDeviceProperty_Prop_CameraDistortionCoefficients_Float_Array = 2073, 645 | ETrackedDeviceProperty_Prop_ExpectedControllerType_String = 2074, 646 | ETrackedDeviceProperty_Prop_HmdTrackingStyle_Int32 = 2075, 647 | ETrackedDeviceProperty_Prop_DriverProvidedChaperoneVisibility_Bool = 2076, 648 | ETrackedDeviceProperty_Prop_HmdColumnCorrectionSettingPrefix_String = 2077, 649 | ETrackedDeviceProperty_Prop_CameraSupportsCompatibilityModes_Bool = 2078, 650 | ETrackedDeviceProperty_Prop_SupportsRoomViewDepthProjection_Bool = 2079, 651 | ETrackedDeviceProperty_Prop_DisplayAvailableFrameRates_Float_Array = 2080, 652 | ETrackedDeviceProperty_Prop_DisplaySupportsMultipleFramerates_Bool = 2081, 653 | ETrackedDeviceProperty_Prop_DisplayColorMultLeft_Vector3 = 2082, 654 | ETrackedDeviceProperty_Prop_DisplayColorMultRight_Vector3 = 2083, 655 | ETrackedDeviceProperty_Prop_DisplaySupportsRuntimeFramerateChange_Bool = 2084, 656 | ETrackedDeviceProperty_Prop_DisplaySupportsAnalogGain_Bool = 2085, 657 | ETrackedDeviceProperty_Prop_DisplayMinAnalogGain_Float = 2086, 658 | ETrackedDeviceProperty_Prop_DisplayMaxAnalogGain_Float = 2087, 659 | ETrackedDeviceProperty_Prop_CameraExposureTime_Float = 2088, 660 | ETrackedDeviceProperty_Prop_CameraGlobalGain_Float = 2089, 661 | ETrackedDeviceProperty_Prop_DashboardScale_Float = 2091, 662 | ETrackedDeviceProperty_Prop_PeerButtonInfo_String = 2092, 663 | ETrackedDeviceProperty_Prop_Hmd_SupportsHDR10_Bool = 2093, 664 | ETrackedDeviceProperty_Prop_Hmd_EnableParallelRenderCameras_Bool = 2094, 665 | ETrackedDeviceProperty_Prop_DriverProvidedChaperoneJson_String = 2095, 666 | ETrackedDeviceProperty_Prop_ForceSystemLayerUseAppPoses_Bool = 2096, 667 | ETrackedDeviceProperty_Prop_IpdUIRangeMinMeters_Float = 2100, 668 | ETrackedDeviceProperty_Prop_IpdUIRangeMaxMeters_Float = 2101, 669 | ETrackedDeviceProperty_Prop_Hmd_SupportsHDCP14LegacyCompat_Bool = 2102, 670 | ETrackedDeviceProperty_Prop_Hmd_SupportsMicMonitoring_Bool = 2103, 671 | ETrackedDeviceProperty_Prop_Hmd_SupportsDisplayPortTrainingMode_Bool = 2104, 672 | ETrackedDeviceProperty_Prop_Hmd_SupportsRoomViewDirect_Bool = 2105, 673 | ETrackedDeviceProperty_Prop_Hmd_SupportsAppThrottling_Bool = 2106, 674 | ETrackedDeviceProperty_Prop_Hmd_SupportsGpuBusMonitoring_Bool = 2107, 675 | ETrackedDeviceProperty_Prop_DriverDisplaysIPDChanges_Bool = 2108, 676 | ETrackedDeviceProperty_Prop_Driver_Reserved_01 = 2109, 677 | ETrackedDeviceProperty_Prop_DSCVersion_Int32 = 2110, 678 | ETrackedDeviceProperty_Prop_DSCSliceCount_Int32 = 2111, 679 | ETrackedDeviceProperty_Prop_DSCBPPx16_Int32 = 2112, 680 | ETrackedDeviceProperty_Prop_Hmd_MaxDistortedTextureWidth_Int32 = 2113, 681 | ETrackedDeviceProperty_Prop_Hmd_MaxDistortedTextureHeight_Int32 = 2114, 682 | ETrackedDeviceProperty_Prop_Hmd_AllowSupersampleFiltering_Bool = 2115, 683 | ETrackedDeviceProperty_Prop_DriverRequestedMuraCorrectionMode_Int32 = 2200, 684 | ETrackedDeviceProperty_Prop_DriverRequestedMuraFeather_InnerLeft_Int32 = 2201, 685 | ETrackedDeviceProperty_Prop_DriverRequestedMuraFeather_InnerRight_Int32 = 2202, 686 | ETrackedDeviceProperty_Prop_DriverRequestedMuraFeather_InnerTop_Int32 = 2203, 687 | ETrackedDeviceProperty_Prop_DriverRequestedMuraFeather_InnerBottom_Int32 = 2204, 688 | ETrackedDeviceProperty_Prop_DriverRequestedMuraFeather_OuterLeft_Int32 = 2205, 689 | ETrackedDeviceProperty_Prop_DriverRequestedMuraFeather_OuterRight_Int32 = 2206, 690 | ETrackedDeviceProperty_Prop_DriverRequestedMuraFeather_OuterTop_Int32 = 2207, 691 | ETrackedDeviceProperty_Prop_DriverRequestedMuraFeather_OuterBottom_Int32 = 2208, 692 | ETrackedDeviceProperty_Prop_Audio_DefaultPlaybackDeviceId_String = 2300, 693 | ETrackedDeviceProperty_Prop_Audio_DefaultRecordingDeviceId_String = 2301, 694 | ETrackedDeviceProperty_Prop_Audio_DefaultPlaybackDeviceVolume_Float = 2302, 695 | ETrackedDeviceProperty_Prop_Audio_SupportsDualSpeakerAndJackOutput_Bool = 2303, 696 | ETrackedDeviceProperty_Prop_Audio_DriverManagesPlaybackVolumeControl_Bool = 2304, 697 | ETrackedDeviceProperty_Prop_Audio_DriverPlaybackVolume_Float = 2305, 698 | ETrackedDeviceProperty_Prop_Audio_DriverPlaybackMute_Bool = 2306, 699 | ETrackedDeviceProperty_Prop_Audio_DriverManagesRecordingVolumeControl_Bool = 2307, 700 | ETrackedDeviceProperty_Prop_Audio_DriverRecordingVolume_Float = 2308, 701 | ETrackedDeviceProperty_Prop_Audio_DriverRecordingMute_Bool = 2309, 702 | ETrackedDeviceProperty_Prop_AttachedDeviceId_String = 3000, 703 | ETrackedDeviceProperty_Prop_SupportedButtons_Uint64 = 3001, 704 | ETrackedDeviceProperty_Prop_Axis0Type_Int32 = 3002, 705 | ETrackedDeviceProperty_Prop_Axis1Type_Int32 = 3003, 706 | ETrackedDeviceProperty_Prop_Axis2Type_Int32 = 3004, 707 | ETrackedDeviceProperty_Prop_Axis3Type_Int32 = 3005, 708 | ETrackedDeviceProperty_Prop_Axis4Type_Int32 = 3006, 709 | ETrackedDeviceProperty_Prop_ControllerRoleHint_Int32 = 3007, 710 | ETrackedDeviceProperty_Prop_FieldOfViewLeftDegrees_Float = 4000, 711 | ETrackedDeviceProperty_Prop_FieldOfViewRightDegrees_Float = 4001, 712 | ETrackedDeviceProperty_Prop_FieldOfViewTopDegrees_Float = 4002, 713 | ETrackedDeviceProperty_Prop_FieldOfViewBottomDegrees_Float = 4003, 714 | ETrackedDeviceProperty_Prop_TrackingRangeMinimumMeters_Float = 4004, 715 | ETrackedDeviceProperty_Prop_TrackingRangeMaximumMeters_Float = 4005, 716 | ETrackedDeviceProperty_Prop_ModeLabel_String = 4006, 717 | ETrackedDeviceProperty_Prop_CanWirelessIdentify_Bool = 4007, 718 | ETrackedDeviceProperty_Prop_Nonce_Int32 = 4008, 719 | ETrackedDeviceProperty_Prop_IconPathName_String = 5000, 720 | ETrackedDeviceProperty_Prop_NamedIconPathDeviceOff_String = 5001, 721 | ETrackedDeviceProperty_Prop_NamedIconPathDeviceSearching_String = 5002, 722 | ETrackedDeviceProperty_Prop_NamedIconPathDeviceSearchingAlert_String = 5003, 723 | ETrackedDeviceProperty_Prop_NamedIconPathDeviceReady_String = 5004, 724 | ETrackedDeviceProperty_Prop_NamedIconPathDeviceReadyAlert_String = 5005, 725 | ETrackedDeviceProperty_Prop_NamedIconPathDeviceNotReady_String = 5006, 726 | ETrackedDeviceProperty_Prop_NamedIconPathDeviceStandby_String = 5007, 727 | ETrackedDeviceProperty_Prop_NamedIconPathDeviceAlertLow_String = 5008, 728 | ETrackedDeviceProperty_Prop_NamedIconPathDeviceStandbyAlert_String = 5009, 729 | ETrackedDeviceProperty_Prop_DisplayHiddenArea_Binary_Start = 5100, 730 | ETrackedDeviceProperty_Prop_DisplayHiddenArea_Binary_End = 5150, 731 | ETrackedDeviceProperty_Prop_ParentContainer = 5151, 732 | ETrackedDeviceProperty_Prop_OverrideContainer_Uint64 = 5152, 733 | ETrackedDeviceProperty_Prop_UserConfigPath_String = 6000, 734 | ETrackedDeviceProperty_Prop_InstallPath_String = 6001, 735 | ETrackedDeviceProperty_Prop_HasDisplayComponent_Bool = 6002, 736 | ETrackedDeviceProperty_Prop_HasControllerComponent_Bool = 6003, 737 | ETrackedDeviceProperty_Prop_HasCameraComponent_Bool = 6004, 738 | ETrackedDeviceProperty_Prop_HasDriverDirectModeComponent_Bool = 6005, 739 | ETrackedDeviceProperty_Prop_HasVirtualDisplayComponent_Bool = 6006, 740 | ETrackedDeviceProperty_Prop_HasSpatialAnchorsSupport_Bool = 6007, 741 | ETrackedDeviceProperty_Prop_SupportsXrTextureSets_Bool = 6008, 742 | ETrackedDeviceProperty_Prop_ControllerType_String = 7000, 743 | ETrackedDeviceProperty_Prop_ControllerHandSelectionPriority_Int32 = 7002, 744 | ETrackedDeviceProperty_Prop_VendorSpecific_Reserved_Start = 10000, 745 | ETrackedDeviceProperty_Prop_VendorSpecific_Reserved_End = 10999, 746 | ETrackedDeviceProperty_Prop_TrackedDeviceProperty_Max = 1000000, 747 | } ETrackedDeviceProperty; 748 | 749 | typedef enum ETrackedPropertyError 750 | { 751 | ETrackedPropertyError_TrackedProp_Success = 0, 752 | ETrackedPropertyError_TrackedProp_WrongDataType = 1, 753 | ETrackedPropertyError_TrackedProp_WrongDeviceClass = 2, 754 | ETrackedPropertyError_TrackedProp_BufferTooSmall = 3, 755 | ETrackedPropertyError_TrackedProp_UnknownProperty = 4, 756 | ETrackedPropertyError_TrackedProp_InvalidDevice = 5, 757 | ETrackedPropertyError_TrackedProp_CouldNotContactServer = 6, 758 | ETrackedPropertyError_TrackedProp_ValueNotProvidedByDevice = 7, 759 | ETrackedPropertyError_TrackedProp_StringExceedsMaximumLength = 8, 760 | ETrackedPropertyError_TrackedProp_NotYetAvailable = 9, 761 | ETrackedPropertyError_TrackedProp_PermissionDenied = 10, 762 | ETrackedPropertyError_TrackedProp_InvalidOperation = 11, 763 | ETrackedPropertyError_TrackedProp_CannotWriteToWildcards = 12, 764 | ETrackedPropertyError_TrackedProp_IPCReadFailure = 13, 765 | ETrackedPropertyError_TrackedProp_OutOfMemory = 14, 766 | ETrackedPropertyError_TrackedProp_InvalidContainer = 15, 767 | } ETrackedPropertyError; 768 | 769 | typedef enum EHmdTrackingStyle 770 | { 771 | EHmdTrackingStyle_HmdTrackingStyle_Unknown = 0, 772 | EHmdTrackingStyle_HmdTrackingStyle_Lighthouse = 1, 773 | EHmdTrackingStyle_HmdTrackingStyle_OutsideInCameras = 2, 774 | EHmdTrackingStyle_HmdTrackingStyle_InsideOutCameras = 3, 775 | } EHmdTrackingStyle; 776 | 777 | typedef enum EVRSubmitFlags 778 | { 779 | EVRSubmitFlags_Submit_Default = 0, 780 | EVRSubmitFlags_Submit_LensDistortionAlreadyApplied = 1, 781 | EVRSubmitFlags_Submit_GlRenderBuffer = 2, 782 | EVRSubmitFlags_Submit_Reserved = 4, 783 | EVRSubmitFlags_Submit_TextureWithPose = 8, 784 | EVRSubmitFlags_Submit_TextureWithDepth = 16, 785 | EVRSubmitFlags_Submit_FrameDiscontinuty = 32, 786 | EVRSubmitFlags_Submit_VulkanTextureWithArrayData = 64, 787 | EVRSubmitFlags_Submit_GlArrayTexture = 128, 788 | EVRSubmitFlags_Submit_IsEgl = 256, 789 | EVRSubmitFlags_Submit_Reserved2 = 32768, 790 | EVRSubmitFlags_Submit_Reserved3 = 65536, 791 | } EVRSubmitFlags; 792 | 793 | typedef enum EVRState 794 | { 795 | EVRState_VRState_Undefined = -1, 796 | EVRState_VRState_Off = 0, 797 | EVRState_VRState_Searching = 1, 798 | EVRState_VRState_Searching_Alert = 2, 799 | EVRState_VRState_Ready = 3, 800 | EVRState_VRState_Ready_Alert = 4, 801 | EVRState_VRState_NotReady = 5, 802 | EVRState_VRState_Standby = 6, 803 | EVRState_VRState_Ready_Alert_Low = 7, 804 | } EVRState; 805 | 806 | typedef enum EVREventType 807 | { 808 | EVREventType_VREvent_None = 0, 809 | EVREventType_VREvent_TrackedDeviceActivated = 100, 810 | EVREventType_VREvent_TrackedDeviceDeactivated = 101, 811 | EVREventType_VREvent_TrackedDeviceUpdated = 102, 812 | EVREventType_VREvent_TrackedDeviceUserInteractionStarted = 103, 813 | EVREventType_VREvent_TrackedDeviceUserInteractionEnded = 104, 814 | EVREventType_VREvent_IpdChanged = 105, 815 | EVREventType_VREvent_EnterStandbyMode = 106, 816 | EVREventType_VREvent_LeaveStandbyMode = 107, 817 | EVREventType_VREvent_TrackedDeviceRoleChanged = 108, 818 | EVREventType_VREvent_WatchdogWakeUpRequested = 109, 819 | EVREventType_VREvent_LensDistortionChanged = 110, 820 | EVREventType_VREvent_PropertyChanged = 111, 821 | EVREventType_VREvent_WirelessDisconnect = 112, 822 | EVREventType_VREvent_WirelessReconnect = 113, 823 | EVREventType_VREvent_Reserved_01 = 114, 824 | EVREventType_VREvent_Reserved_02 = 115, 825 | EVREventType_VREvent_ButtonPress = 200, 826 | EVREventType_VREvent_ButtonUnpress = 201, 827 | EVREventType_VREvent_ButtonTouch = 202, 828 | EVREventType_VREvent_ButtonUntouch = 203, 829 | EVREventType_VREvent_Modal_Cancel = 257, 830 | EVREventType_VREvent_MouseMove = 300, 831 | EVREventType_VREvent_MouseButtonDown = 301, 832 | EVREventType_VREvent_MouseButtonUp = 302, 833 | EVREventType_VREvent_FocusEnter = 303, 834 | EVREventType_VREvent_FocusLeave = 304, 835 | EVREventType_VREvent_ScrollDiscrete = 305, 836 | EVREventType_VREvent_TouchPadMove = 306, 837 | EVREventType_VREvent_OverlayFocusChanged = 307, 838 | EVREventType_VREvent_ReloadOverlays = 308, 839 | EVREventType_VREvent_ScrollSmooth = 309, 840 | EVREventType_VREvent_LockMousePosition = 310, 841 | EVREventType_VREvent_UnlockMousePosition = 311, 842 | EVREventType_VREvent_InputFocusCaptured = 400, 843 | EVREventType_VREvent_InputFocusReleased = 401, 844 | EVREventType_VREvent_SceneApplicationChanged = 404, 845 | EVREventType_VREvent_InputFocusChanged = 406, 846 | EVREventType_VREvent_SceneApplicationUsingWrongGraphicsAdapter = 408, 847 | EVREventType_VREvent_ActionBindingReloaded = 409, 848 | EVREventType_VREvent_HideRenderModels = 410, 849 | EVREventType_VREvent_ShowRenderModels = 411, 850 | EVREventType_VREvent_SceneApplicationStateChanged = 412, 851 | EVREventType_VREvent_SceneAppPipeDisconnected = 413, 852 | EVREventType_VREvent_ConsoleOpened = 420, 853 | EVREventType_VREvent_ConsoleClosed = 421, 854 | EVREventType_VREvent_OverlayShown = 500, 855 | EVREventType_VREvent_OverlayHidden = 501, 856 | EVREventType_VREvent_DashboardActivated = 502, 857 | EVREventType_VREvent_DashboardDeactivated = 503, 858 | EVREventType_VREvent_DashboardRequested = 505, 859 | EVREventType_VREvent_ResetDashboard = 506, 860 | EVREventType_VREvent_ImageLoaded = 508, 861 | EVREventType_VREvent_ShowKeyboard = 509, 862 | EVREventType_VREvent_HideKeyboard = 510, 863 | EVREventType_VREvent_OverlayGamepadFocusGained = 511, 864 | EVREventType_VREvent_OverlayGamepadFocusLost = 512, 865 | EVREventType_VREvent_OverlaySharedTextureChanged = 513, 866 | EVREventType_VREvent_ScreenshotTriggered = 516, 867 | EVREventType_VREvent_ImageFailed = 517, 868 | EVREventType_VREvent_DashboardOverlayCreated = 518, 869 | EVREventType_VREvent_SwitchGamepadFocus = 519, 870 | EVREventType_VREvent_RequestScreenshot = 520, 871 | EVREventType_VREvent_ScreenshotTaken = 521, 872 | EVREventType_VREvent_ScreenshotFailed = 522, 873 | EVREventType_VREvent_SubmitScreenshotToDashboard = 523, 874 | EVREventType_VREvent_ScreenshotProgressToDashboard = 524, 875 | EVREventType_VREvent_PrimaryDashboardDeviceChanged = 525, 876 | EVREventType_VREvent_RoomViewShown = 526, 877 | EVREventType_VREvent_RoomViewHidden = 527, 878 | EVREventType_VREvent_ShowUI = 528, 879 | EVREventType_VREvent_ShowDevTools = 529, 880 | EVREventType_VREvent_DesktopViewUpdating = 530, 881 | EVREventType_VREvent_DesktopViewReady = 531, 882 | EVREventType_VREvent_StartDashboard = 532, 883 | EVREventType_VREvent_ElevatePrism = 533, 884 | EVREventType_VREvent_OverlayClosed = 534, 885 | EVREventType_VREvent_DashboardThumbChanged = 535, 886 | EVREventType_VREvent_DesktopMightBeVisible = 536, 887 | EVREventType_VREvent_DesktopMightBeHidden = 537, 888 | EVREventType_VREvent_MutualSteamCapabilitiesChanged = 538, 889 | EVREventType_VREvent_OverlayCreated = 539, 890 | EVREventType_VREvent_OverlayDestroyed = 540, 891 | EVREventType_VREvent_Notification_Shown = 600, 892 | EVREventType_VREvent_Notification_Hidden = 601, 893 | EVREventType_VREvent_Notification_BeginInteraction = 602, 894 | EVREventType_VREvent_Notification_Destroyed = 603, 895 | EVREventType_VREvent_Quit = 700, 896 | EVREventType_VREvent_ProcessQuit = 701, 897 | EVREventType_VREvent_QuitAcknowledged = 703, 898 | EVREventType_VREvent_DriverRequestedQuit = 704, 899 | EVREventType_VREvent_RestartRequested = 705, 900 | EVREventType_VREvent_InvalidateSwapTextureSets = 706, 901 | EVREventType_VREvent_ChaperoneDataHasChanged = 800, 902 | EVREventType_VREvent_ChaperoneUniverseHasChanged = 801, 903 | EVREventType_VREvent_ChaperoneTempDataHasChanged = 802, 904 | EVREventType_VREvent_ChaperoneSettingsHaveChanged = 803, 905 | EVREventType_VREvent_SeatedZeroPoseReset = 804, 906 | EVREventType_VREvent_ChaperoneFlushCache = 805, 907 | EVREventType_VREvent_ChaperoneRoomSetupStarting = 806, 908 | EVREventType_VREvent_ChaperoneRoomSetupFinished = 807, 909 | EVREventType_VREvent_StandingZeroPoseReset = 808, 910 | EVREventType_VREvent_AudioSettingsHaveChanged = 820, 911 | EVREventType_VREvent_BackgroundSettingHasChanged = 850, 912 | EVREventType_VREvent_CameraSettingsHaveChanged = 851, 913 | EVREventType_VREvent_ReprojectionSettingHasChanged = 852, 914 | EVREventType_VREvent_ModelSkinSettingsHaveChanged = 853, 915 | EVREventType_VREvent_EnvironmentSettingsHaveChanged = 854, 916 | EVREventType_VREvent_PowerSettingsHaveChanged = 855, 917 | EVREventType_VREvent_EnableHomeAppSettingsHaveChanged = 856, 918 | EVREventType_VREvent_SteamVRSectionSettingChanged = 857, 919 | EVREventType_VREvent_LighthouseSectionSettingChanged = 858, 920 | EVREventType_VREvent_NullSectionSettingChanged = 859, 921 | EVREventType_VREvent_UserInterfaceSectionSettingChanged = 860, 922 | EVREventType_VREvent_NotificationsSectionSettingChanged = 861, 923 | EVREventType_VREvent_KeyboardSectionSettingChanged = 862, 924 | EVREventType_VREvent_PerfSectionSettingChanged = 863, 925 | EVREventType_VREvent_DashboardSectionSettingChanged = 864, 926 | EVREventType_VREvent_WebInterfaceSectionSettingChanged = 865, 927 | EVREventType_VREvent_TrackersSectionSettingChanged = 866, 928 | EVREventType_VREvent_LastKnownSectionSettingChanged = 867, 929 | EVREventType_VREvent_DismissedWarningsSectionSettingChanged = 868, 930 | EVREventType_VREvent_GpuSpeedSectionSettingChanged = 869, 931 | EVREventType_VREvent_WindowsMRSectionSettingChanged = 870, 932 | EVREventType_VREvent_OtherSectionSettingChanged = 871, 933 | EVREventType_VREvent_AnyDriverSettingsChanged = 872, 934 | EVREventType_VREvent_StatusUpdate = 900, 935 | EVREventType_VREvent_WebInterface_InstallDriverCompleted = 950, 936 | EVREventType_VREvent_MCImageUpdated = 1000, 937 | EVREventType_VREvent_FirmwareUpdateStarted = 1100, 938 | EVREventType_VREvent_FirmwareUpdateFinished = 1101, 939 | EVREventType_VREvent_KeyboardClosed = 1200, 940 | EVREventType_VREvent_KeyboardCharInput = 1201, 941 | EVREventType_VREvent_KeyboardDone = 1202, 942 | EVREventType_VREvent_KeyboardOpened_Global = 1203, 943 | EVREventType_VREvent_KeyboardClosed_Global = 1204, 944 | EVREventType_VREvent_ApplicationListUpdated = 1303, 945 | EVREventType_VREvent_ApplicationMimeTypeLoad = 1304, 946 | EVREventType_VREvent_ProcessConnected = 1306, 947 | EVREventType_VREvent_ProcessDisconnected = 1307, 948 | EVREventType_VREvent_Compositor_ChaperoneBoundsShown = 1410, 949 | EVREventType_VREvent_Compositor_ChaperoneBoundsHidden = 1411, 950 | EVREventType_VREvent_Compositor_DisplayDisconnected = 1412, 951 | EVREventType_VREvent_Compositor_DisplayReconnected = 1413, 952 | EVREventType_VREvent_Compositor_HDCPError = 1414, 953 | EVREventType_VREvent_Compositor_ApplicationNotResponding = 1415, 954 | EVREventType_VREvent_Compositor_ApplicationResumed = 1416, 955 | EVREventType_VREvent_Compositor_OutOfVideoMemory = 1417, 956 | EVREventType_VREvent_Compositor_DisplayModeNotSupported = 1418, 957 | EVREventType_VREvent_Compositor_StageOverrideReady = 1419, 958 | EVREventType_VREvent_Compositor_RequestDisconnectReconnect = 1420, 959 | EVREventType_VREvent_TrackedCamera_StartVideoStream = 1500, 960 | EVREventType_VREvent_TrackedCamera_StopVideoStream = 1501, 961 | EVREventType_VREvent_TrackedCamera_PauseVideoStream = 1502, 962 | EVREventType_VREvent_TrackedCamera_ResumeVideoStream = 1503, 963 | EVREventType_VREvent_TrackedCamera_EditingSurface = 1550, 964 | EVREventType_VREvent_PerformanceTest_EnableCapture = 1600, 965 | EVREventType_VREvent_PerformanceTest_DisableCapture = 1601, 966 | EVREventType_VREvent_PerformanceTest_FidelityLevel = 1602, 967 | EVREventType_VREvent_MessageOverlay_Closed = 1650, 968 | EVREventType_VREvent_MessageOverlayCloseRequested = 1651, 969 | EVREventType_VREvent_Input_HapticVibration = 1700, 970 | EVREventType_VREvent_Input_BindingLoadFailed = 1701, 971 | EVREventType_VREvent_Input_BindingLoadSuccessful = 1702, 972 | EVREventType_VREvent_Input_ActionManifestReloaded = 1703, 973 | EVREventType_VREvent_Input_ActionManifestLoadFailed = 1704, 974 | EVREventType_VREvent_Input_ProgressUpdate = 1705, 975 | EVREventType_VREvent_Input_TrackerActivated = 1706, 976 | EVREventType_VREvent_Input_BindingsUpdated = 1707, 977 | EVREventType_VREvent_Input_BindingSubscriptionChanged = 1708, 978 | EVREventType_VREvent_SpatialAnchors_PoseUpdated = 1800, 979 | EVREventType_VREvent_SpatialAnchors_DescriptorUpdated = 1801, 980 | EVREventType_VREvent_SpatialAnchors_RequestPoseUpdate = 1802, 981 | EVREventType_VREvent_SpatialAnchors_RequestDescriptorUpdate = 1803, 982 | EVREventType_VREvent_SystemReport_Started = 1900, 983 | EVREventType_VREvent_Monitor_ShowHeadsetView = 2000, 984 | EVREventType_VREvent_Monitor_HideHeadsetView = 2001, 985 | EVREventType_VREvent_Audio_SetSpeakersVolume = 2100, 986 | EVREventType_VREvent_Audio_SetSpeakersMute = 2101, 987 | EVREventType_VREvent_Audio_SetMicrophoneVolume = 2102, 988 | EVREventType_VREvent_Audio_SetMicrophoneMute = 2103, 989 | EVREventType_VREvent_VendorSpecific_Reserved_Start = 10000, 990 | EVREventType_VREvent_VendorSpecific_Reserved_End = 19999, 991 | } EVREventType; 992 | 993 | typedef enum EDeviceActivityLevel 994 | { 995 | EDeviceActivityLevel_k_EDeviceActivityLevel_Unknown = -1, 996 | EDeviceActivityLevel_k_EDeviceActivityLevel_Idle = 0, 997 | EDeviceActivityLevel_k_EDeviceActivityLevel_UserInteraction = 1, 998 | EDeviceActivityLevel_k_EDeviceActivityLevel_UserInteraction_Timeout = 2, 999 | EDeviceActivityLevel_k_EDeviceActivityLevel_Standby = 3, 1000 | EDeviceActivityLevel_k_EDeviceActivityLevel_Idle_Timeout = 4, 1001 | } EDeviceActivityLevel; 1002 | 1003 | typedef enum EVRButtonId 1004 | { 1005 | EVRButtonId_k_EButton_System = 0, 1006 | EVRButtonId_k_EButton_ApplicationMenu = 1, 1007 | EVRButtonId_k_EButton_Grip = 2, 1008 | EVRButtonId_k_EButton_DPad_Left = 3, 1009 | EVRButtonId_k_EButton_DPad_Up = 4, 1010 | EVRButtonId_k_EButton_DPad_Right = 5, 1011 | EVRButtonId_k_EButton_DPad_Down = 6, 1012 | EVRButtonId_k_EButton_A = 7, 1013 | EVRButtonId_k_EButton_ProximitySensor = 31, 1014 | EVRButtonId_k_EButton_Axis0 = 32, 1015 | EVRButtonId_k_EButton_Axis1 = 33, 1016 | EVRButtonId_k_EButton_Axis2 = 34, 1017 | EVRButtonId_k_EButton_Axis3 = 35, 1018 | EVRButtonId_k_EButton_Axis4 = 36, 1019 | EVRButtonId_k_EButton_SteamVR_Touchpad = 32, 1020 | EVRButtonId_k_EButton_SteamVR_Trigger = 33, 1021 | EVRButtonId_k_EButton_Dashboard_Back = 2, 1022 | EVRButtonId_k_EButton_IndexController_A = 2, 1023 | EVRButtonId_k_EButton_IndexController_B = 1, 1024 | EVRButtonId_k_EButton_IndexController_JoyStick = 35, 1025 | EVRButtonId_k_EButton_Reserved0 = 50, 1026 | EVRButtonId_k_EButton_Reserved1 = 51, 1027 | EVRButtonId_k_EButton_Max = 64, 1028 | } EVRButtonId; 1029 | 1030 | typedef enum EVRMouseButton 1031 | { 1032 | EVRMouseButton_VRMouseButton_Left = 1, 1033 | EVRMouseButton_VRMouseButton_Right = 2, 1034 | EVRMouseButton_VRMouseButton_Middle = 4, 1035 | } EVRMouseButton; 1036 | 1037 | typedef enum EShowUIType 1038 | { 1039 | EShowUIType_ShowUI_ControllerBinding = 0, 1040 | EShowUIType_ShowUI_ManageTrackers = 1, 1041 | EShowUIType_ShowUI_Pairing = 3, 1042 | EShowUIType_ShowUI_Settings = 4, 1043 | EShowUIType_ShowUI_DebugCommands = 5, 1044 | EShowUIType_ShowUI_FullControllerBinding = 6, 1045 | EShowUIType_ShowUI_ManageDrivers = 7, 1046 | } EShowUIType; 1047 | 1048 | typedef enum EHDCPError 1049 | { 1050 | EHDCPError_HDCPError_None = 0, 1051 | EHDCPError_HDCPError_LinkLost = 1, 1052 | EHDCPError_HDCPError_Tampered = 2, 1053 | EHDCPError_HDCPError_DeviceRevoked = 3, 1054 | EHDCPError_HDCPError_Unknown = 4, 1055 | } EHDCPError; 1056 | 1057 | typedef enum EVRComponentProperty 1058 | { 1059 | EVRComponentProperty_VRComponentProperty_IsStatic = 1, 1060 | EVRComponentProperty_VRComponentProperty_IsVisible = 2, 1061 | EVRComponentProperty_VRComponentProperty_IsTouched = 4, 1062 | EVRComponentProperty_VRComponentProperty_IsPressed = 8, 1063 | EVRComponentProperty_VRComponentProperty_IsScrolled = 16, 1064 | EVRComponentProperty_VRComponentProperty_IsHighlighted = 32, 1065 | } EVRComponentProperty; 1066 | 1067 | typedef enum EVRInputError 1068 | { 1069 | EVRInputError_VRInputError_None = 0, 1070 | EVRInputError_VRInputError_NameNotFound = 1, 1071 | EVRInputError_VRInputError_WrongType = 2, 1072 | EVRInputError_VRInputError_InvalidHandle = 3, 1073 | EVRInputError_VRInputError_InvalidParam = 4, 1074 | EVRInputError_VRInputError_NoSteam = 5, 1075 | EVRInputError_VRInputError_MaxCapacityReached = 6, 1076 | EVRInputError_VRInputError_IPCError = 7, 1077 | EVRInputError_VRInputError_NoActiveActionSet = 8, 1078 | EVRInputError_VRInputError_InvalidDevice = 9, 1079 | EVRInputError_VRInputError_InvalidSkeleton = 10, 1080 | EVRInputError_VRInputError_InvalidBoneCount = 11, 1081 | EVRInputError_VRInputError_InvalidCompressedData = 12, 1082 | EVRInputError_VRInputError_NoData = 13, 1083 | EVRInputError_VRInputError_BufferTooSmall = 14, 1084 | EVRInputError_VRInputError_MismatchedActionManifest = 15, 1085 | EVRInputError_VRInputError_MissingSkeletonData = 16, 1086 | EVRInputError_VRInputError_InvalidBoneIndex = 17, 1087 | EVRInputError_VRInputError_InvalidPriority = 18, 1088 | EVRInputError_VRInputError_PermissionDenied = 19, 1089 | EVRInputError_VRInputError_InvalidRenderModel = 20, 1090 | } EVRInputError; 1091 | 1092 | typedef enum EVRSpatialAnchorError 1093 | { 1094 | EVRSpatialAnchorError_VRSpatialAnchorError_Success = 0, 1095 | EVRSpatialAnchorError_VRSpatialAnchorError_Internal = 1, 1096 | EVRSpatialAnchorError_VRSpatialAnchorError_UnknownHandle = 2, 1097 | EVRSpatialAnchorError_VRSpatialAnchorError_ArrayTooSmall = 3, 1098 | EVRSpatialAnchorError_VRSpatialAnchorError_InvalidDescriptorChar = 4, 1099 | EVRSpatialAnchorError_VRSpatialAnchorError_NotYetAvailable = 5, 1100 | EVRSpatialAnchorError_VRSpatialAnchorError_NotAvailableInThisUniverse = 6, 1101 | EVRSpatialAnchorError_VRSpatialAnchorError_PermanentlyUnavailable = 7, 1102 | EVRSpatialAnchorError_VRSpatialAnchorError_WrongDriver = 8, 1103 | EVRSpatialAnchorError_VRSpatialAnchorError_DescriptorTooLong = 9, 1104 | EVRSpatialAnchorError_VRSpatialAnchorError_Unknown = 10, 1105 | EVRSpatialAnchorError_VRSpatialAnchorError_NoRoomCalibration = 11, 1106 | EVRSpatialAnchorError_VRSpatialAnchorError_InvalidArgument = 12, 1107 | EVRSpatialAnchorError_VRSpatialAnchorError_UnknownDriver = 13, 1108 | } EVRSpatialAnchorError; 1109 | 1110 | typedef enum EHiddenAreaMeshType 1111 | { 1112 | EHiddenAreaMeshType_k_eHiddenAreaMesh_Standard = 0, 1113 | EHiddenAreaMeshType_k_eHiddenAreaMesh_Inverse = 1, 1114 | EHiddenAreaMeshType_k_eHiddenAreaMesh_LineLoop = 2, 1115 | EHiddenAreaMeshType_k_eHiddenAreaMesh_Max = 3, 1116 | } EHiddenAreaMeshType; 1117 | 1118 | typedef enum EVRControllerAxisType 1119 | { 1120 | EVRControllerAxisType_k_eControllerAxis_None = 0, 1121 | EVRControllerAxisType_k_eControllerAxis_TrackPad = 1, 1122 | EVRControllerAxisType_k_eControllerAxis_Joystick = 2, 1123 | EVRControllerAxisType_k_eControllerAxis_Trigger = 3, 1124 | } EVRControllerAxisType; 1125 | 1126 | typedef enum EVRControllerEventOutputType 1127 | { 1128 | EVRControllerEventOutputType_ControllerEventOutput_OSEvents = 0, 1129 | EVRControllerEventOutputType_ControllerEventOutput_VREvents = 1, 1130 | } EVRControllerEventOutputType; 1131 | 1132 | typedef enum ECollisionBoundsStyle 1133 | { 1134 | ECollisionBoundsStyle_COLLISION_BOUNDS_STYLE_BEGINNER = 0, 1135 | ECollisionBoundsStyle_COLLISION_BOUNDS_STYLE_INTERMEDIATE = 1, 1136 | ECollisionBoundsStyle_COLLISION_BOUNDS_STYLE_SQUARES = 2, 1137 | ECollisionBoundsStyle_COLLISION_BOUNDS_STYLE_ADVANCED = 3, 1138 | ECollisionBoundsStyle_COLLISION_BOUNDS_STYLE_NONE = 4, 1139 | ECollisionBoundsStyle_COLLISION_BOUNDS_STYLE_COUNT = 5, 1140 | } ECollisionBoundsStyle; 1141 | 1142 | typedef enum EVROverlayError 1143 | { 1144 | EVROverlayError_VROverlayError_None = 0, 1145 | EVROverlayError_VROverlayError_UnknownOverlay = 10, 1146 | EVROverlayError_VROverlayError_InvalidHandle = 11, 1147 | EVROverlayError_VROverlayError_PermissionDenied = 12, 1148 | EVROverlayError_VROverlayError_OverlayLimitExceeded = 13, 1149 | EVROverlayError_VROverlayError_WrongVisibilityType = 14, 1150 | EVROverlayError_VROverlayError_KeyTooLong = 15, 1151 | EVROverlayError_VROverlayError_NameTooLong = 16, 1152 | EVROverlayError_VROverlayError_KeyInUse = 17, 1153 | EVROverlayError_VROverlayError_WrongTransformType = 18, 1154 | EVROverlayError_VROverlayError_InvalidTrackedDevice = 19, 1155 | EVROverlayError_VROverlayError_InvalidParameter = 20, 1156 | EVROverlayError_VROverlayError_ThumbnailCantBeDestroyed = 21, 1157 | EVROverlayError_VROverlayError_ArrayTooSmall = 22, 1158 | EVROverlayError_VROverlayError_RequestFailed = 23, 1159 | EVROverlayError_VROverlayError_InvalidTexture = 24, 1160 | EVROverlayError_VROverlayError_UnableToLoadFile = 25, 1161 | EVROverlayError_VROverlayError_KeyboardAlreadyInUse = 26, 1162 | EVROverlayError_VROverlayError_NoNeighbor = 27, 1163 | EVROverlayError_VROverlayError_TooManyMaskPrimitives = 29, 1164 | EVROverlayError_VROverlayError_BadMaskPrimitive = 30, 1165 | EVROverlayError_VROverlayError_TextureAlreadyLocked = 31, 1166 | EVROverlayError_VROverlayError_TextureLockCapacityReached = 32, 1167 | EVROverlayError_VROverlayError_TextureNotLocked = 33, 1168 | EVROverlayError_VROverlayError_TimedOut = 34, 1169 | } EVROverlayError; 1170 | 1171 | typedef enum EVRApplicationType 1172 | { 1173 | EVRApplicationType_VRApplication_Other = 0, 1174 | EVRApplicationType_VRApplication_Scene = 1, 1175 | EVRApplicationType_VRApplication_Overlay = 2, 1176 | EVRApplicationType_VRApplication_Background = 3, 1177 | EVRApplicationType_VRApplication_Utility = 4, 1178 | EVRApplicationType_VRApplication_VRMonitor = 5, 1179 | EVRApplicationType_VRApplication_SteamWatchdog = 6, 1180 | EVRApplicationType_VRApplication_Bootstrapper = 7, 1181 | EVRApplicationType_VRApplication_WebHelper = 8, 1182 | EVRApplicationType_VRApplication_OpenXRInstance = 9, 1183 | EVRApplicationType_VRApplication_OpenXRScene = 10, 1184 | EVRApplicationType_VRApplication_OpenXROverlay = 11, 1185 | EVRApplicationType_VRApplication_Prism = 12, 1186 | EVRApplicationType_VRApplication_RoomView = 13, 1187 | EVRApplicationType_VRApplication_Max = 14, 1188 | } EVRApplicationType; 1189 | 1190 | typedef enum EVRFirmwareError 1191 | { 1192 | EVRFirmwareError_VRFirmwareError_None = 0, 1193 | EVRFirmwareError_VRFirmwareError_Success = 1, 1194 | EVRFirmwareError_VRFirmwareError_Fail = 2, 1195 | } EVRFirmwareError; 1196 | 1197 | typedef enum EVRNotificationError 1198 | { 1199 | EVRNotificationError_VRNotificationError_OK = 0, 1200 | EVRNotificationError_VRNotificationError_InvalidNotificationId = 100, 1201 | EVRNotificationError_VRNotificationError_NotificationQueueFull = 101, 1202 | EVRNotificationError_VRNotificationError_InvalidOverlayHandle = 102, 1203 | EVRNotificationError_VRNotificationError_SystemWithUserValueAlreadyExists = 103, 1204 | EVRNotificationError_VRNotificationError_ServiceUnavailable = 104, 1205 | } EVRNotificationError; 1206 | 1207 | typedef enum EVRSkeletalMotionRange 1208 | { 1209 | EVRSkeletalMotionRange_VRSkeletalMotionRange_WithController = 0, 1210 | EVRSkeletalMotionRange_VRSkeletalMotionRange_WithoutController = 1, 1211 | } EVRSkeletalMotionRange; 1212 | 1213 | typedef enum EVRSkeletalTrackingLevel 1214 | { 1215 | EVRSkeletalTrackingLevel_VRSkeletalTracking_Estimated = 0, 1216 | EVRSkeletalTrackingLevel_VRSkeletalTracking_Partial = 1, 1217 | EVRSkeletalTrackingLevel_VRSkeletalTracking_Full = 2, 1218 | EVRSkeletalTrackingLevel_VRSkeletalTrackingLevel_Count = 3, 1219 | EVRSkeletalTrackingLevel_VRSkeletalTrackingLevel_Max = 2, 1220 | } EVRSkeletalTrackingLevel; 1221 | 1222 | typedef enum EVRInitError 1223 | { 1224 | EVRInitError_VRInitError_None = 0, 1225 | EVRInitError_VRInitError_Unknown = 1, 1226 | EVRInitError_VRInitError_Init_InstallationNotFound = 100, 1227 | EVRInitError_VRInitError_Init_InstallationCorrupt = 101, 1228 | EVRInitError_VRInitError_Init_VRClientDLLNotFound = 102, 1229 | EVRInitError_VRInitError_Init_FileNotFound = 103, 1230 | EVRInitError_VRInitError_Init_FactoryNotFound = 104, 1231 | EVRInitError_VRInitError_Init_InterfaceNotFound = 105, 1232 | EVRInitError_VRInitError_Init_InvalidInterface = 106, 1233 | EVRInitError_VRInitError_Init_UserConfigDirectoryInvalid = 107, 1234 | EVRInitError_VRInitError_Init_HmdNotFound = 108, 1235 | EVRInitError_VRInitError_Init_NotInitialized = 109, 1236 | EVRInitError_VRInitError_Init_PathRegistryNotFound = 110, 1237 | EVRInitError_VRInitError_Init_NoConfigPath = 111, 1238 | EVRInitError_VRInitError_Init_NoLogPath = 112, 1239 | EVRInitError_VRInitError_Init_PathRegistryNotWritable = 113, 1240 | EVRInitError_VRInitError_Init_AppInfoInitFailed = 114, 1241 | EVRInitError_VRInitError_Init_Retry = 115, 1242 | EVRInitError_VRInitError_Init_InitCanceledByUser = 116, 1243 | EVRInitError_VRInitError_Init_AnotherAppLaunching = 117, 1244 | EVRInitError_VRInitError_Init_SettingsInitFailed = 118, 1245 | EVRInitError_VRInitError_Init_ShuttingDown = 119, 1246 | EVRInitError_VRInitError_Init_TooManyObjects = 120, 1247 | EVRInitError_VRInitError_Init_NoServerForBackgroundApp = 121, 1248 | EVRInitError_VRInitError_Init_NotSupportedWithCompositor = 122, 1249 | EVRInitError_VRInitError_Init_NotAvailableToUtilityApps = 123, 1250 | EVRInitError_VRInitError_Init_Internal = 124, 1251 | EVRInitError_VRInitError_Init_HmdDriverIdIsNone = 125, 1252 | EVRInitError_VRInitError_Init_HmdNotFoundPresenceFailed = 126, 1253 | EVRInitError_VRInitError_Init_VRMonitorNotFound = 127, 1254 | EVRInitError_VRInitError_Init_VRMonitorStartupFailed = 128, 1255 | EVRInitError_VRInitError_Init_LowPowerWatchdogNotSupported = 129, 1256 | EVRInitError_VRInitError_Init_InvalidApplicationType = 130, 1257 | EVRInitError_VRInitError_Init_NotAvailableToWatchdogApps = 131, 1258 | EVRInitError_VRInitError_Init_WatchdogDisabledInSettings = 132, 1259 | EVRInitError_VRInitError_Init_VRDashboardNotFound = 133, 1260 | EVRInitError_VRInitError_Init_VRDashboardStartupFailed = 134, 1261 | EVRInitError_VRInitError_Init_VRHomeNotFound = 135, 1262 | EVRInitError_VRInitError_Init_VRHomeStartupFailed = 136, 1263 | EVRInitError_VRInitError_Init_RebootingBusy = 137, 1264 | EVRInitError_VRInitError_Init_FirmwareUpdateBusy = 138, 1265 | EVRInitError_VRInitError_Init_FirmwareRecoveryBusy = 139, 1266 | EVRInitError_VRInitError_Init_USBServiceBusy = 140, 1267 | EVRInitError_VRInitError_Init_VRWebHelperStartupFailed = 141, 1268 | EVRInitError_VRInitError_Init_TrackerManagerInitFailed = 142, 1269 | EVRInitError_VRInitError_Init_AlreadyRunning = 143, 1270 | EVRInitError_VRInitError_Init_FailedForVrMonitor = 144, 1271 | EVRInitError_VRInitError_Init_PropertyManagerInitFailed = 145, 1272 | EVRInitError_VRInitError_Init_WebServerFailed = 146, 1273 | EVRInitError_VRInitError_Init_IllegalTypeTransition = 147, 1274 | EVRInitError_VRInitError_Init_MismatchedRuntimes = 148, 1275 | EVRInitError_VRInitError_Init_InvalidProcessId = 149, 1276 | EVRInitError_VRInitError_Init_VRServiceStartupFailed = 150, 1277 | EVRInitError_VRInitError_Init_PrismNeedsNewDrivers = 151, 1278 | EVRInitError_VRInitError_Init_PrismStartupTimedOut = 152, 1279 | EVRInitError_VRInitError_Init_CouldNotStartPrism = 153, 1280 | EVRInitError_VRInitError_Init_PrismClientInitFailed = 154, 1281 | EVRInitError_VRInitError_Init_PrismClientStartFailed = 155, 1282 | EVRInitError_VRInitError_Init_PrismExitedUnexpectedly = 156, 1283 | EVRInitError_VRInitError_Init_BadLuid = 157, 1284 | EVRInitError_VRInitError_Init_NoServerForAppContainer = 158, 1285 | EVRInitError_VRInitError_Init_DuplicateBootstrapper = 159, 1286 | EVRInitError_VRInitError_Init_VRDashboardServicePending = 160, 1287 | EVRInitError_VRInitError_Init_VRDashboardServiceTimeout = 161, 1288 | EVRInitError_VRInitError_Init_VRDashboardServiceStopped = 162, 1289 | EVRInitError_VRInitError_Init_VRDashboardAlreadyStarted = 163, 1290 | EVRInitError_VRInitError_Init_VRDashboardCopyFailed = 164, 1291 | EVRInitError_VRInitError_Init_VRDashboardTokenFailure = 165, 1292 | EVRInitError_VRInitError_Init_VRDashboardEnvironmentFailure = 166, 1293 | EVRInitError_VRInitError_Init_VRDashboardPathFailure = 167, 1294 | EVRInitError_VRInitError_Driver_Failed = 200, 1295 | EVRInitError_VRInitError_Driver_Unknown = 201, 1296 | EVRInitError_VRInitError_Driver_HmdUnknown = 202, 1297 | EVRInitError_VRInitError_Driver_NotLoaded = 203, 1298 | EVRInitError_VRInitError_Driver_RuntimeOutOfDate = 204, 1299 | EVRInitError_VRInitError_Driver_HmdInUse = 205, 1300 | EVRInitError_VRInitError_Driver_NotCalibrated = 206, 1301 | EVRInitError_VRInitError_Driver_CalibrationInvalid = 207, 1302 | EVRInitError_VRInitError_Driver_HmdDisplayNotFound = 208, 1303 | EVRInitError_VRInitError_Driver_TrackedDeviceInterfaceUnknown = 209, 1304 | EVRInitError_VRInitError_Driver_HmdDriverIdOutOfBounds = 211, 1305 | EVRInitError_VRInitError_Driver_HmdDisplayMirrored = 212, 1306 | EVRInitError_VRInitError_Driver_HmdDisplayNotFoundLaptop = 213, 1307 | EVRInitError_VRInitError_Driver_PeerDriverNotInstalled = 214, 1308 | EVRInitError_VRInitError_Driver_WirelessHmdNotConnected = 215, 1309 | EVRInitError_VRInitError_IPC_ServerInitFailed = 300, 1310 | EVRInitError_VRInitError_IPC_ConnectFailed = 301, 1311 | EVRInitError_VRInitError_IPC_SharedStateInitFailed = 302, 1312 | EVRInitError_VRInitError_IPC_CompositorInitFailed = 303, 1313 | EVRInitError_VRInitError_IPC_MutexInitFailed = 304, 1314 | EVRInitError_VRInitError_IPC_Failed = 305, 1315 | EVRInitError_VRInitError_IPC_CompositorConnectFailed = 306, 1316 | EVRInitError_VRInitError_IPC_CompositorInvalidConnectResponse = 307, 1317 | EVRInitError_VRInitError_IPC_ConnectFailedAfterMultipleAttempts = 308, 1318 | EVRInitError_VRInitError_IPC_ConnectFailedAfterTargetExited = 309, 1319 | EVRInitError_VRInitError_IPC_NamespaceUnavailable = 310, 1320 | EVRInitError_VRInitError_Compositor_Failed = 400, 1321 | EVRInitError_VRInitError_Compositor_D3D11HardwareRequired = 401, 1322 | EVRInitError_VRInitError_Compositor_FirmwareRequiresUpdate = 402, 1323 | EVRInitError_VRInitError_Compositor_OverlayInitFailed = 403, 1324 | EVRInitError_VRInitError_Compositor_ScreenshotsInitFailed = 404, 1325 | EVRInitError_VRInitError_Compositor_UnableToCreateDevice = 405, 1326 | EVRInitError_VRInitError_Compositor_SharedStateIsNull = 406, 1327 | EVRInitError_VRInitError_Compositor_NotificationManagerIsNull = 407, 1328 | EVRInitError_VRInitError_Compositor_ResourceManagerClientIsNull = 408, 1329 | EVRInitError_VRInitError_Compositor_MessageOverlaySharedStateInitFailure = 409, 1330 | EVRInitError_VRInitError_Compositor_PropertiesInterfaceIsNull = 410, 1331 | EVRInitError_VRInitError_Compositor_CreateFullscreenWindowFailed = 411, 1332 | EVRInitError_VRInitError_Compositor_SettingsInterfaceIsNull = 412, 1333 | EVRInitError_VRInitError_Compositor_FailedToShowWindow = 413, 1334 | EVRInitError_VRInitError_Compositor_DistortInterfaceIsNull = 414, 1335 | EVRInitError_VRInitError_Compositor_DisplayFrequencyFailure = 415, 1336 | EVRInitError_VRInitError_Compositor_RendererInitializationFailed = 416, 1337 | EVRInitError_VRInitError_Compositor_DXGIFactoryInterfaceIsNull = 417, 1338 | EVRInitError_VRInitError_Compositor_DXGIFactoryCreateFailed = 418, 1339 | EVRInitError_VRInitError_Compositor_DXGIFactoryQueryFailed = 419, 1340 | EVRInitError_VRInitError_Compositor_InvalidAdapterDesktop = 420, 1341 | EVRInitError_VRInitError_Compositor_InvalidHmdAttachment = 421, 1342 | EVRInitError_VRInitError_Compositor_InvalidOutputDesktop = 422, 1343 | EVRInitError_VRInitError_Compositor_InvalidDeviceProvided = 423, 1344 | EVRInitError_VRInitError_Compositor_D3D11RendererInitializationFailed = 424, 1345 | EVRInitError_VRInitError_Compositor_FailedToFindDisplayMode = 425, 1346 | EVRInitError_VRInitError_Compositor_FailedToCreateSwapChain = 426, 1347 | EVRInitError_VRInitError_Compositor_FailedToGetBackBuffer = 427, 1348 | EVRInitError_VRInitError_Compositor_FailedToCreateRenderTarget = 428, 1349 | EVRInitError_VRInitError_Compositor_FailedToCreateDXGI2SwapChain = 429, 1350 | EVRInitError_VRInitError_Compositor_FailedtoGetDXGI2BackBuffer = 430, 1351 | EVRInitError_VRInitError_Compositor_FailedToCreateDXGI2RenderTarget = 431, 1352 | EVRInitError_VRInitError_Compositor_FailedToGetDXGIDeviceInterface = 432, 1353 | EVRInitError_VRInitError_Compositor_SelectDisplayMode = 433, 1354 | EVRInitError_VRInitError_Compositor_FailedToCreateNvAPIRenderTargets = 434, 1355 | EVRInitError_VRInitError_Compositor_NvAPISetDisplayMode = 435, 1356 | EVRInitError_VRInitError_Compositor_FailedToCreateDirectModeDisplay = 436, 1357 | EVRInitError_VRInitError_Compositor_InvalidHmdPropertyContainer = 437, 1358 | EVRInitError_VRInitError_Compositor_UpdateDisplayFrequency = 438, 1359 | EVRInitError_VRInitError_Compositor_CreateRasterizerState = 439, 1360 | EVRInitError_VRInitError_Compositor_CreateWireframeRasterizerState = 440, 1361 | EVRInitError_VRInitError_Compositor_CreateSamplerState = 441, 1362 | EVRInitError_VRInitError_Compositor_CreateClampToBorderSamplerState = 442, 1363 | EVRInitError_VRInitError_Compositor_CreateAnisoSamplerState = 443, 1364 | EVRInitError_VRInitError_Compositor_CreateOverlaySamplerState = 444, 1365 | EVRInitError_VRInitError_Compositor_CreatePanoramaSamplerState = 445, 1366 | EVRInitError_VRInitError_Compositor_CreateFontSamplerState = 446, 1367 | EVRInitError_VRInitError_Compositor_CreateNoBlendState = 447, 1368 | EVRInitError_VRInitError_Compositor_CreateBlendState = 448, 1369 | EVRInitError_VRInitError_Compositor_CreateAlphaBlendState = 449, 1370 | EVRInitError_VRInitError_Compositor_CreateBlendStateMaskR = 450, 1371 | EVRInitError_VRInitError_Compositor_CreateBlendStateMaskG = 451, 1372 | EVRInitError_VRInitError_Compositor_CreateBlendStateMaskB = 452, 1373 | EVRInitError_VRInitError_Compositor_CreateDepthStencilState = 453, 1374 | EVRInitError_VRInitError_Compositor_CreateDepthStencilStateNoWrite = 454, 1375 | EVRInitError_VRInitError_Compositor_CreateDepthStencilStateNoDepth = 455, 1376 | EVRInitError_VRInitError_Compositor_CreateFlushTexture = 456, 1377 | EVRInitError_VRInitError_Compositor_CreateDistortionSurfaces = 457, 1378 | EVRInitError_VRInitError_Compositor_CreateConstantBuffer = 458, 1379 | EVRInitError_VRInitError_Compositor_CreateHmdPoseConstantBuffer = 459, 1380 | EVRInitError_VRInitError_Compositor_CreateHmdPoseStagingConstantBuffer = 460, 1381 | EVRInitError_VRInitError_Compositor_CreateSharedFrameInfoConstantBuffer = 461, 1382 | EVRInitError_VRInitError_Compositor_CreateOverlayConstantBuffer = 462, 1383 | EVRInitError_VRInitError_Compositor_CreateSceneTextureIndexConstantBuffer = 463, 1384 | EVRInitError_VRInitError_Compositor_CreateReadableSceneTextureIndexConstantBuffer = 464, 1385 | EVRInitError_VRInitError_Compositor_CreateLayerGraphicsTextureIndexConstantBuffer = 465, 1386 | EVRInitError_VRInitError_Compositor_CreateLayerComputeTextureIndexConstantBuffer = 466, 1387 | EVRInitError_VRInitError_Compositor_CreateLayerComputeSceneTextureIndexConstantBuffer = 467, 1388 | EVRInitError_VRInitError_Compositor_CreateComputeHmdPoseConstantBuffer = 468, 1389 | EVRInitError_VRInitError_Compositor_CreateGeomConstantBuffer = 469, 1390 | EVRInitError_VRInitError_Compositor_CreatePanelMaskConstantBuffer = 470, 1391 | EVRInitError_VRInitError_Compositor_CreatePixelSimUBO = 471, 1392 | EVRInitError_VRInitError_Compositor_CreateMSAARenderTextures = 472, 1393 | EVRInitError_VRInitError_Compositor_CreateResolveRenderTextures = 473, 1394 | EVRInitError_VRInitError_Compositor_CreateComputeResolveRenderTextures = 474, 1395 | EVRInitError_VRInitError_Compositor_CreateDriverDirectModeResolveTextures = 475, 1396 | EVRInitError_VRInitError_Compositor_OpenDriverDirectModeResolveTextures = 476, 1397 | EVRInitError_VRInitError_Compositor_CreateFallbackSyncTexture = 477, 1398 | EVRInitError_VRInitError_Compositor_ShareFallbackSyncTexture = 478, 1399 | EVRInitError_VRInitError_Compositor_CreateOverlayIndexBuffer = 479, 1400 | EVRInitError_VRInitError_Compositor_CreateOverlayVertexBuffer = 480, 1401 | EVRInitError_VRInitError_Compositor_CreateTextVertexBuffer = 481, 1402 | EVRInitError_VRInitError_Compositor_CreateTextIndexBuffer = 482, 1403 | EVRInitError_VRInitError_Compositor_CreateMirrorTextures = 483, 1404 | EVRInitError_VRInitError_Compositor_CreateLastFrameRenderTexture = 484, 1405 | EVRInitError_VRInitError_Compositor_CreateMirrorOverlay = 485, 1406 | EVRInitError_VRInitError_Compositor_FailedToCreateVirtualDisplayBackbuffer = 486, 1407 | EVRInitError_VRInitError_Compositor_DisplayModeNotSupported = 487, 1408 | EVRInitError_VRInitError_Compositor_CreateOverlayInvalidCall = 488, 1409 | EVRInitError_VRInitError_Compositor_CreateOverlayAlreadyInitialized = 489, 1410 | EVRInitError_VRInitError_Compositor_FailedToCreateMailbox = 490, 1411 | EVRInitError_VRInitError_Compositor_WindowInterfaceIsNull = 491, 1412 | EVRInitError_VRInitError_Compositor_SystemLayerCreateInstance = 492, 1413 | EVRInitError_VRInitError_Compositor_SystemLayerCreateSession = 493, 1414 | EVRInitError_VRInitError_Compositor_CreateInverseDistortUVs = 494, 1415 | EVRInitError_VRInitError_Compositor_CreateBackbufferDepth = 495, 1416 | EVRInitError_VRInitError_Compositor_CannotDRMLeaseDisplay = 496, 1417 | EVRInitError_VRInitError_Compositor_CannotConnectToDisplayServer = 497, 1418 | EVRInitError_VRInitError_Compositor_GnomeNoDRMLeasing = 498, 1419 | EVRInitError_VRInitError_Compositor_FailedToInitializeEncoder = 499, 1420 | EVRInitError_VRInitError_Compositor_CreateBlurTexture = 500, 1421 | EVRInitError_VRInitError_VendorSpecific_UnableToConnectToOculusRuntime = 1000, 1422 | EVRInitError_VRInitError_VendorSpecific_WindowsNotInDevMode = 1001, 1423 | EVRInitError_VRInitError_VendorSpecific_OculusLinkNotEnabled = 1002, 1424 | EVRInitError_VRInitError_VendorSpecific_HmdFound_CantOpenDevice = 1101, 1425 | EVRInitError_VRInitError_VendorSpecific_HmdFound_UnableToRequestConfigStart = 1102, 1426 | EVRInitError_VRInitError_VendorSpecific_HmdFound_NoStoredConfig = 1103, 1427 | EVRInitError_VRInitError_VendorSpecific_HmdFound_ConfigTooBig = 1104, 1428 | EVRInitError_VRInitError_VendorSpecific_HmdFound_ConfigTooSmall = 1105, 1429 | EVRInitError_VRInitError_VendorSpecific_HmdFound_UnableToInitZLib = 1106, 1430 | EVRInitError_VRInitError_VendorSpecific_HmdFound_CantReadFirmwareVersion = 1107, 1431 | EVRInitError_VRInitError_VendorSpecific_HmdFound_UnableToSendUserDataStart = 1108, 1432 | EVRInitError_VRInitError_VendorSpecific_HmdFound_UnableToGetUserDataStart = 1109, 1433 | EVRInitError_VRInitError_VendorSpecific_HmdFound_UnableToGetUserDataNext = 1110, 1434 | EVRInitError_VRInitError_VendorSpecific_HmdFound_UserDataAddressRange = 1111, 1435 | EVRInitError_VRInitError_VendorSpecific_HmdFound_UserDataError = 1112, 1436 | EVRInitError_VRInitError_VendorSpecific_HmdFound_ConfigFailedSanityCheck = 1113, 1437 | EVRInitError_VRInitError_VendorSpecific_OculusRuntimeBadInstall = 1114, 1438 | EVRInitError_VRInitError_VendorSpecific_HmdFound_UnexpectedConfiguration_1 = 1115, 1439 | EVRInitError_VRInitError_Steam_SteamInstallationNotFound = 2000, 1440 | EVRInitError_VRInitError_LastError = 2001, 1441 | } EVRInitError; 1442 | 1443 | typedef enum EVRScreenshotType 1444 | { 1445 | EVRScreenshotType_VRScreenshotType_None = 0, 1446 | EVRScreenshotType_VRScreenshotType_Mono = 1, 1447 | EVRScreenshotType_VRScreenshotType_Stereo = 2, 1448 | EVRScreenshotType_VRScreenshotType_Cubemap = 3, 1449 | EVRScreenshotType_VRScreenshotType_MonoPanorama = 4, 1450 | EVRScreenshotType_VRScreenshotType_StereoPanorama = 5, 1451 | } EVRScreenshotType; 1452 | 1453 | typedef enum EVRScreenshotPropertyFilenames 1454 | { 1455 | EVRScreenshotPropertyFilenames_VRScreenshotPropertyFilenames_Preview = 0, 1456 | EVRScreenshotPropertyFilenames_VRScreenshotPropertyFilenames_VR = 1, 1457 | } EVRScreenshotPropertyFilenames; 1458 | 1459 | typedef enum EVRTrackedCameraError 1460 | { 1461 | EVRTrackedCameraError_VRTrackedCameraError_None = 0, 1462 | EVRTrackedCameraError_VRTrackedCameraError_OperationFailed = 100, 1463 | EVRTrackedCameraError_VRTrackedCameraError_InvalidHandle = 101, 1464 | EVRTrackedCameraError_VRTrackedCameraError_InvalidFrameHeaderVersion = 102, 1465 | EVRTrackedCameraError_VRTrackedCameraError_OutOfHandles = 103, 1466 | EVRTrackedCameraError_VRTrackedCameraError_IPCFailure = 104, 1467 | EVRTrackedCameraError_VRTrackedCameraError_NotSupportedForThisDevice = 105, 1468 | EVRTrackedCameraError_VRTrackedCameraError_SharedMemoryFailure = 106, 1469 | EVRTrackedCameraError_VRTrackedCameraError_FrameBufferingFailure = 107, 1470 | EVRTrackedCameraError_VRTrackedCameraError_StreamSetupFailure = 108, 1471 | EVRTrackedCameraError_VRTrackedCameraError_InvalidGLTextureId = 109, 1472 | EVRTrackedCameraError_VRTrackedCameraError_InvalidSharedTextureHandle = 110, 1473 | EVRTrackedCameraError_VRTrackedCameraError_FailedToGetGLTextureId = 111, 1474 | EVRTrackedCameraError_VRTrackedCameraError_SharedTextureFailure = 112, 1475 | EVRTrackedCameraError_VRTrackedCameraError_NoFrameAvailable = 113, 1476 | EVRTrackedCameraError_VRTrackedCameraError_InvalidArgument = 114, 1477 | EVRTrackedCameraError_VRTrackedCameraError_InvalidFrameBufferSize = 115, 1478 | } EVRTrackedCameraError; 1479 | 1480 | typedef enum EVRTrackedCameraFrameLayout 1481 | { 1482 | EVRTrackedCameraFrameLayout_Mono = 1, 1483 | EVRTrackedCameraFrameLayout_Stereo = 2, 1484 | EVRTrackedCameraFrameLayout_VerticalLayout = 16, 1485 | EVRTrackedCameraFrameLayout_HorizontalLayout = 32, 1486 | } EVRTrackedCameraFrameLayout; 1487 | 1488 | typedef enum EVRTrackedCameraFrameType 1489 | { 1490 | EVRTrackedCameraFrameType_VRTrackedCameraFrameType_Distorted = 0, 1491 | EVRTrackedCameraFrameType_VRTrackedCameraFrameType_Undistorted = 1, 1492 | EVRTrackedCameraFrameType_VRTrackedCameraFrameType_MaximumUndistorted = 2, 1493 | EVRTrackedCameraFrameType_MAX_CAMERA_FRAME_TYPES = 3, 1494 | } EVRTrackedCameraFrameType; 1495 | 1496 | typedef enum EVRDistortionFunctionType 1497 | { 1498 | EVRDistortionFunctionType_VRDistortionFunctionType_None = 0, 1499 | EVRDistortionFunctionType_VRDistortionFunctionType_FTheta = 1, 1500 | EVRDistortionFunctionType_VRDistortionFunctionType_Extended_FTheta = 2, 1501 | EVRDistortionFunctionType_MAX_DISTORTION_FUNCTION_TYPES = 3, 1502 | } EVRDistortionFunctionType; 1503 | 1504 | typedef enum EVSync 1505 | { 1506 | EVSync_VSync_None = 0, 1507 | EVSync_VSync_WaitRender = 1, 1508 | EVSync_VSync_NoWaitRender = 2, 1509 | } EVSync; 1510 | 1511 | typedef enum EVRMuraCorrectionMode 1512 | { 1513 | EVRMuraCorrectionMode_Default = 0, 1514 | EVRMuraCorrectionMode_NoCorrection = 1, 1515 | } EVRMuraCorrectionMode; 1516 | 1517 | typedef enum Imu_OffScaleFlags 1518 | { 1519 | Imu_OffScaleFlags_OffScale_AccelX = 1, 1520 | Imu_OffScaleFlags_OffScale_AccelY = 2, 1521 | Imu_OffScaleFlags_OffScale_AccelZ = 4, 1522 | Imu_OffScaleFlags_OffScale_GyroX = 8, 1523 | Imu_OffScaleFlags_OffScale_GyroY = 16, 1524 | Imu_OffScaleFlags_OffScale_GyroZ = 32, 1525 | } Imu_OffScaleFlags; 1526 | 1527 | typedef enum EVRApplicationError 1528 | { 1529 | EVRApplicationError_VRApplicationError_None = 0, 1530 | EVRApplicationError_VRApplicationError_AppKeyAlreadyExists = 100, 1531 | EVRApplicationError_VRApplicationError_NoManifest = 101, 1532 | EVRApplicationError_VRApplicationError_NoApplication = 102, 1533 | EVRApplicationError_VRApplicationError_InvalidIndex = 103, 1534 | EVRApplicationError_VRApplicationError_UnknownApplication = 104, 1535 | EVRApplicationError_VRApplicationError_IPCFailed = 105, 1536 | EVRApplicationError_VRApplicationError_ApplicationAlreadyRunning = 106, 1537 | EVRApplicationError_VRApplicationError_InvalidManifest = 107, 1538 | EVRApplicationError_VRApplicationError_InvalidApplication = 108, 1539 | EVRApplicationError_VRApplicationError_LaunchFailed = 109, 1540 | EVRApplicationError_VRApplicationError_ApplicationAlreadyStarting = 110, 1541 | EVRApplicationError_VRApplicationError_LaunchInProgress = 111, 1542 | EVRApplicationError_VRApplicationError_OldApplicationQuitting = 112, 1543 | EVRApplicationError_VRApplicationError_TransitionAborted = 113, 1544 | EVRApplicationError_VRApplicationError_IsTemplate = 114, 1545 | EVRApplicationError_VRApplicationError_SteamVRIsExiting = 115, 1546 | EVRApplicationError_VRApplicationError_BufferTooSmall = 200, 1547 | EVRApplicationError_VRApplicationError_PropertyNotSet = 201, 1548 | EVRApplicationError_VRApplicationError_UnknownProperty = 202, 1549 | EVRApplicationError_VRApplicationError_InvalidParameter = 203, 1550 | EVRApplicationError_VRApplicationError_NotImplemented = 300, 1551 | } EVRApplicationError; 1552 | 1553 | typedef enum EVRApplicationProperty 1554 | { 1555 | EVRApplicationProperty_VRApplicationProperty_Name_String = 0, 1556 | EVRApplicationProperty_VRApplicationProperty_LaunchType_String = 11, 1557 | EVRApplicationProperty_VRApplicationProperty_WorkingDirectory_String = 12, 1558 | EVRApplicationProperty_VRApplicationProperty_BinaryPath_String = 13, 1559 | EVRApplicationProperty_VRApplicationProperty_Arguments_String = 14, 1560 | EVRApplicationProperty_VRApplicationProperty_URL_String = 15, 1561 | EVRApplicationProperty_VRApplicationProperty_Description_String = 50, 1562 | EVRApplicationProperty_VRApplicationProperty_NewsURL_String = 51, 1563 | EVRApplicationProperty_VRApplicationProperty_ImagePath_String = 52, 1564 | EVRApplicationProperty_VRApplicationProperty_Source_String = 53, 1565 | EVRApplicationProperty_VRApplicationProperty_ActionManifestURL_String = 54, 1566 | EVRApplicationProperty_VRApplicationProperty_IsDashboardOverlay_Bool = 60, 1567 | EVRApplicationProperty_VRApplicationProperty_IsTemplate_Bool = 61, 1568 | EVRApplicationProperty_VRApplicationProperty_IsInstanced_Bool = 62, 1569 | EVRApplicationProperty_VRApplicationProperty_IsInternal_Bool = 63, 1570 | EVRApplicationProperty_VRApplicationProperty_WantsCompositorPauseInStandby_Bool = 64, 1571 | EVRApplicationProperty_VRApplicationProperty_IsHidden_Bool = 65, 1572 | EVRApplicationProperty_VRApplicationProperty_LastLaunchTime_Uint64 = 70, 1573 | } EVRApplicationProperty; 1574 | 1575 | typedef enum EVRSceneApplicationState 1576 | { 1577 | EVRSceneApplicationState_None = 0, 1578 | EVRSceneApplicationState_Starting = 1, 1579 | EVRSceneApplicationState_Quitting = 2, 1580 | EVRSceneApplicationState_Running = 3, 1581 | EVRSceneApplicationState_Waiting = 4, 1582 | } EVRSceneApplicationState; 1583 | 1584 | typedef enum ChaperoneCalibrationState 1585 | { 1586 | ChaperoneCalibrationState_OK = 1, 1587 | ChaperoneCalibrationState_Warning = 100, 1588 | ChaperoneCalibrationState_Warning_BaseStationMayHaveMoved = 101, 1589 | ChaperoneCalibrationState_Warning_BaseStationRemoved = 102, 1590 | ChaperoneCalibrationState_Warning_SeatedBoundsInvalid = 103, 1591 | ChaperoneCalibrationState_Error = 200, 1592 | ChaperoneCalibrationState_Error_BaseStationUninitialized = 201, 1593 | ChaperoneCalibrationState_Error_BaseStationConflict = 202, 1594 | ChaperoneCalibrationState_Error_PlayAreaInvalid = 203, 1595 | ChaperoneCalibrationState_Error_CollisionBoundsInvalid = 204, 1596 | } ChaperoneCalibrationState; 1597 | 1598 | typedef enum EChaperoneConfigFile 1599 | { 1600 | EChaperoneConfigFile_Live = 1, 1601 | EChaperoneConfigFile_Temp = 2, 1602 | } EChaperoneConfigFile; 1603 | 1604 | typedef enum EChaperoneImportFlags 1605 | { 1606 | EChaperoneImportFlags_EChaperoneImport_BoundsOnly = 1, 1607 | } EChaperoneImportFlags; 1608 | 1609 | typedef enum EVRCompositorError 1610 | { 1611 | EVRCompositorError_VRCompositorError_None = 0, 1612 | EVRCompositorError_VRCompositorError_RequestFailed = 1, 1613 | EVRCompositorError_VRCompositorError_IncompatibleVersion = 100, 1614 | EVRCompositorError_VRCompositorError_DoNotHaveFocus = 101, 1615 | EVRCompositorError_VRCompositorError_InvalidTexture = 102, 1616 | EVRCompositorError_VRCompositorError_IsNotSceneApplication = 103, 1617 | EVRCompositorError_VRCompositorError_TextureIsOnWrongDevice = 104, 1618 | EVRCompositorError_VRCompositorError_TextureUsesUnsupportedFormat = 105, 1619 | EVRCompositorError_VRCompositorError_SharedTexturesNotSupported = 106, 1620 | EVRCompositorError_VRCompositorError_IndexOutOfRange = 107, 1621 | EVRCompositorError_VRCompositorError_AlreadySubmitted = 108, 1622 | EVRCompositorError_VRCompositorError_InvalidBounds = 109, 1623 | EVRCompositorError_VRCompositorError_AlreadySet = 110, 1624 | } EVRCompositorError; 1625 | 1626 | typedef enum EVRCompositorTimingMode 1627 | { 1628 | EVRCompositorTimingMode_VRCompositorTimingMode_Implicit = 0, 1629 | EVRCompositorTimingMode_VRCompositorTimingMode_Explicit_RuntimePerformsPostPresentHandoff = 1, 1630 | EVRCompositorTimingMode_VRCompositorTimingMode_Explicit_ApplicationPerformsPostPresentHandoff = 2, 1631 | } EVRCompositorTimingMode; 1632 | 1633 | typedef enum VROverlayInputMethod 1634 | { 1635 | VROverlayInputMethod_None = 0, 1636 | VROverlayInputMethod_Mouse = 1, 1637 | } VROverlayInputMethod; 1638 | 1639 | typedef enum VROverlayTransformType 1640 | { 1641 | VROverlayTransformType_VROverlayTransform_Invalid = -1, 1642 | VROverlayTransformType_VROverlayTransform_Absolute = 0, 1643 | VROverlayTransformType_VROverlayTransform_TrackedDeviceRelative = 1, 1644 | VROverlayTransformType_VROverlayTransform_TrackedComponent = 3, 1645 | VROverlayTransformType_VROverlayTransform_Cursor = 4, 1646 | VROverlayTransformType_VROverlayTransform_DashboardTab = 5, 1647 | VROverlayTransformType_VROverlayTransform_DashboardThumb = 6, 1648 | VROverlayTransformType_VROverlayTransform_Mountable = 7, 1649 | VROverlayTransformType_VROverlayTransform_Projection = 8, 1650 | VROverlayTransformType_VROverlayTransform_Subview = 9, 1651 | } VROverlayTransformType; 1652 | 1653 | typedef enum VROverlayFlags 1654 | { 1655 | VROverlayFlags_NoDashboardTab = 8, 1656 | VROverlayFlags_SendVRDiscreteScrollEvents = 64, 1657 | VROverlayFlags_SendVRTouchpadEvents = 128, 1658 | VROverlayFlags_ShowTouchPadScrollWheel = 256, 1659 | VROverlayFlags_TransferOwnershipToInternalProcess = 512, 1660 | VROverlayFlags_SideBySide_Parallel = 1024, 1661 | VROverlayFlags_SideBySide_Crossed = 2048, 1662 | VROverlayFlags_Panorama = 4096, 1663 | VROverlayFlags_StereoPanorama = 8192, 1664 | VROverlayFlags_SortWithNonSceneOverlays = 16384, 1665 | VROverlayFlags_VisibleInDashboard = 32768, 1666 | VROverlayFlags_MakeOverlaysInteractiveIfVisible = 65536, 1667 | VROverlayFlags_SendVRSmoothScrollEvents = 131072, 1668 | VROverlayFlags_ProtectedContent = 262144, 1669 | VROverlayFlags_HideLaserIntersection = 524288, 1670 | VROverlayFlags_WantsModalBehavior = 1048576, 1671 | VROverlayFlags_IsPremultiplied = 2097152, 1672 | VROverlayFlags_IgnoreTextureAlpha = 4194304, 1673 | VROverlayFlags_EnableControlBar = 8388608, 1674 | VROverlayFlags_EnableControlBarKeyboard = 16777216, 1675 | VROverlayFlags_EnableControlBarClose = 33554432, 1676 | VROverlayFlags_Reserved = 67108864, 1677 | VROverlayFlags_EnableClickStabilization = 134217728, 1678 | VROverlayFlags_MultiCursor = 268435456, 1679 | } VROverlayFlags; 1680 | 1681 | typedef enum VRMessageOverlayResponse 1682 | { 1683 | VRMessageOverlayResponse_ButtonPress_0 = 0, 1684 | VRMessageOverlayResponse_ButtonPress_1 = 1, 1685 | VRMessageOverlayResponse_ButtonPress_2 = 2, 1686 | VRMessageOverlayResponse_ButtonPress_3 = 3, 1687 | VRMessageOverlayResponse_CouldntFindSystemOverlay = 4, 1688 | VRMessageOverlayResponse_CouldntFindOrCreateClientOverlay = 5, 1689 | VRMessageOverlayResponse_ApplicationQuit = 6, 1690 | } VRMessageOverlayResponse; 1691 | 1692 | typedef enum EGamepadTextInputMode 1693 | { 1694 | EGamepadTextInputMode_k_EGamepadTextInputModeNormal = 0, 1695 | EGamepadTextInputMode_k_EGamepadTextInputModePassword = 1, 1696 | EGamepadTextInputMode_k_EGamepadTextInputModeSubmit = 2, 1697 | } EGamepadTextInputMode; 1698 | 1699 | typedef enum EGamepadTextInputLineMode 1700 | { 1701 | EGamepadTextInputLineMode_k_EGamepadTextInputLineModeSingleLine = 0, 1702 | EGamepadTextInputLineMode_k_EGamepadTextInputLineModeMultipleLines = 1, 1703 | } EGamepadTextInputLineMode; 1704 | 1705 | typedef enum EVROverlayIntersectionMaskPrimitiveType 1706 | { 1707 | EVROverlayIntersectionMaskPrimitiveType_OverlayIntersectionPrimitiveType_Rectangle = 0, 1708 | EVROverlayIntersectionMaskPrimitiveType_OverlayIntersectionPrimitiveType_Circle = 1, 1709 | } EVROverlayIntersectionMaskPrimitiveType; 1710 | 1711 | typedef enum EKeyboardFlags 1712 | { 1713 | EKeyboardFlags_KeyboardFlag_Minimal = 1, 1714 | EKeyboardFlags_KeyboardFlag_Modal = 2, 1715 | EKeyboardFlags_KeyboardFlag_ShowArrowKeys = 4, 1716 | EKeyboardFlags_KeyboardFlag_HideDoneKey = 8, 1717 | } EKeyboardFlags; 1718 | 1719 | typedef enum EDeviceType 1720 | { 1721 | EDeviceType_DeviceType_Invalid = -1, 1722 | EDeviceType_DeviceType_DirectX11 = 0, 1723 | EDeviceType_DeviceType_Vulkan = 1, 1724 | } EDeviceType; 1725 | 1726 | typedef enum HeadsetViewMode_t 1727 | { 1728 | HeadsetViewMode_t_HeadsetViewMode_Left = 0, 1729 | HeadsetViewMode_t_HeadsetViewMode_Right = 1, 1730 | HeadsetViewMode_t_HeadsetViewMode_Both = 2, 1731 | } HeadsetViewMode_t; 1732 | 1733 | typedef enum EVRRenderModelError 1734 | { 1735 | EVRRenderModelError_VRRenderModelError_None = 0, 1736 | EVRRenderModelError_VRRenderModelError_Loading = 100, 1737 | EVRRenderModelError_VRRenderModelError_NotSupported = 200, 1738 | EVRRenderModelError_VRRenderModelError_InvalidArg = 300, 1739 | EVRRenderModelError_VRRenderModelError_InvalidModel = 301, 1740 | EVRRenderModelError_VRRenderModelError_NoShapes = 302, 1741 | EVRRenderModelError_VRRenderModelError_MultipleShapes = 303, 1742 | EVRRenderModelError_VRRenderModelError_TooManyVertices = 304, 1743 | EVRRenderModelError_VRRenderModelError_MultipleTextures = 305, 1744 | EVRRenderModelError_VRRenderModelError_BufferTooSmall = 306, 1745 | EVRRenderModelError_VRRenderModelError_NotEnoughNormals = 307, 1746 | EVRRenderModelError_VRRenderModelError_NotEnoughTexCoords = 308, 1747 | EVRRenderModelError_VRRenderModelError_InvalidTexture = 400, 1748 | } EVRRenderModelError; 1749 | 1750 | typedef enum EVRRenderModelTextureFormat 1751 | { 1752 | EVRRenderModelTextureFormat_VRRenderModelTextureFormat_RGBA8_SRGB = 0, 1753 | EVRRenderModelTextureFormat_VRRenderModelTextureFormat_BC2 = 1, 1754 | EVRRenderModelTextureFormat_VRRenderModelTextureFormat_BC4 = 2, 1755 | EVRRenderModelTextureFormat_VRRenderModelTextureFormat_BC7 = 3, 1756 | EVRRenderModelTextureFormat_VRRenderModelTextureFormat_BC7_SRGB = 4, 1757 | EVRRenderModelTextureFormat_VRRenderModelTextureFormat_RGBA16_FLOAT = 5, 1758 | } EVRRenderModelTextureFormat; 1759 | 1760 | typedef enum EVRNotificationType 1761 | { 1762 | EVRNotificationType_Transient = 0, 1763 | EVRNotificationType_Persistent = 1, 1764 | EVRNotificationType_Transient_SystemWithUserValue = 2, 1765 | } EVRNotificationType; 1766 | 1767 | typedef enum EVRNotificationStyle 1768 | { 1769 | EVRNotificationStyle_None = 0, 1770 | EVRNotificationStyle_Application = 100, 1771 | EVRNotificationStyle_Contact_Disabled = 200, 1772 | EVRNotificationStyle_Contact_Enabled = 201, 1773 | EVRNotificationStyle_Contact_Active = 202, 1774 | } EVRNotificationStyle; 1775 | 1776 | typedef enum EVRSettingsError 1777 | { 1778 | EVRSettingsError_VRSettingsError_None = 0, 1779 | EVRSettingsError_VRSettingsError_IPCFailed = 1, 1780 | EVRSettingsError_VRSettingsError_WriteFailed = 2, 1781 | EVRSettingsError_VRSettingsError_ReadFailed = 3, 1782 | EVRSettingsError_VRSettingsError_JsonParseFailed = 4, 1783 | EVRSettingsError_VRSettingsError_UnsetSettingHasNoDefault = 5, 1784 | EVRSettingsError_VRSettingsError_AccessDenied = 6, 1785 | } EVRSettingsError; 1786 | 1787 | typedef enum EVRScreenshotError 1788 | { 1789 | EVRScreenshotError_VRScreenshotError_None = 0, 1790 | EVRScreenshotError_VRScreenshotError_RequestFailed = 1, 1791 | EVRScreenshotError_VRScreenshotError_IncompatibleVersion = 100, 1792 | EVRScreenshotError_VRScreenshotError_NotFound = 101, 1793 | EVRScreenshotError_VRScreenshotError_BufferTooSmall = 102, 1794 | EVRScreenshotError_VRScreenshotError_ScreenshotAlreadyInProgress = 108, 1795 | } EVRScreenshotError; 1796 | 1797 | typedef enum EVRSkeletalTransformSpace 1798 | { 1799 | EVRSkeletalTransformSpace_VRSkeletalTransformSpace_Model = 0, 1800 | EVRSkeletalTransformSpace_VRSkeletalTransformSpace_Parent = 1, 1801 | } EVRSkeletalTransformSpace; 1802 | 1803 | typedef enum EVRSkeletalReferencePose 1804 | { 1805 | EVRSkeletalReferencePose_VRSkeletalReferencePose_BindPose = 0, 1806 | EVRSkeletalReferencePose_VRSkeletalReferencePose_OpenHand = 1, 1807 | EVRSkeletalReferencePose_VRSkeletalReferencePose_Fist = 2, 1808 | EVRSkeletalReferencePose_VRSkeletalReferencePose_GripLimit = 3, 1809 | } EVRSkeletalReferencePose; 1810 | 1811 | typedef enum EVRFinger 1812 | { 1813 | EVRFinger_VRFinger_Thumb = 0, 1814 | EVRFinger_VRFinger_Index = 1, 1815 | EVRFinger_VRFinger_Middle = 2, 1816 | EVRFinger_VRFinger_Ring = 3, 1817 | EVRFinger_VRFinger_Pinky = 4, 1818 | EVRFinger_VRFinger_Count = 5, 1819 | } EVRFinger; 1820 | 1821 | typedef enum EVRFingerSplay 1822 | { 1823 | EVRFingerSplay_VRFingerSplay_Thumb_Index = 0, 1824 | EVRFingerSplay_VRFingerSplay_Index_Middle = 1, 1825 | EVRFingerSplay_VRFingerSplay_Middle_Ring = 2, 1826 | EVRFingerSplay_VRFingerSplay_Ring_Pinky = 3, 1827 | EVRFingerSplay_VRFingerSplay_Count = 4, 1828 | } EVRFingerSplay; 1829 | 1830 | typedef enum EVRSummaryType 1831 | { 1832 | EVRSummaryType_VRSummaryType_FromAnimation = 0, 1833 | EVRSummaryType_VRSummaryType_FromDevice = 1, 1834 | } EVRSummaryType; 1835 | 1836 | typedef enum EVRInputFilterCancelType 1837 | { 1838 | EVRInputFilterCancelType_VRInputFilterCancel_Timers = 0, 1839 | EVRInputFilterCancelType_VRInputFilterCancel_Momentum = 1, 1840 | } EVRInputFilterCancelType; 1841 | 1842 | typedef enum EVRInputStringBits 1843 | { 1844 | EVRInputStringBits_VRInputString_Hand = 1, 1845 | EVRInputStringBits_VRInputString_ControllerType = 2, 1846 | EVRInputStringBits_VRInputString_InputSource = 4, 1847 | EVRInputStringBits_VRInputString_All = -1, 1848 | } EVRInputStringBits; 1849 | 1850 | typedef enum EIOBufferError 1851 | { 1852 | EIOBufferError_IOBuffer_Success = 0, 1853 | EIOBufferError_IOBuffer_OperationFailed = 100, 1854 | EIOBufferError_IOBuffer_InvalidHandle = 101, 1855 | EIOBufferError_IOBuffer_InvalidArgument = 102, 1856 | EIOBufferError_IOBuffer_PathExists = 103, 1857 | EIOBufferError_IOBuffer_PathDoesNotExist = 104, 1858 | EIOBufferError_IOBuffer_Permission = 105, 1859 | } EIOBufferError; 1860 | 1861 | typedef enum EIOBufferMode 1862 | { 1863 | EIOBufferMode_IOBufferMode_Read = 1, 1864 | EIOBufferMode_IOBufferMode_Write = 2, 1865 | EIOBufferMode_IOBufferMode_Create = 512, 1866 | } EIOBufferMode; 1867 | 1868 | typedef enum EVRDebugError 1869 | { 1870 | EVRDebugError_VRDebugError_Success = 0, 1871 | EVRDebugError_VRDebugError_BadParameter = 1, 1872 | } EVRDebugError; 1873 | 1874 | typedef enum EPropertyWriteType 1875 | { 1876 | EPropertyWriteType_PropertyWrite_Set = 0, 1877 | EPropertyWriteType_PropertyWrite_Erase = 1, 1878 | EPropertyWriteType_PropertyWrite_SetError = 2, 1879 | } EPropertyWriteType; 1880 | 1881 | typedef enum EBlockQueueError 1882 | { 1883 | EBlockQueueError_BlockQueueError_None = 0, 1884 | EBlockQueueError_BlockQueueError_QueueAlreadyExists = 1, 1885 | EBlockQueueError_BlockQueueError_QueueNotFound = 2, 1886 | EBlockQueueError_BlockQueueError_BlockNotAvailable = 3, 1887 | EBlockQueueError_BlockQueueError_InvalidHandle = 4, 1888 | EBlockQueueError_BlockQueueError_InvalidParam = 5, 1889 | EBlockQueueError_BlockQueueError_ParamMismatch = 6, 1890 | EBlockQueueError_BlockQueueError_InternalError = 7, 1891 | EBlockQueueError_BlockQueueError_AlreadyInitialized = 8, 1892 | EBlockQueueError_BlockQueueError_OperationIsServerOnly = 9, 1893 | EBlockQueueError_BlockQueueError_TooManyConnections = 10, 1894 | } EBlockQueueError; 1895 | 1896 | typedef enum EBlockQueueReadType 1897 | { 1898 | EBlockQueueReadType_BlockQueueRead_Latest = 0, 1899 | EBlockQueueReadType_BlockQueueRead_New = 1, 1900 | EBlockQueueReadType_BlockQueueRead_Next = 2, 1901 | } EBlockQueueReadType; 1902 | 1903 | typedef enum EBlockQueueCreationFlag 1904 | { 1905 | EBlockQueueCreationFlag_BlockQueueFlag_OwnerIsReader = 1, 1906 | } EBlockQueueCreationFlag; 1907 | 1908 | 1909 | // OpenVR typedefs 1910 | 1911 | typedef uint32_t TrackedDeviceIndex_t; 1912 | typedef uint32_t VRNotificationId; 1913 | typedef uint64_t VROverlayHandle_t; 1914 | 1915 | typedef uint32_t PropertyTypeTag_t; 1916 | typedef uint32_t SpatialAnchorHandle_t; 1917 | typedef void * glSharedTextureHandle_t; 1918 | typedef int32_t glInt_t; 1919 | typedef uint32_t glUInt_t; 1920 | typedef uint64_t SharedTextureHandle_t; 1921 | typedef uint32_t DriverId_t; 1922 | typedef uint32_t TrackedDeviceIndex_t; 1923 | typedef uint64_t WebConsoleHandle_t; 1924 | typedef uint64_t PropertyContainerHandle_t; 1925 | typedef uint32_t PropertyTypeTag_t; 1926 | typedef PropertyContainerHandle_t DriverHandle_t; 1927 | typedef uint64_t VRActionHandle_t; 1928 | typedef uint64_t VRActionSetHandle_t; 1929 | typedef uint64_t VRInputValueHandle_t; 1930 | typedef uint32_t VRComponentProperties; 1931 | typedef uint64_t VROverlayHandle_t; 1932 | typedef int32_t BoneIndex_t; 1933 | typedef uint64_t TrackedCameraHandle_t; 1934 | typedef uint32_t ScreenshotHandle_t; 1935 | typedef int32_t TextureID_t; 1936 | typedef uint32_t VRNotificationId; 1937 | typedef uint64_t IOBufferHandle_t; 1938 | typedef uint64_t VrProfilerEventHandle_t; 1939 | typedef EVRInitError HmdError; 1940 | typedef EVREye Hmd_Eye; 1941 | typedef EColorSpace ColorSpace; 1942 | typedef ETrackingResult HmdTrackingResult; 1943 | typedef ETrackedDeviceClass TrackedDeviceClass; 1944 | typedef ETrackingUniverseOrigin TrackingUniverseOrigin; 1945 | typedef ETrackedDeviceProperty TrackedDeviceProperty; 1946 | typedef ETrackedPropertyError TrackedPropertyError; 1947 | typedef EVRSubmitFlags VRSubmitFlags_t; 1948 | typedef EVRState VRState_t; 1949 | typedef ECollisionBoundsStyle CollisionBoundsStyle_t; 1950 | typedef EVROverlayError VROverlayError; 1951 | typedef EVRFirmwareError VRFirmwareError; 1952 | typedef EVRCompositorError VRCompositorError; 1953 | typedef EVRScreenshotError VRScreenshotsError; 1954 | typedef uint64_t PathHandle_t; 1955 | 1956 | // OpenVR Structs 1957 | 1958 | typedef struct HmdMatrix34_t 1959 | { 1960 | float m[3][4]; //float[3][4] 1961 | } HmdMatrix34_t; 1962 | 1963 | typedef struct HmdMatrix33_t 1964 | { 1965 | float m[3][3]; //float[3][3] 1966 | } HmdMatrix33_t; 1967 | 1968 | typedef struct HmdMatrix44_t 1969 | { 1970 | float m[4][4]; //float[4][4] 1971 | } HmdMatrix44_t; 1972 | 1973 | typedef struct HmdVector3_t 1974 | { 1975 | float v[3]; //float[3] 1976 | } HmdVector3_t; 1977 | 1978 | typedef struct HmdVector4_t 1979 | { 1980 | float v[4]; //float[4] 1981 | } HmdVector4_t; 1982 | 1983 | typedef struct HmdVector3d_t 1984 | { 1985 | double v[3]; //double[3] 1986 | } HmdVector3d_t; 1987 | 1988 | typedef struct HmdVector2_t 1989 | { 1990 | float v[2]; //float[2] 1991 | } HmdVector2_t; 1992 | 1993 | typedef struct HmdQuaternion_t 1994 | { 1995 | double w; 1996 | double x; 1997 | double y; 1998 | double z; 1999 | } HmdQuaternion_t; 2000 | 2001 | typedef struct HmdQuaternionf_t 2002 | { 2003 | float w; 2004 | float x; 2005 | float y; 2006 | float z; 2007 | } HmdQuaternionf_t; 2008 | 2009 | typedef struct HmdColor_t 2010 | { 2011 | float r; 2012 | float g; 2013 | float b; 2014 | float a; 2015 | } HmdColor_t; 2016 | 2017 | typedef struct HmdQuad_t 2018 | { 2019 | struct HmdVector3_t vCorners[4]; //struct vr::HmdVector3_t[4] 2020 | } HmdQuad_t; 2021 | 2022 | typedef struct HmdRect2_t 2023 | { 2024 | struct HmdVector2_t vTopLeft; 2025 | struct HmdVector2_t vBottomRight; 2026 | } HmdRect2_t; 2027 | 2028 | typedef struct VRBoneTransform_t 2029 | { 2030 | struct HmdVector4_t position; 2031 | struct HmdQuaternionf_t orientation; 2032 | } VRBoneTransform_t; 2033 | 2034 | typedef struct DistortionCoordinates_t 2035 | { 2036 | float rfRed[2]; //float[2] 2037 | float rfGreen[2]; //float[2] 2038 | float rfBlue[2]; //float[2] 2039 | } DistortionCoordinates_t; 2040 | 2041 | typedef struct Texture_t 2042 | { 2043 | void * handle; // void * 2044 | enum ETextureType eType; 2045 | enum EColorSpace eColorSpace; 2046 | } Texture_t; 2047 | 2048 | typedef struct VRTextureBounds_t 2049 | { 2050 | float uMin; 2051 | float vMin; 2052 | float uMax; 2053 | float vMax; 2054 | } VRTextureBounds_t; 2055 | 2056 | typedef struct VRTextureWithPose_t 2057 | { 2058 | void * handle; // void * 2059 | enum ETextureType eType; 2060 | enum EColorSpace eColorSpace; 2061 | struct HmdMatrix34_t mDeviceToAbsoluteTracking; 2062 | } VRTextureWithPose_t; 2063 | 2064 | typedef struct VRTextureDepthInfo_t 2065 | { 2066 | void * handle; // void * 2067 | struct HmdMatrix44_t mProjection; 2068 | struct HmdVector2_t vRange; 2069 | } VRTextureDepthInfo_t; 2070 | 2071 | typedef struct VRTextureWithDepth_t 2072 | { 2073 | void * handle; // void * 2074 | enum ETextureType eType; 2075 | enum EColorSpace eColorSpace; 2076 | struct VRTextureDepthInfo_t depth; 2077 | } VRTextureWithDepth_t; 2078 | 2079 | typedef struct VRTextureWithPoseAndDepth_t 2080 | { 2081 | void * handle; // void * 2082 | enum ETextureType eType; 2083 | enum EColorSpace eColorSpace; 2084 | struct HmdMatrix34_t mDeviceToAbsoluteTracking; 2085 | struct VRTextureDepthInfo_t depth; 2086 | } VRTextureWithPoseAndDepth_t; 2087 | 2088 | typedef struct TrackedDevicePose_t 2089 | { 2090 | struct HmdMatrix34_t mDeviceToAbsoluteTracking; 2091 | struct HmdVector3_t vVelocity; 2092 | struct HmdVector3_t vAngularVelocity; 2093 | enum ETrackingResult eTrackingResult; 2094 | bool bPoseIsValid; 2095 | bool bDeviceIsConnected; 2096 | } TrackedDevicePose_t; 2097 | 2098 | typedef struct VRVulkanTextureData_t 2099 | { 2100 | uint64_t m_nImage; 2101 | struct VkDevice_T * m_pDevice; // struct VkDevice_T * 2102 | struct VkPhysicalDevice_T * m_pPhysicalDevice; // struct VkPhysicalDevice_T * 2103 | struct VkInstance_T * m_pInstance; // struct VkInstance_T * 2104 | struct VkQueue_T * m_pQueue; // struct VkQueue_T * 2105 | uint32_t m_nQueueFamilyIndex; 2106 | uint32_t m_nWidth; 2107 | uint32_t m_nHeight; 2108 | uint32_t m_nFormat; 2109 | uint32_t m_nSampleCount; 2110 | } VRVulkanTextureData_t; 2111 | 2112 | typedef struct VRVulkanTextureArrayData_t 2113 | { 2114 | uint32_t m_unArrayIndex; 2115 | uint32_t m_unArraySize; 2116 | } VRVulkanTextureArrayData_t; 2117 | 2118 | typedef struct D3D12TextureData_t 2119 | { 2120 | struct ID3D12Resource * m_pResource; // struct ID3D12Resource * 2121 | struct ID3D12CommandQueue * m_pCommandQueue; // struct ID3D12CommandQueue * 2122 | uint32_t m_nNodeMask; 2123 | } D3D12TextureData_t; 2124 | 2125 | typedef struct VREvent_Controller_t 2126 | { 2127 | uint32_t button; 2128 | } VREvent_Controller_t; 2129 | 2130 | typedef struct VREvent_Mouse_t 2131 | { 2132 | float x; 2133 | float y; 2134 | uint32_t button; 2135 | uint32_t cursorIndex; 2136 | } VREvent_Mouse_t; 2137 | 2138 | typedef struct VREvent_Scroll_t 2139 | { 2140 | float xdelta; 2141 | float ydelta; 2142 | uint32_t unused; 2143 | float viewportscale; 2144 | uint32_t cursorIndex; 2145 | } VREvent_Scroll_t; 2146 | 2147 | typedef struct VREvent_TouchPadMove_t 2148 | { 2149 | bool bFingerDown; 2150 | float flSecondsFingerDown; 2151 | float fValueXFirst; 2152 | float fValueYFirst; 2153 | float fValueXRaw; 2154 | float fValueYRaw; 2155 | } VREvent_TouchPadMove_t; 2156 | 2157 | typedef struct VREvent_Notification_t 2158 | { 2159 | uint64_t ulUserValue; 2160 | uint32_t notificationId; 2161 | } VREvent_Notification_t; 2162 | 2163 | typedef struct VREvent_Process_t 2164 | { 2165 | uint32_t pid; 2166 | uint32_t oldPid; 2167 | bool bForced; 2168 | bool bConnectionLost; 2169 | } VREvent_Process_t; 2170 | 2171 | typedef struct VREvent_Overlay_t 2172 | { 2173 | uint64_t overlayHandle; 2174 | uint64_t devicePath; 2175 | uint64_t memoryBlockId; 2176 | uint32_t cursorIndex; 2177 | } VREvent_Overlay_t; 2178 | 2179 | typedef struct VREvent_Status_t 2180 | { 2181 | uint32_t statusState; 2182 | } VREvent_Status_t; 2183 | 2184 | typedef struct VREvent_Keyboard_t 2185 | { 2186 | char cNewInput[8]; //char[8] 2187 | uint64_t uUserValue; 2188 | uint64_t overlayHandle; 2189 | } VREvent_Keyboard_t; 2190 | 2191 | typedef struct VREvent_Ipd_t 2192 | { 2193 | float ipdMeters; 2194 | } VREvent_Ipd_t; 2195 | 2196 | typedef struct VREvent_Chaperone_t 2197 | { 2198 | uint64_t m_nPreviousUniverse; 2199 | uint64_t m_nCurrentUniverse; 2200 | } VREvent_Chaperone_t; 2201 | 2202 | typedef struct VREvent_Reserved_t 2203 | { 2204 | uint64_t reserved0; 2205 | uint64_t reserved1; 2206 | uint64_t reserved2; 2207 | uint64_t reserved3; 2208 | uint64_t reserved4; 2209 | uint64_t reserved5; 2210 | } VREvent_Reserved_t; 2211 | 2212 | typedef struct VREvent_PerformanceTest_t 2213 | { 2214 | uint32_t m_nFidelityLevel; 2215 | } VREvent_PerformanceTest_t; 2216 | 2217 | typedef struct VREvent_SeatedZeroPoseReset_t 2218 | { 2219 | bool bResetBySystemMenu; 2220 | } VREvent_SeatedZeroPoseReset_t; 2221 | 2222 | typedef struct VREvent_Screenshot_t 2223 | { 2224 | uint32_t handle; 2225 | uint32_t type; 2226 | } VREvent_Screenshot_t; 2227 | 2228 | typedef struct VREvent_ScreenshotProgress_t 2229 | { 2230 | float progress; 2231 | } VREvent_ScreenshotProgress_t; 2232 | 2233 | typedef struct VREvent_ApplicationLaunch_t 2234 | { 2235 | uint32_t pid; 2236 | uint32_t unArgsHandle; 2237 | } VREvent_ApplicationLaunch_t; 2238 | 2239 | typedef struct VREvent_EditingCameraSurface_t 2240 | { 2241 | uint64_t overlayHandle; 2242 | uint32_t nVisualMode; 2243 | } VREvent_EditingCameraSurface_t; 2244 | 2245 | typedef struct VREvent_MessageOverlay_t 2246 | { 2247 | uint32_t unVRMessageOverlayResponse; 2248 | } VREvent_MessageOverlay_t; 2249 | 2250 | typedef struct VREvent_Property_t 2251 | { 2252 | PropertyContainerHandle_t container; 2253 | enum ETrackedDeviceProperty prop; 2254 | } VREvent_Property_t; 2255 | 2256 | typedef struct VREvent_HapticVibration_t 2257 | { 2258 | uint64_t containerHandle; 2259 | uint64_t componentHandle; 2260 | float fDurationSeconds; 2261 | float fFrequency; 2262 | float fAmplitude; 2263 | } VREvent_HapticVibration_t; 2264 | 2265 | typedef struct VREvent_WebConsole_t 2266 | { 2267 | WebConsoleHandle_t webConsoleHandle; 2268 | } VREvent_WebConsole_t; 2269 | 2270 | typedef struct VREvent_InputBindingLoad_t 2271 | { 2272 | PropertyContainerHandle_t ulAppContainer; 2273 | uint64_t pathMessage; 2274 | uint64_t pathUrl; 2275 | uint64_t pathControllerType; 2276 | } VREvent_InputBindingLoad_t; 2277 | 2278 | typedef struct VREvent_InputActionManifestLoad_t 2279 | { 2280 | uint64_t pathAppKey; 2281 | uint64_t pathMessage; 2282 | uint64_t pathMessageParam; 2283 | uint64_t pathManifestPath; 2284 | } VREvent_InputActionManifestLoad_t; 2285 | 2286 | typedef struct VREvent_SpatialAnchor_t 2287 | { 2288 | SpatialAnchorHandle_t unHandle; 2289 | } VREvent_SpatialAnchor_t; 2290 | 2291 | typedef struct VREvent_ProgressUpdate_t 2292 | { 2293 | uint64_t ulApplicationPropertyContainer; 2294 | uint64_t pathDevice; 2295 | uint64_t pathInputSource; 2296 | uint64_t pathProgressAction; 2297 | uint64_t pathIcon; 2298 | float fProgress; 2299 | } VREvent_ProgressUpdate_t; 2300 | 2301 | typedef struct VREvent_ShowUI_t 2302 | { 2303 | enum EShowUIType eType; 2304 | } VREvent_ShowUI_t; 2305 | 2306 | typedef struct VREvent_ShowDevTools_t 2307 | { 2308 | int32_t nBrowserIdentifier; 2309 | } VREvent_ShowDevTools_t; 2310 | 2311 | typedef struct VREvent_HDCPError_t 2312 | { 2313 | enum EHDCPError eCode; 2314 | } VREvent_HDCPError_t; 2315 | 2316 | typedef struct VREvent_AudioVolumeControl_t 2317 | { 2318 | float fVolumeLevel; 2319 | } VREvent_AudioVolumeControl_t; 2320 | 2321 | typedef struct VREvent_AudioMuteControl_t 2322 | { 2323 | bool bMute; 2324 | } VREvent_AudioMuteControl_t; 2325 | 2326 | typedef struct RenderModel_ComponentState_t 2327 | { 2328 | struct HmdMatrix34_t mTrackingToComponentRenderModel; 2329 | struct HmdMatrix34_t mTrackingToComponentLocal; 2330 | VRComponentProperties uProperties; 2331 | } RenderModel_ComponentState_t; 2332 | 2333 | typedef struct HiddenAreaMesh_t 2334 | { 2335 | struct HmdVector2_t * pVertexData; // const struct vr::HmdVector2_t * 2336 | uint32_t unTriangleCount; 2337 | } HiddenAreaMesh_t; 2338 | 2339 | typedef struct VRControllerAxis_t 2340 | { 2341 | float x; 2342 | float y; 2343 | } VRControllerAxis_t; 2344 | 2345 | typedef struct VRControllerState_t 2346 | { 2347 | uint32_t unPacketNum; 2348 | uint64_t ulButtonPressed; 2349 | uint64_t ulButtonTouched; 2350 | struct VRControllerAxis_t rAxis[5]; //struct vr::VRControllerAxis_t[5] 2351 | } VRControllerState_t; 2352 | 2353 | typedef struct CameraVideoStreamFrameHeader_t 2354 | { 2355 | enum EVRTrackedCameraFrameType eFrameType; 2356 | uint32_t nWidth; 2357 | uint32_t nHeight; 2358 | uint32_t nBytesPerPixel; 2359 | uint32_t nFrameSequence; 2360 | struct TrackedDevicePose_t trackedDevicePose; 2361 | uint64_t ulFrameExposureTime; 2362 | } CameraVideoStreamFrameHeader_t; 2363 | 2364 | typedef struct Compositor_FrameTiming 2365 | { 2366 | uint32_t m_nSize; 2367 | uint32_t m_nFrameIndex; 2368 | uint32_t m_nNumFramePresents; 2369 | uint32_t m_nNumMisPresented; 2370 | uint32_t m_nNumDroppedFrames; 2371 | uint32_t m_nReprojectionFlags; 2372 | double m_flSystemTimeInSeconds; 2373 | float m_flPreSubmitGpuMs; 2374 | float m_flPostSubmitGpuMs; 2375 | float m_flTotalRenderGpuMs; 2376 | float m_flCompositorRenderGpuMs; 2377 | float m_flCompositorRenderCpuMs; 2378 | float m_flCompositorIdleCpuMs; 2379 | float m_flClientFrameIntervalMs; 2380 | float m_flPresentCallCpuMs; 2381 | float m_flWaitForPresentCpuMs; 2382 | float m_flSubmitFrameMs; 2383 | float m_flWaitGetPosesCalledMs; 2384 | float m_flNewPosesReadyMs; 2385 | float m_flNewFrameReadyMs; 2386 | float m_flCompositorUpdateStartMs; 2387 | float m_flCompositorUpdateEndMs; 2388 | float m_flCompositorRenderStartMs; 2389 | TrackedDevicePose_t m_HmdPose; 2390 | uint32_t m_nNumVSyncsReadyForUse; 2391 | uint32_t m_nNumVSyncsToFirstView; 2392 | float m_flTransferLatencyMs; 2393 | } Compositor_FrameTiming; 2394 | 2395 | typedef struct Compositor_BenchmarkResults 2396 | { 2397 | float m_flMegaPixelsPerSecond; 2398 | float m_flHmdRecommendedMegaPixelsPerSecond; 2399 | } Compositor_BenchmarkResults; 2400 | 2401 | typedef struct DriverDirectMode_FrameTiming 2402 | { 2403 | uint32_t m_nSize; 2404 | uint32_t m_nNumFramePresents; 2405 | uint32_t m_nNumMisPresented; 2406 | uint32_t m_nNumDroppedFrames; 2407 | uint32_t m_nReprojectionFlags; 2408 | } DriverDirectMode_FrameTiming; 2409 | 2410 | typedef struct ImuSample_t 2411 | { 2412 | double fSampleTime; 2413 | struct HmdVector3d_t vAccel; 2414 | struct HmdVector3d_t vGyro; 2415 | uint32_t unOffScaleFlags; 2416 | } ImuSample_t; 2417 | 2418 | typedef struct AppOverrideKeys_t 2419 | { 2420 | char * pchKey; // const char * 2421 | char * pchValue; // const char * 2422 | } AppOverrideKeys_t; 2423 | 2424 | typedef struct Compositor_CumulativeStats 2425 | { 2426 | uint32_t m_nPid; 2427 | uint32_t m_nNumFramePresents; 2428 | uint32_t m_nNumDroppedFrames; 2429 | uint32_t m_nNumReprojectedFrames; 2430 | uint32_t m_nNumFramePresentsOnStartup; 2431 | uint32_t m_nNumDroppedFramesOnStartup; 2432 | uint32_t m_nNumReprojectedFramesOnStartup; 2433 | uint32_t m_nNumLoading; 2434 | uint32_t m_nNumFramePresentsLoading; 2435 | uint32_t m_nNumDroppedFramesLoading; 2436 | uint32_t m_nNumReprojectedFramesLoading; 2437 | uint32_t m_nNumTimedOut; 2438 | uint32_t m_nNumFramePresentsTimedOut; 2439 | uint32_t m_nNumDroppedFramesTimedOut; 2440 | uint32_t m_nNumReprojectedFramesTimedOut; 2441 | uint32_t m_nNumFrameSubmits; 2442 | vrshared_double m_flSumCompositorCPUTimeMS; 2443 | vrshared_double m_flSumCompositorGPUTimeMS; 2444 | vrshared_double m_flSumTargetFrameTimes; 2445 | vrshared_double m_flSumApplicationCPUTimeMS; 2446 | vrshared_double m_flSumApplicationGPUTimeMS; 2447 | uint32_t m_nNumFramesWithDepth; 2448 | } Compositor_CumulativeStats; 2449 | 2450 | typedef struct Compositor_StageRenderSettings 2451 | { 2452 | struct HmdColor_t m_PrimaryColor; 2453 | struct HmdColor_t m_SecondaryColor; 2454 | float m_flVignetteInnerRadius; 2455 | float m_flVignetteOuterRadius; 2456 | float m_flFresnelStrength; 2457 | bool m_bBackfaceCulling; 2458 | bool m_bGreyscale; 2459 | bool m_bWireframe; 2460 | } Compositor_StageRenderSettings; 2461 | 2462 | typedef struct VROverlayIntersectionParams_t 2463 | { 2464 | struct HmdVector3_t vSource; 2465 | struct HmdVector3_t vDirection; 2466 | enum ETrackingUniverseOrigin eOrigin; 2467 | } VROverlayIntersectionParams_t; 2468 | 2469 | typedef struct VROverlayIntersectionResults_t 2470 | { 2471 | struct HmdVector3_t vPoint; 2472 | struct HmdVector3_t vNormal; 2473 | struct HmdVector2_t vUVs; 2474 | float fDistance; 2475 | } VROverlayIntersectionResults_t; 2476 | 2477 | typedef struct IntersectionMaskRectangle_t 2478 | { 2479 | float m_flTopLeftX; 2480 | float m_flTopLeftY; 2481 | float m_flWidth; 2482 | float m_flHeight; 2483 | } IntersectionMaskRectangle_t; 2484 | 2485 | typedef struct IntersectionMaskCircle_t 2486 | { 2487 | float m_flCenterX; 2488 | float m_flCenterY; 2489 | float m_flRadius; 2490 | } IntersectionMaskCircle_t; 2491 | 2492 | typedef struct VROverlayProjection_t 2493 | { 2494 | float fLeft; 2495 | float fRight; 2496 | float fTop; 2497 | float fBottom; 2498 | } VROverlayProjection_t; 2499 | 2500 | typedef struct VROverlayView_t 2501 | { 2502 | VROverlayHandle_t overlayHandle; 2503 | struct Texture_t texture; 2504 | struct VRTextureBounds_t textureBounds; 2505 | } VROverlayView_t; 2506 | 2507 | typedef struct VRVulkanDevice_t 2508 | { 2509 | struct VkInstance_T * m_pInstance; // struct VkInstance_T * 2510 | struct VkDevice_T * m_pDevice; // struct VkDevice_T * 2511 | struct VkPhysicalDevice_T * m_pPhysicalDevice; // struct VkPhysicalDevice_T * 2512 | struct VkQueue_T * m_pQueue; // struct VkQueue_T * 2513 | uint32_t m_uQueueFamilyIndex; 2514 | } VRVulkanDevice_t; 2515 | 2516 | typedef struct VRNativeDevice_t 2517 | { 2518 | void * handle; // void * 2519 | enum EDeviceType eType; 2520 | } VRNativeDevice_t; 2521 | 2522 | typedef struct RenderModel_Vertex_t 2523 | { 2524 | struct HmdVector3_t vPosition; 2525 | struct HmdVector3_t vNormal; 2526 | float rfTextureCoord[2]; //float[2] 2527 | } RenderModel_Vertex_t; 2528 | 2529 | #if defined(__linux__) || defined(__APPLE__) 2530 | #pragma pack( push, 4 ) 2531 | #endif 2532 | typedef struct RenderModel_TextureMap_t 2533 | { 2534 | uint16_t unWidth; 2535 | uint16_t unHeight; 2536 | uint8_t * rubTextureMapData; // const uint8_t * 2537 | enum EVRRenderModelTextureFormat format; 2538 | uint16_t unMipLevels; 2539 | } RenderModel_TextureMap_t; 2540 | 2541 | #if defined(__linux__) || defined(__APPLE__) 2542 | #pragma pack( pop ) 2543 | #endif 2544 | #if defined(__linux__) || defined(__APPLE__) 2545 | #pragma pack( push, 4 ) 2546 | #endif 2547 | typedef struct RenderModel_t 2548 | { 2549 | struct RenderModel_Vertex_t * rVertexData; // const struct vr::RenderModel_Vertex_t * 2550 | uint32_t unVertexCount; 2551 | uint16_t * rIndexData; // const uint16_t * 2552 | uint32_t unTriangleCount; 2553 | TextureID_t diffuseTextureId; 2554 | } RenderModel_t; 2555 | 2556 | #if defined(__linux__) || defined(__APPLE__) 2557 | #pragma pack( pop ) 2558 | #endif 2559 | typedef struct RenderModel_ControllerMode_State_t 2560 | { 2561 | bool bScrollWheelVisible; 2562 | } RenderModel_ControllerMode_State_t; 2563 | 2564 | typedef struct NotificationBitmap_t 2565 | { 2566 | void * m_pImageData; // void * 2567 | int32_t m_nWidth; 2568 | int32_t m_nHeight; 2569 | int32_t m_nBytesPerPixel; 2570 | } NotificationBitmap_t; 2571 | 2572 | typedef struct CVRSettingHelper 2573 | { 2574 | intptr_t m_pSettings; // class vr::IVRSettings * 2575 | } CVRSettingHelper; 2576 | 2577 | typedef struct InputAnalogActionData_t 2578 | { 2579 | bool bActive; 2580 | VRInputValueHandle_t activeOrigin; 2581 | float x; 2582 | float y; 2583 | float z; 2584 | float deltaX; 2585 | float deltaY; 2586 | float deltaZ; 2587 | float fUpdateTime; 2588 | } InputAnalogActionData_t; 2589 | 2590 | typedef struct InputDigitalActionData_t 2591 | { 2592 | bool bActive; 2593 | VRInputValueHandle_t activeOrigin; 2594 | bool bState; 2595 | bool bChanged; 2596 | float fUpdateTime; 2597 | } InputDigitalActionData_t; 2598 | 2599 | typedef struct InputPoseActionData_t 2600 | { 2601 | bool bActive; 2602 | VRInputValueHandle_t activeOrigin; 2603 | struct TrackedDevicePose_t pose; 2604 | } InputPoseActionData_t; 2605 | 2606 | typedef struct InputSkeletalActionData_t 2607 | { 2608 | bool bActive; 2609 | VRInputValueHandle_t activeOrigin; 2610 | } InputSkeletalActionData_t; 2611 | 2612 | typedef struct InputOriginInfo_t 2613 | { 2614 | VRInputValueHandle_t devicePath; 2615 | TrackedDeviceIndex_t trackedDeviceIndex; 2616 | char rchRenderModelComponentName[128]; //char[128] 2617 | } InputOriginInfo_t; 2618 | 2619 | typedef struct InputBindingInfo_t 2620 | { 2621 | char rchDevicePathName[128]; //char[128] 2622 | char rchInputPathName[128]; //char[128] 2623 | char rchModeName[128]; //char[128] 2624 | char rchSlotName[128]; //char[128] 2625 | char rchInputSourceType[32]; //char[32] 2626 | } InputBindingInfo_t; 2627 | 2628 | typedef struct VRActiveActionSet_t 2629 | { 2630 | VRActionSetHandle_t ulActionSet; 2631 | VRInputValueHandle_t ulRestrictedToDevice; 2632 | VRActionSetHandle_t ulSecondaryActionSet; 2633 | uint32_t unPadding; 2634 | int32_t nPriority; 2635 | } VRActiveActionSet_t; 2636 | 2637 | typedef struct VRSkeletalSummaryData_t 2638 | { 2639 | float flFingerCurl[5]; //float[5] 2640 | float flFingerSplay[4]; //float[4] 2641 | } VRSkeletalSummaryData_t; 2642 | 2643 | typedef struct SpatialAnchorPose_t 2644 | { 2645 | struct HmdMatrix34_t mAnchorToAbsoluteTracking; 2646 | } SpatialAnchorPose_t; 2647 | 2648 | typedef struct COpenVRContext 2649 | { 2650 | intptr_t m_pVRSystem; // class vr::IVRSystem * 2651 | intptr_t m_pVRChaperone; // class vr::IVRChaperone * 2652 | intptr_t m_pVRChaperoneSetup; // class vr::IVRChaperoneSetup * 2653 | intptr_t m_pVRCompositor; // class vr::IVRCompositor * 2654 | intptr_t m_pVRHeadsetView; // class vr::IVRHeadsetView * 2655 | intptr_t m_pVROverlay; // class vr::IVROverlay * 2656 | intptr_t m_pVROverlayView; // class vr::IVROverlayView * 2657 | intptr_t m_pVRResources; // class vr::IVRResources * 2658 | intptr_t m_pVRRenderModels; // class vr::IVRRenderModels * 2659 | intptr_t m_pVRExtendedDisplay; // class vr::IVRExtendedDisplay * 2660 | intptr_t m_pVRSettings; // class vr::IVRSettings * 2661 | intptr_t m_pVRApplications; // class vr::IVRApplications * 2662 | intptr_t m_pVRTrackedCamera; // class vr::IVRTrackedCamera * 2663 | intptr_t m_pVRScreenshots; // class vr::IVRScreenshots * 2664 | intptr_t m_pVRDriverManager; // class vr::IVRDriverManager * 2665 | intptr_t m_pVRInput; // class vr::IVRInput * 2666 | intptr_t m_pVRIOBuffer; // class vr::IVRIOBuffer * 2667 | intptr_t m_pVRSpatialAnchors; // class vr::IVRSpatialAnchors * 2668 | intptr_t m_pVRDebug; // class vr::IVRDebug * 2669 | intptr_t m_pVRNotifications; // class vr::IVRNotifications * 2670 | } COpenVRContext; 2671 | 2672 | typedef struct PropertyWrite_t 2673 | { 2674 | enum ETrackedDeviceProperty prop; 2675 | enum EPropertyWriteType writeType; 2676 | enum ETrackedPropertyError eSetError; 2677 | void * pvBuffer; // void * 2678 | uint32_t unBufferSize; 2679 | PropertyTypeTag_t unTag; 2680 | enum ETrackedPropertyError eError; 2681 | } PropertyWrite_t; 2682 | 2683 | typedef struct PropertyRead_t 2684 | { 2685 | enum ETrackedDeviceProperty prop; 2686 | void * pvBuffer; // void * 2687 | uint32_t unBufferSize; 2688 | PropertyTypeTag_t unTag; 2689 | uint32_t unRequiredBufferSize; 2690 | enum ETrackedPropertyError eError; 2691 | } PropertyRead_t; 2692 | 2693 | typedef struct CVRPropertyHelpers 2694 | { 2695 | intptr_t m_pProperties; // class vr::IVRProperties * 2696 | } CVRPropertyHelpers; 2697 | 2698 | typedef struct PathWrite_t 2699 | { 2700 | PathHandle_t ulPath; 2701 | enum EPropertyWriteType writeType; 2702 | enum ETrackedPropertyError eSetError; 2703 | void * pvBuffer; // void * 2704 | uint32_t unBufferSize; 2705 | PropertyTypeTag_t unTag; 2706 | enum ETrackedPropertyError eError; 2707 | char * pszPath; // const char * 2708 | } PathWrite_t; 2709 | 2710 | typedef struct PathRead_t 2711 | { 2712 | PathHandle_t ulPath; 2713 | void * pvBuffer; // void * 2714 | uint32_t unBufferSize; 2715 | PropertyTypeTag_t unTag; 2716 | uint32_t unRequiredBufferSize; 2717 | enum ETrackedPropertyError eError; 2718 | char * pszPath; // const char * 2719 | } PathRead_t; 2720 | 2721 | 2722 | typedef union 2723 | { 2724 | VREvent_Reserved_t reserved; 2725 | VREvent_Controller_t controller; 2726 | VREvent_Mouse_t mouse; 2727 | VREvent_Scroll_t scroll; 2728 | VREvent_Process_t process; 2729 | VREvent_Notification_t notification; 2730 | VREvent_Overlay_t overlay; 2731 | VREvent_Status_t status; 2732 | VREvent_Keyboard_t keyboard; 2733 | VREvent_Ipd_t ipd; 2734 | VREvent_Chaperone_t chaperone; 2735 | VREvent_PerformanceTest_t performanceTest; 2736 | VREvent_TouchPadMove_t touchPadMove; 2737 | VREvent_SeatedZeroPoseReset_t seatedZeroPoseReset; 2738 | VREvent_Screenshot_t screenshot; 2739 | VREvent_ScreenshotProgress_t screenshotProgress; 2740 | VREvent_ApplicationLaunch_t applicationLaunch; 2741 | VREvent_EditingCameraSurface_t cameraSurface; 2742 | VREvent_MessageOverlay_t messageOverlay; 2743 | VREvent_Property_t property; 2744 | VREvent_HapticVibration_t hapticVibration; 2745 | VREvent_WebConsole_t webConsole; 2746 | VREvent_InputBindingLoad_t inputBinding; 2747 | VREvent_InputActionManifestLoad_t actionManifest; 2748 | VREvent_SpatialAnchor_t spatialAnchor; 2749 | VREvent_ProgressUpdate_t progressUpdate; 2750 | VREvent_ShowUI_t showUi; 2751 | VREvent_ShowDevTools_t showDevTools; 2752 | VREvent_HDCPError_t hdcpError; 2753 | VREvent_AudioVolumeControl_t audioVolumeControl; 2754 | VREvent_AudioMuteControl_t audioMuteControl; 2755 | } VREvent_Data_t; 2756 | 2757 | #if defined(__linux__) || defined(__APPLE__) 2758 | // This structure was originally defined mis-packed on Linux, preserved for 2759 | // compatibility. 2760 | #pragma pack( push, 4 ) 2761 | #endif 2762 | 2763 | /** An event posted by the server to all running applications */ 2764 | struct VREvent_t 2765 | { 2766 | uint32_t eventType; // EVREventType enum 2767 | TrackedDeviceIndex_t trackedDeviceIndex; 2768 | float eventAgeSeconds; 2769 | // event data must be the end of the struct as its size is variable 2770 | VREvent_Data_t data; 2771 | }; 2772 | 2773 | #if defined(__linux__) || defined(__APPLE__) 2774 | #pragma pack( pop ) 2775 | #endif 2776 | 2777 | 2778 | typedef union 2779 | { 2780 | IntersectionMaskRectangle_t m_Rectangle; 2781 | IntersectionMaskCircle_t m_Circle; 2782 | } VROverlayIntersectionMaskPrimitive_Data_t; 2783 | 2784 | struct VROverlayIntersectionMaskPrimitive_t 2785 | { 2786 | EVROverlayIntersectionMaskPrimitiveType m_nPrimitiveType; 2787 | VROverlayIntersectionMaskPrimitive_Data_t m_Primitive; 2788 | }; 2789 | 2790 | 2791 | // OpenVR Function Pointer Tables 2792 | 2793 | struct VR_IVRSystem_FnTable 2794 | { 2795 | void (OPENVR_FNTABLE_CALLTYPE *GetRecommendedRenderTargetSize)(uint32_t * pnWidth, uint32_t * pnHeight); 2796 | struct HmdMatrix44_t (OPENVR_FNTABLE_CALLTYPE *GetProjectionMatrix)(EVREye eEye, float fNearZ, float fFarZ); 2797 | void (OPENVR_FNTABLE_CALLTYPE *GetProjectionRaw)(EVREye eEye, float * pfLeft, float * pfRight, float * pfTop, float * pfBottom); 2798 | bool (OPENVR_FNTABLE_CALLTYPE *ComputeDistortion)(EVREye eEye, float fU, float fV, struct DistortionCoordinates_t * pDistortionCoordinates); 2799 | struct HmdMatrix34_t (OPENVR_FNTABLE_CALLTYPE *GetEyeToHeadTransform)(EVREye eEye); 2800 | bool (OPENVR_FNTABLE_CALLTYPE *GetTimeSinceLastVsync)(float * pfSecondsSinceLastVsync, uint64_t * pulFrameCounter); 2801 | int32_t (OPENVR_FNTABLE_CALLTYPE *GetD3D9AdapterIndex)(); 2802 | void (OPENVR_FNTABLE_CALLTYPE *GetDXGIOutputInfo)(int32_t * pnAdapterIndex); 2803 | void (OPENVR_FNTABLE_CALLTYPE *GetOutputDevice)(uint64_t * pnDevice, ETextureType textureType, struct VkInstance_T * pInstance); 2804 | bool (OPENVR_FNTABLE_CALLTYPE *IsDisplayOnDesktop)(); 2805 | bool (OPENVR_FNTABLE_CALLTYPE *SetDisplayVisibility)(bool bIsVisibleOnDesktop); 2806 | void (OPENVR_FNTABLE_CALLTYPE *GetDeviceToAbsoluteTrackingPose)(ETrackingUniverseOrigin eOrigin, float fPredictedSecondsToPhotonsFromNow, struct TrackedDevicePose_t * pTrackedDevicePoseArray, uint32_t unTrackedDevicePoseArrayCount); 2807 | struct HmdMatrix34_t (OPENVR_FNTABLE_CALLTYPE *GetSeatedZeroPoseToStandingAbsoluteTrackingPose)(); 2808 | struct HmdMatrix34_t (OPENVR_FNTABLE_CALLTYPE *GetRawZeroPoseToStandingAbsoluteTrackingPose)(); 2809 | uint32_t (OPENVR_FNTABLE_CALLTYPE *GetSortedTrackedDeviceIndicesOfClass)(ETrackedDeviceClass eTrackedDeviceClass, TrackedDeviceIndex_t * punTrackedDeviceIndexArray, uint32_t unTrackedDeviceIndexArrayCount, TrackedDeviceIndex_t unRelativeToTrackedDeviceIndex); 2810 | EDeviceActivityLevel (OPENVR_FNTABLE_CALLTYPE *GetTrackedDeviceActivityLevel)(TrackedDeviceIndex_t unDeviceId); 2811 | void (OPENVR_FNTABLE_CALLTYPE *ApplyTransform)(struct TrackedDevicePose_t * pOutputPose, struct TrackedDevicePose_t * pTrackedDevicePose, struct HmdMatrix34_t * pTransform); 2812 | TrackedDeviceIndex_t (OPENVR_FNTABLE_CALLTYPE *GetTrackedDeviceIndexForControllerRole)(ETrackedControllerRole unDeviceType); 2813 | ETrackedControllerRole (OPENVR_FNTABLE_CALLTYPE *GetControllerRoleForTrackedDeviceIndex)(TrackedDeviceIndex_t unDeviceIndex); 2814 | ETrackedDeviceClass (OPENVR_FNTABLE_CALLTYPE *GetTrackedDeviceClass)(TrackedDeviceIndex_t unDeviceIndex); 2815 | bool (OPENVR_FNTABLE_CALLTYPE *IsTrackedDeviceConnected)(TrackedDeviceIndex_t unDeviceIndex); 2816 | bool (OPENVR_FNTABLE_CALLTYPE *GetBoolTrackedDeviceProperty)(TrackedDeviceIndex_t unDeviceIndex, ETrackedDeviceProperty prop, ETrackedPropertyError * pError); 2817 | float (OPENVR_FNTABLE_CALLTYPE *GetFloatTrackedDeviceProperty)(TrackedDeviceIndex_t unDeviceIndex, ETrackedDeviceProperty prop, ETrackedPropertyError * pError); 2818 | int32_t (OPENVR_FNTABLE_CALLTYPE *GetInt32TrackedDeviceProperty)(TrackedDeviceIndex_t unDeviceIndex, ETrackedDeviceProperty prop, ETrackedPropertyError * pError); 2819 | uint64_t (OPENVR_FNTABLE_CALLTYPE *GetUint64TrackedDeviceProperty)(TrackedDeviceIndex_t unDeviceIndex, ETrackedDeviceProperty prop, ETrackedPropertyError * pError); 2820 | struct HmdMatrix34_t (OPENVR_FNTABLE_CALLTYPE *GetMatrix34TrackedDeviceProperty)(TrackedDeviceIndex_t unDeviceIndex, ETrackedDeviceProperty prop, ETrackedPropertyError * pError); 2821 | uint32_t (OPENVR_FNTABLE_CALLTYPE *GetArrayTrackedDeviceProperty)(TrackedDeviceIndex_t unDeviceIndex, ETrackedDeviceProperty prop, PropertyTypeTag_t propType, void * pBuffer, uint32_t unBufferSize, ETrackedPropertyError * pError); 2822 | uint32_t (OPENVR_FNTABLE_CALLTYPE *GetStringTrackedDeviceProperty)(TrackedDeviceIndex_t unDeviceIndex, ETrackedDeviceProperty prop, char * pchValue, uint32_t unBufferSize, ETrackedPropertyError * pError); 2823 | char * (OPENVR_FNTABLE_CALLTYPE *GetPropErrorNameFromEnum)(ETrackedPropertyError error); 2824 | bool (OPENVR_FNTABLE_CALLTYPE *PollNextEvent)(struct VREvent_t * pEvent, uint32_t uncbVREvent); 2825 | bool (OPENVR_FNTABLE_CALLTYPE *PollNextEventWithPose)(ETrackingUniverseOrigin eOrigin, struct VREvent_t * pEvent, uint32_t uncbVREvent, TrackedDevicePose_t * pTrackedDevicePose); 2826 | char * (OPENVR_FNTABLE_CALLTYPE *GetEventTypeNameFromEnum)(EVREventType eType); 2827 | struct HiddenAreaMesh_t (OPENVR_FNTABLE_CALLTYPE *GetHiddenAreaMesh)(EVREye eEye, EHiddenAreaMeshType type); 2828 | bool (OPENVR_FNTABLE_CALLTYPE *GetControllerState)(TrackedDeviceIndex_t unControllerDeviceIndex, VRControllerState_t * pControllerState, uint32_t unControllerStateSize); 2829 | bool (OPENVR_FNTABLE_CALLTYPE *GetControllerStateWithPose)(ETrackingUniverseOrigin eOrigin, TrackedDeviceIndex_t unControllerDeviceIndex, VRControllerState_t * pControllerState, uint32_t unControllerStateSize, struct TrackedDevicePose_t * pTrackedDevicePose); 2830 | void (OPENVR_FNTABLE_CALLTYPE *TriggerHapticPulse)(TrackedDeviceIndex_t unControllerDeviceIndex, uint32_t unAxisId, unsigned short usDurationMicroSec); 2831 | char * (OPENVR_FNTABLE_CALLTYPE *GetButtonIdNameFromEnum)(EVRButtonId eButtonId); 2832 | char * (OPENVR_FNTABLE_CALLTYPE *GetControllerAxisTypeNameFromEnum)(EVRControllerAxisType eAxisType); 2833 | bool (OPENVR_FNTABLE_CALLTYPE *IsInputAvailable)(); 2834 | bool (OPENVR_FNTABLE_CALLTYPE *IsSteamVRDrawingControllers)(); 2835 | bool (OPENVR_FNTABLE_CALLTYPE *ShouldApplicationPause)(); 2836 | bool (OPENVR_FNTABLE_CALLTYPE *ShouldApplicationReduceRenderingWork)(); 2837 | EVRFirmwareError (OPENVR_FNTABLE_CALLTYPE *PerformFirmwareUpdate)(TrackedDeviceIndex_t unDeviceIndex); 2838 | void (OPENVR_FNTABLE_CALLTYPE *AcknowledgeQuit_Exiting)(); 2839 | uint32_t (OPENVR_FNTABLE_CALLTYPE *GetAppContainerFilePaths)(char * pchBuffer, uint32_t unBufferSize); 2840 | char * (OPENVR_FNTABLE_CALLTYPE *GetRuntimeVersion)(); 2841 | }; 2842 | 2843 | struct VR_IVRExtendedDisplay_FnTable 2844 | { 2845 | void (OPENVR_FNTABLE_CALLTYPE *GetWindowBounds)(int32_t * pnX, int32_t * pnY, uint32_t * pnWidth, uint32_t * pnHeight); 2846 | void (OPENVR_FNTABLE_CALLTYPE *GetEyeOutputViewport)(EVREye eEye, uint32_t * pnX, uint32_t * pnY, uint32_t * pnWidth, uint32_t * pnHeight); 2847 | void (OPENVR_FNTABLE_CALLTYPE *GetDXGIOutputInfo)(int32_t * pnAdapterIndex, int32_t * pnAdapterOutputIndex); 2848 | }; 2849 | 2850 | struct VR_IVRTrackedCamera_FnTable 2851 | { 2852 | char * (OPENVR_FNTABLE_CALLTYPE *GetCameraErrorNameFromEnum)(EVRTrackedCameraError eCameraError); 2853 | EVRTrackedCameraError (OPENVR_FNTABLE_CALLTYPE *HasCamera)(TrackedDeviceIndex_t nDeviceIndex, bool * pHasCamera); 2854 | EVRTrackedCameraError (OPENVR_FNTABLE_CALLTYPE *GetCameraFrameSize)(TrackedDeviceIndex_t nDeviceIndex, EVRTrackedCameraFrameType eFrameType, uint32_t * pnWidth, uint32_t * pnHeight, uint32_t * pnFrameBufferSize); 2855 | EVRTrackedCameraError (OPENVR_FNTABLE_CALLTYPE *GetCameraIntrinsics)(TrackedDeviceIndex_t nDeviceIndex, uint32_t nCameraIndex, EVRTrackedCameraFrameType eFrameType, HmdVector2_t * pFocalLength, HmdVector2_t * pCenter); 2856 | EVRTrackedCameraError (OPENVR_FNTABLE_CALLTYPE *GetCameraProjection)(TrackedDeviceIndex_t nDeviceIndex, uint32_t nCameraIndex, EVRTrackedCameraFrameType eFrameType, float flZNear, float flZFar, HmdMatrix44_t * pProjection); 2857 | EVRTrackedCameraError (OPENVR_FNTABLE_CALLTYPE *AcquireVideoStreamingService)(TrackedDeviceIndex_t nDeviceIndex, TrackedCameraHandle_t * pHandle); 2858 | EVRTrackedCameraError (OPENVR_FNTABLE_CALLTYPE *ReleaseVideoStreamingService)(TrackedCameraHandle_t hTrackedCamera); 2859 | EVRTrackedCameraError (OPENVR_FNTABLE_CALLTYPE *GetVideoStreamFrameBuffer)(TrackedCameraHandle_t hTrackedCamera, EVRTrackedCameraFrameType eFrameType, void * pFrameBuffer, uint32_t nFrameBufferSize, CameraVideoStreamFrameHeader_t * pFrameHeader, uint32_t nFrameHeaderSize); 2860 | EVRTrackedCameraError (OPENVR_FNTABLE_CALLTYPE *GetVideoStreamTextureSize)(TrackedDeviceIndex_t nDeviceIndex, EVRTrackedCameraFrameType eFrameType, VRTextureBounds_t * pTextureBounds, uint32_t * pnWidth, uint32_t * pnHeight); 2861 | EVRTrackedCameraError (OPENVR_FNTABLE_CALLTYPE *GetVideoStreamTextureD3D11)(TrackedCameraHandle_t hTrackedCamera, EVRTrackedCameraFrameType eFrameType, void * pD3D11DeviceOrResource, void ** ppD3D11ShaderResourceView, CameraVideoStreamFrameHeader_t * pFrameHeader, uint32_t nFrameHeaderSize); 2862 | EVRTrackedCameraError (OPENVR_FNTABLE_CALLTYPE *GetVideoStreamTextureGL)(TrackedCameraHandle_t hTrackedCamera, EVRTrackedCameraFrameType eFrameType, glUInt_t * pglTextureId, CameraVideoStreamFrameHeader_t * pFrameHeader, uint32_t nFrameHeaderSize); 2863 | EVRTrackedCameraError (OPENVR_FNTABLE_CALLTYPE *ReleaseVideoStreamTextureGL)(TrackedCameraHandle_t hTrackedCamera, glUInt_t glTextureId); 2864 | void (OPENVR_FNTABLE_CALLTYPE *SetCameraTrackingSpace)(ETrackingUniverseOrigin eUniverse); 2865 | ETrackingUniverseOrigin (OPENVR_FNTABLE_CALLTYPE *GetCameraTrackingSpace)(); 2866 | }; 2867 | 2868 | struct VR_IVRApplications_FnTable 2869 | { 2870 | EVRApplicationError (OPENVR_FNTABLE_CALLTYPE *AddApplicationManifest)(char * pchApplicationManifestFullPath, bool bTemporary); 2871 | EVRApplicationError (OPENVR_FNTABLE_CALLTYPE *RemoveApplicationManifest)(char * pchApplicationManifestFullPath); 2872 | bool (OPENVR_FNTABLE_CALLTYPE *IsApplicationInstalled)(char * pchAppKey); 2873 | uint32_t (OPENVR_FNTABLE_CALLTYPE *GetApplicationCount)(); 2874 | EVRApplicationError (OPENVR_FNTABLE_CALLTYPE *GetApplicationKeyByIndex)(uint32_t unApplicationIndex, char * pchAppKeyBuffer, uint32_t unAppKeyBufferLen); 2875 | EVRApplicationError (OPENVR_FNTABLE_CALLTYPE *GetApplicationKeyByProcessId)(uint32_t unProcessId, char * pchAppKeyBuffer, uint32_t unAppKeyBufferLen); 2876 | EVRApplicationError (OPENVR_FNTABLE_CALLTYPE *LaunchApplication)(char * pchAppKey); 2877 | EVRApplicationError (OPENVR_FNTABLE_CALLTYPE *LaunchTemplateApplication)(char * pchTemplateAppKey, char * pchNewAppKey, struct AppOverrideKeys_t * pKeys, uint32_t unKeys); 2878 | EVRApplicationError (OPENVR_FNTABLE_CALLTYPE *LaunchApplicationFromMimeType)(char * pchMimeType, char * pchArgs); 2879 | EVRApplicationError (OPENVR_FNTABLE_CALLTYPE *LaunchDashboardOverlay)(char * pchAppKey); 2880 | bool (OPENVR_FNTABLE_CALLTYPE *CancelApplicationLaunch)(char * pchAppKey); 2881 | EVRApplicationError (OPENVR_FNTABLE_CALLTYPE *IdentifyApplication)(uint32_t unProcessId, char * pchAppKey); 2882 | uint32_t (OPENVR_FNTABLE_CALLTYPE *GetApplicationProcessId)(char * pchAppKey); 2883 | char * (OPENVR_FNTABLE_CALLTYPE *GetApplicationsErrorNameFromEnum)(EVRApplicationError error); 2884 | uint32_t (OPENVR_FNTABLE_CALLTYPE *GetApplicationPropertyString)(char * pchAppKey, EVRApplicationProperty eProperty, char * pchPropertyValueBuffer, uint32_t unPropertyValueBufferLen, EVRApplicationError * peError); 2885 | bool (OPENVR_FNTABLE_CALLTYPE *GetApplicationPropertyBool)(char * pchAppKey, EVRApplicationProperty eProperty, EVRApplicationError * peError); 2886 | uint64_t (OPENVR_FNTABLE_CALLTYPE *GetApplicationPropertyUint64)(char * pchAppKey, EVRApplicationProperty eProperty, EVRApplicationError * peError); 2887 | EVRApplicationError (OPENVR_FNTABLE_CALLTYPE *SetApplicationAutoLaunch)(char * pchAppKey, bool bAutoLaunch); 2888 | bool (OPENVR_FNTABLE_CALLTYPE *GetApplicationAutoLaunch)(char * pchAppKey); 2889 | EVRApplicationError (OPENVR_FNTABLE_CALLTYPE *SetDefaultApplicationForMimeType)(char * pchAppKey, char * pchMimeType); 2890 | bool (OPENVR_FNTABLE_CALLTYPE *GetDefaultApplicationForMimeType)(char * pchMimeType, char * pchAppKeyBuffer, uint32_t unAppKeyBufferLen); 2891 | bool (OPENVR_FNTABLE_CALLTYPE *GetApplicationSupportedMimeTypes)(char * pchAppKey, char * pchMimeTypesBuffer, uint32_t unMimeTypesBuffer); 2892 | uint32_t (OPENVR_FNTABLE_CALLTYPE *GetApplicationsThatSupportMimeType)(char * pchMimeType, char * pchAppKeysThatSupportBuffer, uint32_t unAppKeysThatSupportBuffer); 2893 | uint32_t (OPENVR_FNTABLE_CALLTYPE *GetApplicationLaunchArguments)(uint32_t unHandle, char * pchArgs, uint32_t unArgs); 2894 | EVRApplicationError (OPENVR_FNTABLE_CALLTYPE *GetStartingApplication)(char * pchAppKeyBuffer, uint32_t unAppKeyBufferLen); 2895 | EVRSceneApplicationState (OPENVR_FNTABLE_CALLTYPE *GetSceneApplicationState)(); 2896 | EVRApplicationError (OPENVR_FNTABLE_CALLTYPE *PerformApplicationPrelaunchCheck)(char * pchAppKey); 2897 | char * (OPENVR_FNTABLE_CALLTYPE *GetSceneApplicationStateNameFromEnum)(EVRSceneApplicationState state); 2898 | EVRApplicationError (OPENVR_FNTABLE_CALLTYPE *LaunchInternalProcess)(char * pchBinaryPath, char * pchArguments, char * pchWorkingDirectory); 2899 | uint32_t (OPENVR_FNTABLE_CALLTYPE *GetCurrentSceneProcessId)(); 2900 | }; 2901 | 2902 | struct VR_IVRChaperone_FnTable 2903 | { 2904 | ChaperoneCalibrationState (OPENVR_FNTABLE_CALLTYPE *GetCalibrationState)(); 2905 | bool (OPENVR_FNTABLE_CALLTYPE *GetPlayAreaSize)(float * pSizeX, float * pSizeZ); 2906 | bool (OPENVR_FNTABLE_CALLTYPE *GetPlayAreaRect)(struct HmdQuad_t * rect); 2907 | void (OPENVR_FNTABLE_CALLTYPE *ReloadInfo)(); 2908 | void (OPENVR_FNTABLE_CALLTYPE *SetSceneColor)(struct HmdColor_t color); 2909 | void (OPENVR_FNTABLE_CALLTYPE *GetBoundsColor)(struct HmdColor_t * pOutputColorArray, int nNumOutputColors, float flCollisionBoundsFadeDistance, struct HmdColor_t * pOutputCameraColor); 2910 | bool (OPENVR_FNTABLE_CALLTYPE *AreBoundsVisible)(); 2911 | void (OPENVR_FNTABLE_CALLTYPE *ForceBoundsVisible)(bool bForce); 2912 | void (OPENVR_FNTABLE_CALLTYPE *ResetZeroPose)(ETrackingUniverseOrigin eTrackingUniverseOrigin); 2913 | }; 2914 | 2915 | struct VR_IVRChaperoneSetup_FnTable 2916 | { 2917 | bool (OPENVR_FNTABLE_CALLTYPE *CommitWorkingCopy)(EChaperoneConfigFile configFile); 2918 | void (OPENVR_FNTABLE_CALLTYPE *RevertWorkingCopy)(); 2919 | bool (OPENVR_FNTABLE_CALLTYPE *GetWorkingPlayAreaSize)(float * pSizeX, float * pSizeZ); 2920 | bool (OPENVR_FNTABLE_CALLTYPE *GetWorkingPlayAreaRect)(struct HmdQuad_t * rect); 2921 | bool (OPENVR_FNTABLE_CALLTYPE *GetWorkingCollisionBoundsInfo)(struct HmdQuad_t * pQuadsBuffer, uint32_t * punQuadsCount); 2922 | bool (OPENVR_FNTABLE_CALLTYPE *GetLiveCollisionBoundsInfo)(struct HmdQuad_t * pQuadsBuffer, uint32_t * punQuadsCount); 2923 | bool (OPENVR_FNTABLE_CALLTYPE *GetWorkingSeatedZeroPoseToRawTrackingPose)(struct HmdMatrix34_t * pmatSeatedZeroPoseToRawTrackingPose); 2924 | bool (OPENVR_FNTABLE_CALLTYPE *GetWorkingStandingZeroPoseToRawTrackingPose)(struct HmdMatrix34_t * pmatStandingZeroPoseToRawTrackingPose); 2925 | void (OPENVR_FNTABLE_CALLTYPE *SetWorkingPlayAreaSize)(float sizeX, float sizeZ); 2926 | void (OPENVR_FNTABLE_CALLTYPE *SetWorkingCollisionBoundsInfo)(struct HmdQuad_t * pQuadsBuffer, uint32_t unQuadsCount); 2927 | void (OPENVR_FNTABLE_CALLTYPE *SetWorkingPerimeter)(struct HmdVector2_t * pPointBuffer, uint32_t unPointCount); 2928 | void (OPENVR_FNTABLE_CALLTYPE *SetWorkingSeatedZeroPoseToRawTrackingPose)(struct HmdMatrix34_t * pMatSeatedZeroPoseToRawTrackingPose); 2929 | void (OPENVR_FNTABLE_CALLTYPE *SetWorkingStandingZeroPoseToRawTrackingPose)(struct HmdMatrix34_t * pMatStandingZeroPoseToRawTrackingPose); 2930 | void (OPENVR_FNTABLE_CALLTYPE *ReloadFromDisk)(EChaperoneConfigFile configFile); 2931 | bool (OPENVR_FNTABLE_CALLTYPE *GetLiveSeatedZeroPoseToRawTrackingPose)(struct HmdMatrix34_t * pmatSeatedZeroPoseToRawTrackingPose); 2932 | bool (OPENVR_FNTABLE_CALLTYPE *ExportLiveToBuffer)(char * pBuffer, uint32_t * pnBufferLength); 2933 | bool (OPENVR_FNTABLE_CALLTYPE *ImportFromBufferToWorking)(char * pBuffer, uint32_t nImportFlags); 2934 | void (OPENVR_FNTABLE_CALLTYPE *ShowWorkingSetPreview)(); 2935 | void (OPENVR_FNTABLE_CALLTYPE *HideWorkingSetPreview)(); 2936 | void (OPENVR_FNTABLE_CALLTYPE *RoomSetupStarting)(); 2937 | }; 2938 | 2939 | struct VR_IVRCompositor_FnTable 2940 | { 2941 | void (OPENVR_FNTABLE_CALLTYPE *SetTrackingSpace)(ETrackingUniverseOrigin eOrigin); 2942 | ETrackingUniverseOrigin (OPENVR_FNTABLE_CALLTYPE *GetTrackingSpace)(); 2943 | EVRCompositorError (OPENVR_FNTABLE_CALLTYPE *WaitGetPoses)(struct TrackedDevicePose_t * pRenderPoseArray, uint32_t unRenderPoseArrayCount, struct TrackedDevicePose_t * pGamePoseArray, uint32_t unGamePoseArrayCount); 2944 | EVRCompositorError (OPENVR_FNTABLE_CALLTYPE *GetLastPoses)(struct TrackedDevicePose_t * pRenderPoseArray, uint32_t unRenderPoseArrayCount, struct TrackedDevicePose_t * pGamePoseArray, uint32_t unGamePoseArrayCount); 2945 | EVRCompositorError (OPENVR_FNTABLE_CALLTYPE *GetLastPoseForTrackedDeviceIndex)(TrackedDeviceIndex_t unDeviceIndex, struct TrackedDevicePose_t * pOutputPose, struct TrackedDevicePose_t * pOutputGamePose); 2946 | EVRCompositorError (OPENVR_FNTABLE_CALLTYPE *Submit)(EVREye eEye, struct Texture_t * pTexture, struct VRTextureBounds_t * pBounds, EVRSubmitFlags nSubmitFlags); 2947 | EVRCompositorError (OPENVR_FNTABLE_CALLTYPE *SubmitWithArrayIndex)(EVREye eEye, struct Texture_t * pTexture, uint32_t unTextureArrayIndex, struct VRTextureBounds_t * pBounds, EVRSubmitFlags nSubmitFlags); 2948 | void (OPENVR_FNTABLE_CALLTYPE *ClearLastSubmittedFrame)(); 2949 | void (OPENVR_FNTABLE_CALLTYPE *PostPresentHandoff)(); 2950 | bool (OPENVR_FNTABLE_CALLTYPE *GetFrameTiming)(struct Compositor_FrameTiming * pTiming, uint32_t unFramesAgo); 2951 | uint32_t (OPENVR_FNTABLE_CALLTYPE *GetFrameTimings)(struct Compositor_FrameTiming * pTiming, uint32_t nFrames); 2952 | float (OPENVR_FNTABLE_CALLTYPE *GetFrameTimeRemaining)(); 2953 | void (OPENVR_FNTABLE_CALLTYPE *GetCumulativeStats)(struct Compositor_CumulativeStats * pStats, uint32_t nStatsSizeInBytes); 2954 | void (OPENVR_FNTABLE_CALLTYPE *FadeToColor)(float fSeconds, float fRed, float fGreen, float fBlue, float fAlpha, bool bBackground); 2955 | struct HmdColor_t (OPENVR_FNTABLE_CALLTYPE *GetCurrentFadeColor)(bool bBackground); 2956 | void (OPENVR_FNTABLE_CALLTYPE *FadeGrid)(float fSeconds, bool bFadeGridIn); 2957 | float (OPENVR_FNTABLE_CALLTYPE *GetCurrentGridAlpha)(); 2958 | EVRCompositorError (OPENVR_FNTABLE_CALLTYPE *SetSkyboxOverride)(struct Texture_t * pTextures, uint32_t unTextureCount); 2959 | void (OPENVR_FNTABLE_CALLTYPE *ClearSkyboxOverride)(); 2960 | void (OPENVR_FNTABLE_CALLTYPE *CompositorBringToFront)(); 2961 | void (OPENVR_FNTABLE_CALLTYPE *CompositorGoToBack)(); 2962 | void (OPENVR_FNTABLE_CALLTYPE *CompositorQuit)(); 2963 | bool (OPENVR_FNTABLE_CALLTYPE *IsFullscreen)(); 2964 | uint32_t (OPENVR_FNTABLE_CALLTYPE *GetCurrentSceneFocusProcess)(); 2965 | uint32_t (OPENVR_FNTABLE_CALLTYPE *GetLastFrameRenderer)(); 2966 | bool (OPENVR_FNTABLE_CALLTYPE *CanRenderScene)(); 2967 | void (OPENVR_FNTABLE_CALLTYPE *ShowMirrorWindow)(); 2968 | void (OPENVR_FNTABLE_CALLTYPE *HideMirrorWindow)(); 2969 | bool (OPENVR_FNTABLE_CALLTYPE *IsMirrorWindowVisible)(); 2970 | void (OPENVR_FNTABLE_CALLTYPE *CompositorDumpImages)(); 2971 | bool (OPENVR_FNTABLE_CALLTYPE *ShouldAppRenderWithLowResources)(); 2972 | void (OPENVR_FNTABLE_CALLTYPE *ForceInterleavedReprojectionOn)(bool bOverride); 2973 | void (OPENVR_FNTABLE_CALLTYPE *ForceReconnectProcess)(); 2974 | void (OPENVR_FNTABLE_CALLTYPE *SuspendRendering)(bool bSuspend); 2975 | EVRCompositorError (OPENVR_FNTABLE_CALLTYPE *GetMirrorTextureD3D11)(EVREye eEye, void * pD3D11DeviceOrResource, void ** ppD3D11ShaderResourceView); 2976 | void (OPENVR_FNTABLE_CALLTYPE *ReleaseMirrorTextureD3D11)(void * pD3D11ShaderResourceView); 2977 | EVRCompositorError (OPENVR_FNTABLE_CALLTYPE *GetMirrorTextureGL)(EVREye eEye, glUInt_t * pglTextureId, glSharedTextureHandle_t * pglSharedTextureHandle); 2978 | bool (OPENVR_FNTABLE_CALLTYPE *ReleaseSharedGLTexture)(glUInt_t glTextureId, glSharedTextureHandle_t glSharedTextureHandle); 2979 | void (OPENVR_FNTABLE_CALLTYPE *LockGLSharedTextureForAccess)(glSharedTextureHandle_t glSharedTextureHandle); 2980 | void (OPENVR_FNTABLE_CALLTYPE *UnlockGLSharedTextureForAccess)(glSharedTextureHandle_t glSharedTextureHandle); 2981 | uint32_t (OPENVR_FNTABLE_CALLTYPE *GetVulkanInstanceExtensionsRequired)(char * pchValue, uint32_t unBufferSize); 2982 | uint32_t (OPENVR_FNTABLE_CALLTYPE *GetVulkanDeviceExtensionsRequired)(struct VkPhysicalDevice_T * pPhysicalDevice, char * pchValue, uint32_t unBufferSize); 2983 | void (OPENVR_FNTABLE_CALLTYPE *SetExplicitTimingMode)(EVRCompositorTimingMode eTimingMode); 2984 | EVRCompositorError (OPENVR_FNTABLE_CALLTYPE *SubmitExplicitTimingData)(); 2985 | bool (OPENVR_FNTABLE_CALLTYPE *IsMotionSmoothingEnabled)(); 2986 | bool (OPENVR_FNTABLE_CALLTYPE *IsMotionSmoothingSupported)(); 2987 | bool (OPENVR_FNTABLE_CALLTYPE *IsCurrentSceneFocusAppLoading)(); 2988 | EVRCompositorError (OPENVR_FNTABLE_CALLTYPE *SetStageOverride_Async)(char * pchRenderModelPath, struct HmdMatrix34_t * pTransform, struct Compositor_StageRenderSettings * pRenderSettings, uint32_t nSizeOfRenderSettings); 2989 | void (OPENVR_FNTABLE_CALLTYPE *ClearStageOverride)(); 2990 | bool (OPENVR_FNTABLE_CALLTYPE *GetCompositorBenchmarkResults)(struct Compositor_BenchmarkResults * pBenchmarkResults, uint32_t nSizeOfBenchmarkResults); 2991 | EVRCompositorError (OPENVR_FNTABLE_CALLTYPE *GetLastPosePredictionIDs)(uint32_t * pRenderPosePredictionID, uint32_t * pGamePosePredictionID); 2992 | EVRCompositorError (OPENVR_FNTABLE_CALLTYPE *GetPosesForFrame)(uint32_t unPosePredictionID, struct TrackedDevicePose_t * pPoseArray, uint32_t unPoseArrayCount); 2993 | }; 2994 | 2995 | struct VR_IVROverlay_FnTable 2996 | { 2997 | EVROverlayError (OPENVR_FNTABLE_CALLTYPE *FindOverlay)(char * pchOverlayKey, VROverlayHandle_t * pOverlayHandle); 2998 | EVROverlayError (OPENVR_FNTABLE_CALLTYPE *CreateOverlay)(char * pchOverlayKey, char * pchOverlayName, VROverlayHandle_t * pOverlayHandle); 2999 | EVROverlayError (OPENVR_FNTABLE_CALLTYPE *DestroyOverlay)(VROverlayHandle_t ulOverlayHandle); 3000 | uint32_t (OPENVR_FNTABLE_CALLTYPE *GetOverlayKey)(VROverlayHandle_t ulOverlayHandle, char * pchValue, uint32_t unBufferSize, EVROverlayError * pError); 3001 | uint32_t (OPENVR_FNTABLE_CALLTYPE *GetOverlayName)(VROverlayHandle_t ulOverlayHandle, char * pchValue, uint32_t unBufferSize, EVROverlayError * pError); 3002 | EVROverlayError (OPENVR_FNTABLE_CALLTYPE *SetOverlayName)(VROverlayHandle_t ulOverlayHandle, char * pchName); 3003 | EVROverlayError (OPENVR_FNTABLE_CALLTYPE *GetOverlayImageData)(VROverlayHandle_t ulOverlayHandle, void * pvBuffer, uint32_t unBufferSize, uint32_t * punWidth, uint32_t * punHeight); 3004 | char * (OPENVR_FNTABLE_CALLTYPE *GetOverlayErrorNameFromEnum)(EVROverlayError error); 3005 | EVROverlayError (OPENVR_FNTABLE_CALLTYPE *SetOverlayRenderingPid)(VROverlayHandle_t ulOverlayHandle, uint32_t unPID); 3006 | uint32_t (OPENVR_FNTABLE_CALLTYPE *GetOverlayRenderingPid)(VROverlayHandle_t ulOverlayHandle); 3007 | EVROverlayError (OPENVR_FNTABLE_CALLTYPE *SetOverlayFlag)(VROverlayHandle_t ulOverlayHandle, VROverlayFlags eOverlayFlag, bool bEnabled); 3008 | EVROverlayError (OPENVR_FNTABLE_CALLTYPE *GetOverlayFlag)(VROverlayHandle_t ulOverlayHandle, VROverlayFlags eOverlayFlag, bool * pbEnabled); 3009 | EVROverlayError (OPENVR_FNTABLE_CALLTYPE *GetOverlayFlags)(VROverlayHandle_t ulOverlayHandle, uint32_t * pFlags); 3010 | EVROverlayError (OPENVR_FNTABLE_CALLTYPE *SetOverlayColor)(VROverlayHandle_t ulOverlayHandle, float fRed, float fGreen, float fBlue); 3011 | EVROverlayError (OPENVR_FNTABLE_CALLTYPE *GetOverlayColor)(VROverlayHandle_t ulOverlayHandle, float * pfRed, float * pfGreen, float * pfBlue); 3012 | EVROverlayError (OPENVR_FNTABLE_CALLTYPE *SetOverlayAlpha)(VROverlayHandle_t ulOverlayHandle, float fAlpha); 3013 | EVROverlayError (OPENVR_FNTABLE_CALLTYPE *GetOverlayAlpha)(VROverlayHandle_t ulOverlayHandle, float * pfAlpha); 3014 | EVROverlayError (OPENVR_FNTABLE_CALLTYPE *SetOverlayTexelAspect)(VROverlayHandle_t ulOverlayHandle, float fTexelAspect); 3015 | EVROverlayError (OPENVR_FNTABLE_CALLTYPE *GetOverlayTexelAspect)(VROverlayHandle_t ulOverlayHandle, float * pfTexelAspect); 3016 | EVROverlayError (OPENVR_FNTABLE_CALLTYPE *SetOverlaySortOrder)(VROverlayHandle_t ulOverlayHandle, uint32_t unSortOrder); 3017 | EVROverlayError (OPENVR_FNTABLE_CALLTYPE *GetOverlaySortOrder)(VROverlayHandle_t ulOverlayHandle, uint32_t * punSortOrder); 3018 | EVROverlayError (OPENVR_FNTABLE_CALLTYPE *SetOverlayWidthInMeters)(VROverlayHandle_t ulOverlayHandle, float fWidthInMeters); 3019 | EVROverlayError (OPENVR_FNTABLE_CALLTYPE *GetOverlayWidthInMeters)(VROverlayHandle_t ulOverlayHandle, float * pfWidthInMeters); 3020 | EVROverlayError (OPENVR_FNTABLE_CALLTYPE *SetOverlayCurvature)(VROverlayHandle_t ulOverlayHandle, float fCurvature); 3021 | EVROverlayError (OPENVR_FNTABLE_CALLTYPE *GetOverlayCurvature)(VROverlayHandle_t ulOverlayHandle, float * pfCurvature); 3022 | EVROverlayError (OPENVR_FNTABLE_CALLTYPE *SetOverlayPreCurvePitch)(VROverlayHandle_t ulOverlayHandle, float fRadians); 3023 | EVROverlayError (OPENVR_FNTABLE_CALLTYPE *GetOverlayPreCurvePitch)(VROverlayHandle_t ulOverlayHandle, float * pfRadians); 3024 | EVROverlayError (OPENVR_FNTABLE_CALLTYPE *SetOverlayTextureColorSpace)(VROverlayHandle_t ulOverlayHandle, EColorSpace eTextureColorSpace); 3025 | EVROverlayError (OPENVR_FNTABLE_CALLTYPE *GetOverlayTextureColorSpace)(VROverlayHandle_t ulOverlayHandle, EColorSpace * peTextureColorSpace); 3026 | EVROverlayError (OPENVR_FNTABLE_CALLTYPE *SetOverlayTextureBounds)(VROverlayHandle_t ulOverlayHandle, struct VRTextureBounds_t * pOverlayTextureBounds); 3027 | EVROverlayError (OPENVR_FNTABLE_CALLTYPE *GetOverlayTextureBounds)(VROverlayHandle_t ulOverlayHandle, struct VRTextureBounds_t * pOverlayTextureBounds); 3028 | EVROverlayError (OPENVR_FNTABLE_CALLTYPE *GetOverlayTransformType)(VROverlayHandle_t ulOverlayHandle, VROverlayTransformType * peTransformType); 3029 | EVROverlayError (OPENVR_FNTABLE_CALLTYPE *SetOverlayTransformAbsolute)(VROverlayHandle_t ulOverlayHandle, ETrackingUniverseOrigin eTrackingOrigin, struct HmdMatrix34_t * pmatTrackingOriginToOverlayTransform); 3030 | EVROverlayError (OPENVR_FNTABLE_CALLTYPE *GetOverlayTransformAbsolute)(VROverlayHandle_t ulOverlayHandle, ETrackingUniverseOrigin * peTrackingOrigin, struct HmdMatrix34_t * pmatTrackingOriginToOverlayTransform); 3031 | EVROverlayError (OPENVR_FNTABLE_CALLTYPE *SetOverlayTransformTrackedDeviceRelative)(VROverlayHandle_t ulOverlayHandle, TrackedDeviceIndex_t unTrackedDevice, struct HmdMatrix34_t * pmatTrackedDeviceToOverlayTransform); 3032 | EVROverlayError (OPENVR_FNTABLE_CALLTYPE *GetOverlayTransformTrackedDeviceRelative)(VROverlayHandle_t ulOverlayHandle, TrackedDeviceIndex_t * punTrackedDevice, struct HmdMatrix34_t * pmatTrackedDeviceToOverlayTransform); 3033 | EVROverlayError (OPENVR_FNTABLE_CALLTYPE *SetOverlayTransformTrackedDeviceComponent)(VROverlayHandle_t ulOverlayHandle, TrackedDeviceIndex_t unDeviceIndex, char * pchComponentName); 3034 | EVROverlayError (OPENVR_FNTABLE_CALLTYPE *GetOverlayTransformTrackedDeviceComponent)(VROverlayHandle_t ulOverlayHandle, TrackedDeviceIndex_t * punDeviceIndex, char * pchComponentName, uint32_t unComponentNameSize); 3035 | EVROverlayError (OPENVR_FNTABLE_CALLTYPE *SetOverlayTransformCursor)(VROverlayHandle_t ulCursorOverlayHandle, struct HmdVector2_t * pvHotspot); 3036 | EVROverlayError (OPENVR_FNTABLE_CALLTYPE *GetOverlayTransformCursor)(VROverlayHandle_t ulOverlayHandle, struct HmdVector2_t * pvHotspot); 3037 | EVROverlayError (OPENVR_FNTABLE_CALLTYPE *SetOverlayTransformProjection)(VROverlayHandle_t ulOverlayHandle, ETrackingUniverseOrigin eTrackingOrigin, struct HmdMatrix34_t * pmatTrackingOriginToOverlayTransform, struct VROverlayProjection_t * pProjection, EVREye eEye); 3038 | EVROverlayError (OPENVR_FNTABLE_CALLTYPE *ShowOverlay)(VROverlayHandle_t ulOverlayHandle); 3039 | EVROverlayError (OPENVR_FNTABLE_CALLTYPE *HideOverlay)(VROverlayHandle_t ulOverlayHandle); 3040 | bool (OPENVR_FNTABLE_CALLTYPE *IsOverlayVisible)(VROverlayHandle_t ulOverlayHandle); 3041 | EVROverlayError (OPENVR_FNTABLE_CALLTYPE *GetTransformForOverlayCoordinates)(VROverlayHandle_t ulOverlayHandle, ETrackingUniverseOrigin eTrackingOrigin, struct HmdVector2_t coordinatesInOverlay, struct HmdMatrix34_t * pmatTransform); 3042 | EVROverlayError (OPENVR_FNTABLE_CALLTYPE *WaitFrameSync)(uint32_t nTimeoutMs); 3043 | bool (OPENVR_FNTABLE_CALLTYPE *PollNextOverlayEvent)(VROverlayHandle_t ulOverlayHandle, struct VREvent_t * pEvent, uint32_t uncbVREvent); 3044 | EVROverlayError (OPENVR_FNTABLE_CALLTYPE *GetOverlayInputMethod)(VROverlayHandle_t ulOverlayHandle, VROverlayInputMethod * peInputMethod); 3045 | EVROverlayError (OPENVR_FNTABLE_CALLTYPE *SetOverlayInputMethod)(VROverlayHandle_t ulOverlayHandle, VROverlayInputMethod eInputMethod); 3046 | EVROverlayError (OPENVR_FNTABLE_CALLTYPE *GetOverlayMouseScale)(VROverlayHandle_t ulOverlayHandle, struct HmdVector2_t * pvecMouseScale); 3047 | EVROverlayError (OPENVR_FNTABLE_CALLTYPE *SetOverlayMouseScale)(VROverlayHandle_t ulOverlayHandle, struct HmdVector2_t * pvecMouseScale); 3048 | bool (OPENVR_FNTABLE_CALLTYPE *ComputeOverlayIntersection)(VROverlayHandle_t ulOverlayHandle, struct VROverlayIntersectionParams_t * pParams, struct VROverlayIntersectionResults_t * pResults); 3049 | bool (OPENVR_FNTABLE_CALLTYPE *IsHoverTargetOverlay)(VROverlayHandle_t ulOverlayHandle); 3050 | EVROverlayError (OPENVR_FNTABLE_CALLTYPE *SetOverlayIntersectionMask)(VROverlayHandle_t ulOverlayHandle, struct VROverlayIntersectionMaskPrimitive_t * pMaskPrimitives, uint32_t unNumMaskPrimitives, uint32_t unPrimitiveSize); 3051 | EVROverlayError (OPENVR_FNTABLE_CALLTYPE *TriggerLaserMouseHapticVibration)(VROverlayHandle_t ulOverlayHandle, float fDurationSeconds, float fFrequency, float fAmplitude); 3052 | EVROverlayError (OPENVR_FNTABLE_CALLTYPE *SetOverlayCursor)(VROverlayHandle_t ulOverlayHandle, VROverlayHandle_t ulCursorHandle); 3053 | EVROverlayError (OPENVR_FNTABLE_CALLTYPE *SetOverlayCursorPositionOverride)(VROverlayHandle_t ulOverlayHandle, struct HmdVector2_t * pvCursor); 3054 | EVROverlayError (OPENVR_FNTABLE_CALLTYPE *ClearOverlayCursorPositionOverride)(VROverlayHandle_t ulOverlayHandle); 3055 | EVROverlayError (OPENVR_FNTABLE_CALLTYPE *SetOverlayTexture)(VROverlayHandle_t ulOverlayHandle, struct Texture_t * pTexture); 3056 | EVROverlayError (OPENVR_FNTABLE_CALLTYPE *ClearOverlayTexture)(VROverlayHandle_t ulOverlayHandle); 3057 | EVROverlayError (OPENVR_FNTABLE_CALLTYPE *SetOverlayRaw)(VROverlayHandle_t ulOverlayHandle, void * pvBuffer, uint32_t unWidth, uint32_t unHeight, uint32_t unBytesPerPixel); 3058 | EVROverlayError (OPENVR_FNTABLE_CALLTYPE *SetOverlayFromFile)(VROverlayHandle_t ulOverlayHandle, char * pchFilePath); 3059 | EVROverlayError (OPENVR_FNTABLE_CALLTYPE *GetOverlayTexture)(VROverlayHandle_t ulOverlayHandle, void ** pNativeTextureHandle, void * pNativeTextureRef, uint32_t * pWidth, uint32_t * pHeight, uint32_t * pNativeFormat, ETextureType * pAPIType, EColorSpace * pColorSpace, struct VRTextureBounds_t * pTextureBounds); 3060 | EVROverlayError (OPENVR_FNTABLE_CALLTYPE *ReleaseNativeOverlayHandle)(VROverlayHandle_t ulOverlayHandle, void * pNativeTextureHandle); 3061 | EVROverlayError (OPENVR_FNTABLE_CALLTYPE *GetOverlayTextureSize)(VROverlayHandle_t ulOverlayHandle, uint32_t * pWidth, uint32_t * pHeight); 3062 | EVROverlayError (OPENVR_FNTABLE_CALLTYPE *CreateDashboardOverlay)(char * pchOverlayKey, char * pchOverlayFriendlyName, VROverlayHandle_t * pMainHandle, VROverlayHandle_t * pThumbnailHandle); 3063 | bool (OPENVR_FNTABLE_CALLTYPE *IsDashboardVisible)(); 3064 | bool (OPENVR_FNTABLE_CALLTYPE *IsActiveDashboardOverlay)(VROverlayHandle_t ulOverlayHandle); 3065 | EVROverlayError (OPENVR_FNTABLE_CALLTYPE *SetDashboardOverlaySceneProcess)(VROverlayHandle_t ulOverlayHandle, uint32_t unProcessId); 3066 | EVROverlayError (OPENVR_FNTABLE_CALLTYPE *GetDashboardOverlaySceneProcess)(VROverlayHandle_t ulOverlayHandle, uint32_t * punProcessId); 3067 | void (OPENVR_FNTABLE_CALLTYPE *ShowDashboard)(char * pchOverlayToShow); 3068 | TrackedDeviceIndex_t (OPENVR_FNTABLE_CALLTYPE *GetPrimaryDashboardDevice)(); 3069 | EVROverlayError (OPENVR_FNTABLE_CALLTYPE *ShowKeyboard)(EGamepadTextInputMode eInputMode, EGamepadTextInputLineMode eLineInputMode, uint32_t unFlags, char * pchDescription, uint32_t unCharMax, char * pchExistingText, uint64_t uUserValue); 3070 | EVROverlayError (OPENVR_FNTABLE_CALLTYPE *ShowKeyboardForOverlay)(VROverlayHandle_t ulOverlayHandle, EGamepadTextInputMode eInputMode, EGamepadTextInputLineMode eLineInputMode, uint32_t unFlags, char * pchDescription, uint32_t unCharMax, char * pchExistingText, uint64_t uUserValue); 3071 | uint32_t (OPENVR_FNTABLE_CALLTYPE *GetKeyboardText)(char * pchText, uint32_t cchText); 3072 | void (OPENVR_FNTABLE_CALLTYPE *HideKeyboard)(); 3073 | void (OPENVR_FNTABLE_CALLTYPE *SetKeyboardTransformAbsolute)(ETrackingUniverseOrigin eTrackingOrigin, struct HmdMatrix34_t * pmatTrackingOriginToKeyboardTransform); 3074 | void (OPENVR_FNTABLE_CALLTYPE *SetKeyboardPositionForOverlay)(VROverlayHandle_t ulOverlayHandle, struct HmdRect2_t avoidRect); 3075 | VRMessageOverlayResponse (OPENVR_FNTABLE_CALLTYPE *ShowMessageOverlay)(char * pchText, char * pchCaption, char * pchButton0Text, char * pchButton1Text, char * pchButton2Text, char * pchButton3Text); 3076 | void (OPENVR_FNTABLE_CALLTYPE *CloseMessageOverlay)(); 3077 | }; 3078 | 3079 | struct VR_IVROverlayView_FnTable 3080 | { 3081 | EVROverlayError (OPENVR_FNTABLE_CALLTYPE *AcquireOverlayView)(VROverlayHandle_t ulOverlayHandle, struct VRNativeDevice_t * pNativeDevice, struct VROverlayView_t * pOverlayView, uint32_t unOverlayViewSize); 3082 | EVROverlayError (OPENVR_FNTABLE_CALLTYPE *ReleaseOverlayView)(struct VROverlayView_t * pOverlayView); 3083 | void (OPENVR_FNTABLE_CALLTYPE *PostOverlayEvent)(VROverlayHandle_t ulOverlayHandle, struct VREvent_t * pvrEvent); 3084 | bool (OPENVR_FNTABLE_CALLTYPE *IsViewingPermitted)(VROverlayHandle_t ulOverlayHandle); 3085 | }; 3086 | 3087 | struct VR_IVRHeadsetView_FnTable 3088 | { 3089 | void (OPENVR_FNTABLE_CALLTYPE *SetHeadsetViewSize)(uint32_t nWidth, uint32_t nHeight); 3090 | void (OPENVR_FNTABLE_CALLTYPE *GetHeadsetViewSize)(uint32_t * pnWidth, uint32_t * pnHeight); 3091 | void (OPENVR_FNTABLE_CALLTYPE *SetHeadsetViewMode)(HeadsetViewMode_t eHeadsetViewMode); 3092 | HeadsetViewMode_t (OPENVR_FNTABLE_CALLTYPE *GetHeadsetViewMode)(); 3093 | void (OPENVR_FNTABLE_CALLTYPE *SetHeadsetViewCropped)(bool bCropped); 3094 | bool (OPENVR_FNTABLE_CALLTYPE *GetHeadsetViewCropped)(); 3095 | float (OPENVR_FNTABLE_CALLTYPE *GetHeadsetViewAspectRatio)(); 3096 | void (OPENVR_FNTABLE_CALLTYPE *SetHeadsetViewBlendRange)(float flStartPct, float flEndPct); 3097 | void (OPENVR_FNTABLE_CALLTYPE *GetHeadsetViewBlendRange)(float * pStartPct, float * pEndPct); 3098 | }; 3099 | 3100 | struct VR_IVRRenderModels_FnTable 3101 | { 3102 | EVRRenderModelError (OPENVR_FNTABLE_CALLTYPE *LoadRenderModel_Async)(char * pchRenderModelName, struct RenderModel_t ** ppRenderModel); 3103 | void (OPENVR_FNTABLE_CALLTYPE *FreeRenderModel)(struct RenderModel_t * pRenderModel); 3104 | EVRRenderModelError (OPENVR_FNTABLE_CALLTYPE *LoadTexture_Async)(TextureID_t textureId, struct RenderModel_TextureMap_t ** ppTexture); 3105 | void (OPENVR_FNTABLE_CALLTYPE *FreeTexture)(struct RenderModel_TextureMap_t * pTexture); 3106 | EVRRenderModelError (OPENVR_FNTABLE_CALLTYPE *LoadTextureD3D11_Async)(TextureID_t textureId, void * pD3D11Device, void ** ppD3D11Texture2D); 3107 | EVRRenderModelError (OPENVR_FNTABLE_CALLTYPE *LoadIntoTextureD3D11_Async)(TextureID_t textureId, void * pDstTexture); 3108 | void (OPENVR_FNTABLE_CALLTYPE *FreeTextureD3D11)(void * pD3D11Texture2D); 3109 | uint32_t (OPENVR_FNTABLE_CALLTYPE *GetRenderModelName)(uint32_t unRenderModelIndex, char * pchRenderModelName, uint32_t unRenderModelNameLen); 3110 | uint32_t (OPENVR_FNTABLE_CALLTYPE *GetRenderModelCount)(); 3111 | uint32_t (OPENVR_FNTABLE_CALLTYPE *GetComponentCount)(char * pchRenderModelName); 3112 | uint32_t (OPENVR_FNTABLE_CALLTYPE *GetComponentName)(char * pchRenderModelName, uint32_t unComponentIndex, char * pchComponentName, uint32_t unComponentNameLen); 3113 | uint64_t (OPENVR_FNTABLE_CALLTYPE *GetComponentButtonMask)(char * pchRenderModelName, char * pchComponentName); 3114 | uint32_t (OPENVR_FNTABLE_CALLTYPE *GetComponentRenderModelName)(char * pchRenderModelName, char * pchComponentName, char * pchComponentRenderModelName, uint32_t unComponentRenderModelNameLen); 3115 | bool (OPENVR_FNTABLE_CALLTYPE *GetComponentStateForDevicePath)(char * pchRenderModelName, char * pchComponentName, VRInputValueHandle_t devicePath, RenderModel_ControllerMode_State_t * pState, RenderModel_ComponentState_t * pComponentState); 3116 | bool (OPENVR_FNTABLE_CALLTYPE *GetComponentState)(char * pchRenderModelName, char * pchComponentName, VRControllerState_t * pControllerState, struct RenderModel_ControllerMode_State_t * pState, struct RenderModel_ComponentState_t * pComponentState); 3117 | bool (OPENVR_FNTABLE_CALLTYPE *RenderModelHasComponent)(char * pchRenderModelName, char * pchComponentName); 3118 | uint32_t (OPENVR_FNTABLE_CALLTYPE *GetRenderModelThumbnailURL)(char * pchRenderModelName, char * pchThumbnailURL, uint32_t unThumbnailURLLen, EVRRenderModelError * peError); 3119 | uint32_t (OPENVR_FNTABLE_CALLTYPE *GetRenderModelOriginalPath)(char * pchRenderModelName, char * pchOriginalPath, uint32_t unOriginalPathLen, EVRRenderModelError * peError); 3120 | char * (OPENVR_FNTABLE_CALLTYPE *GetRenderModelErrorNameFromEnum)(EVRRenderModelError error); 3121 | }; 3122 | 3123 | struct VR_IVRNotifications_FnTable 3124 | { 3125 | EVRNotificationError (OPENVR_FNTABLE_CALLTYPE *CreateNotification)(VROverlayHandle_t ulOverlayHandle, uint64_t ulUserValue, EVRNotificationType type, char * pchText, EVRNotificationStyle style, struct NotificationBitmap_t * pImage, VRNotificationId * pNotificationId); 3126 | EVRNotificationError (OPENVR_FNTABLE_CALLTYPE *RemoveNotification)(VRNotificationId notificationId); 3127 | }; 3128 | 3129 | struct VR_IVRSettings_FnTable 3130 | { 3131 | char * (OPENVR_FNTABLE_CALLTYPE *GetSettingsErrorNameFromEnum)(EVRSettingsError eError); 3132 | void (OPENVR_FNTABLE_CALLTYPE *SetBool)(char * pchSection, char * pchSettingsKey, bool bValue, EVRSettingsError * peError); 3133 | void (OPENVR_FNTABLE_CALLTYPE *SetInt32)(char * pchSection, char * pchSettingsKey, int32_t nValue, EVRSettingsError * peError); 3134 | void (OPENVR_FNTABLE_CALLTYPE *SetFloat)(char * pchSection, char * pchSettingsKey, float flValue, EVRSettingsError * peError); 3135 | void (OPENVR_FNTABLE_CALLTYPE *SetString)(char * pchSection, char * pchSettingsKey, char * pchValue, EVRSettingsError * peError); 3136 | bool (OPENVR_FNTABLE_CALLTYPE *GetBool)(char * pchSection, char * pchSettingsKey, EVRSettingsError * peError); 3137 | int32_t (OPENVR_FNTABLE_CALLTYPE *GetInt32)(char * pchSection, char * pchSettingsKey, EVRSettingsError * peError); 3138 | float (OPENVR_FNTABLE_CALLTYPE *GetFloat)(char * pchSection, char * pchSettingsKey, EVRSettingsError * peError); 3139 | void (OPENVR_FNTABLE_CALLTYPE *GetString)(char * pchSection, char * pchSettingsKey, char * pchValue, uint32_t unValueLen, EVRSettingsError * peError); 3140 | void (OPENVR_FNTABLE_CALLTYPE *RemoveSection)(char * pchSection, EVRSettingsError * peError); 3141 | void (OPENVR_FNTABLE_CALLTYPE *RemoveKeyInSection)(char * pchSection, char * pchSettingsKey, EVRSettingsError * peError); 3142 | }; 3143 | 3144 | struct VR_IVRScreenshots_FnTable 3145 | { 3146 | EVRScreenshotError (OPENVR_FNTABLE_CALLTYPE *RequestScreenshot)(ScreenshotHandle_t * pOutScreenshotHandle, EVRScreenshotType type, char * pchPreviewFilename, char * pchVRFilename); 3147 | EVRScreenshotError (OPENVR_FNTABLE_CALLTYPE *HookScreenshot)(EVRScreenshotType * pSupportedTypes, int numTypes); 3148 | EVRScreenshotType (OPENVR_FNTABLE_CALLTYPE *GetScreenshotPropertyType)(ScreenshotHandle_t screenshotHandle, EVRScreenshotError * pError); 3149 | uint32_t (OPENVR_FNTABLE_CALLTYPE *GetScreenshotPropertyFilename)(ScreenshotHandle_t screenshotHandle, EVRScreenshotPropertyFilenames filenameType, char * pchFilename, uint32_t cchFilename, EVRScreenshotError * pError); 3150 | EVRScreenshotError (OPENVR_FNTABLE_CALLTYPE *UpdateScreenshotProgress)(ScreenshotHandle_t screenshotHandle, float flProgress); 3151 | EVRScreenshotError (OPENVR_FNTABLE_CALLTYPE *TakeStereoScreenshot)(ScreenshotHandle_t * pOutScreenshotHandle, char * pchPreviewFilename, char * pchVRFilename); 3152 | EVRScreenshotError (OPENVR_FNTABLE_CALLTYPE *SubmitScreenshot)(ScreenshotHandle_t screenshotHandle, EVRScreenshotType type, char * pchSourcePreviewFilename, char * pchSourceVRFilename); 3153 | }; 3154 | 3155 | struct VR_IVRResources_FnTable 3156 | { 3157 | uint32_t (OPENVR_FNTABLE_CALLTYPE *LoadSharedResource)(char * pchResourceName, char * pchBuffer, uint32_t unBufferLen); 3158 | uint32_t (OPENVR_FNTABLE_CALLTYPE *GetResourceFullPath)(char * pchResourceName, char * pchResourceTypeDirectory, char * pchPathBuffer, uint32_t unBufferLen); 3159 | }; 3160 | 3161 | struct VR_IVRDriverManager_FnTable 3162 | { 3163 | uint32_t (OPENVR_FNTABLE_CALLTYPE *GetDriverCount)(); 3164 | uint32_t (OPENVR_FNTABLE_CALLTYPE *GetDriverName)(DriverId_t nDriver, char * pchValue, uint32_t unBufferSize); 3165 | DriverHandle_t (OPENVR_FNTABLE_CALLTYPE *GetDriverHandle)(char * pchDriverName); 3166 | bool (OPENVR_FNTABLE_CALLTYPE *IsEnabled)(DriverId_t nDriver); 3167 | }; 3168 | 3169 | struct VR_IVRInput_FnTable 3170 | { 3171 | EVRInputError (OPENVR_FNTABLE_CALLTYPE *SetActionManifestPath)(char * pchActionManifestPath); 3172 | EVRInputError (OPENVR_FNTABLE_CALLTYPE *GetActionSetHandle)(char * pchActionSetName, VRActionSetHandle_t * pHandle); 3173 | EVRInputError (OPENVR_FNTABLE_CALLTYPE *GetActionHandle)(char * pchActionName, VRActionHandle_t * pHandle); 3174 | EVRInputError (OPENVR_FNTABLE_CALLTYPE *GetInputSourceHandle)(char * pchInputSourcePath, VRInputValueHandle_t * pHandle); 3175 | EVRInputError (OPENVR_FNTABLE_CALLTYPE *UpdateActionState)(struct VRActiveActionSet_t * pSets, uint32_t unSizeOfVRSelectedActionSet_t, uint32_t unSetCount); 3176 | EVRInputError (OPENVR_FNTABLE_CALLTYPE *GetDigitalActionData)(VRActionHandle_t action, struct InputDigitalActionData_t * pActionData, uint32_t unActionDataSize, VRInputValueHandle_t ulRestrictToDevice); 3177 | EVRInputError (OPENVR_FNTABLE_CALLTYPE *GetAnalogActionData)(VRActionHandle_t action, struct InputAnalogActionData_t * pActionData, uint32_t unActionDataSize, VRInputValueHandle_t ulRestrictToDevice); 3178 | EVRInputError (OPENVR_FNTABLE_CALLTYPE *GetPoseActionDataRelativeToNow)(VRActionHandle_t action, ETrackingUniverseOrigin eOrigin, float fPredictedSecondsFromNow, struct InputPoseActionData_t * pActionData, uint32_t unActionDataSize, VRInputValueHandle_t ulRestrictToDevice); 3179 | EVRInputError (OPENVR_FNTABLE_CALLTYPE *GetPoseActionDataForNextFrame)(VRActionHandle_t action, ETrackingUniverseOrigin eOrigin, struct InputPoseActionData_t * pActionData, uint32_t unActionDataSize, VRInputValueHandle_t ulRestrictToDevice); 3180 | EVRInputError (OPENVR_FNTABLE_CALLTYPE *GetSkeletalActionData)(VRActionHandle_t action, struct InputSkeletalActionData_t * pActionData, uint32_t unActionDataSize); 3181 | EVRInputError (OPENVR_FNTABLE_CALLTYPE *GetDominantHand)(ETrackedControllerRole * peDominantHand); 3182 | EVRInputError (OPENVR_FNTABLE_CALLTYPE *SetDominantHand)(ETrackedControllerRole eDominantHand); 3183 | EVRInputError (OPENVR_FNTABLE_CALLTYPE *GetBoneCount)(VRActionHandle_t action, uint32_t * pBoneCount); 3184 | EVRInputError (OPENVR_FNTABLE_CALLTYPE *GetBoneHierarchy)(VRActionHandle_t action, BoneIndex_t * pParentIndices, uint32_t unIndexArayCount); 3185 | EVRInputError (OPENVR_FNTABLE_CALLTYPE *GetBoneName)(VRActionHandle_t action, BoneIndex_t nBoneIndex, char * pchBoneName, uint32_t unNameBufferSize); 3186 | EVRInputError (OPENVR_FNTABLE_CALLTYPE *GetSkeletalReferenceTransforms)(VRActionHandle_t action, EVRSkeletalTransformSpace eTransformSpace, EVRSkeletalReferencePose eReferencePose, struct VRBoneTransform_t * pTransformArray, uint32_t unTransformArrayCount); 3187 | EVRInputError (OPENVR_FNTABLE_CALLTYPE *GetSkeletalTrackingLevel)(VRActionHandle_t action, EVRSkeletalTrackingLevel * pSkeletalTrackingLevel); 3188 | EVRInputError (OPENVR_FNTABLE_CALLTYPE *GetSkeletalBoneData)(VRActionHandle_t action, EVRSkeletalTransformSpace eTransformSpace, EVRSkeletalMotionRange eMotionRange, struct VRBoneTransform_t * pTransformArray, uint32_t unTransformArrayCount); 3189 | EVRInputError (OPENVR_FNTABLE_CALLTYPE *GetSkeletalSummaryData)(VRActionHandle_t action, EVRSummaryType eSummaryType, struct VRSkeletalSummaryData_t * pSkeletalSummaryData); 3190 | EVRInputError (OPENVR_FNTABLE_CALLTYPE *GetSkeletalBoneDataCompressed)(VRActionHandle_t action, EVRSkeletalMotionRange eMotionRange, void * pvCompressedData, uint32_t unCompressedSize, uint32_t * punRequiredCompressedSize); 3191 | EVRInputError (OPENVR_FNTABLE_CALLTYPE *DecompressSkeletalBoneData)(void * pvCompressedBuffer, uint32_t unCompressedBufferSize, EVRSkeletalTransformSpace eTransformSpace, struct VRBoneTransform_t * pTransformArray, uint32_t unTransformArrayCount); 3192 | EVRInputError (OPENVR_FNTABLE_CALLTYPE *TriggerHapticVibrationAction)(VRActionHandle_t action, float fStartSecondsFromNow, float fDurationSeconds, float fFrequency, float fAmplitude, VRInputValueHandle_t ulRestrictToDevice); 3193 | EVRInputError (OPENVR_FNTABLE_CALLTYPE *GetActionOrigins)(VRActionSetHandle_t actionSetHandle, VRActionHandle_t digitalActionHandle, VRInputValueHandle_t * originsOut, uint32_t originOutCount); 3194 | EVRInputError (OPENVR_FNTABLE_CALLTYPE *GetOriginLocalizedName)(VRInputValueHandle_t origin, char * pchNameArray, uint32_t unNameArraySize, int32_t unStringSectionsToInclude); 3195 | EVRInputError (OPENVR_FNTABLE_CALLTYPE *GetOriginTrackedDeviceInfo)(VRInputValueHandle_t origin, struct InputOriginInfo_t * pOriginInfo, uint32_t unOriginInfoSize); 3196 | EVRInputError (OPENVR_FNTABLE_CALLTYPE *GetActionBindingInfo)(VRActionHandle_t action, struct InputBindingInfo_t * pOriginInfo, uint32_t unBindingInfoSize, uint32_t unBindingInfoCount, uint32_t * punReturnedBindingInfoCount); 3197 | EVRInputError (OPENVR_FNTABLE_CALLTYPE *ShowActionOrigins)(VRActionSetHandle_t actionSetHandle, VRActionHandle_t ulActionHandle); 3198 | EVRInputError (OPENVR_FNTABLE_CALLTYPE *ShowBindingsForActionSet)(struct VRActiveActionSet_t * pSets, uint32_t unSizeOfVRSelectedActionSet_t, uint32_t unSetCount, VRInputValueHandle_t originToHighlight); 3199 | EVRInputError (OPENVR_FNTABLE_CALLTYPE *GetComponentStateForBinding)(char * pchRenderModelName, char * pchComponentName, struct InputBindingInfo_t * pOriginInfo, uint32_t unBindingInfoSize, uint32_t unBindingInfoCount, RenderModel_ComponentState_t * pComponentState); 3200 | bool (OPENVR_FNTABLE_CALLTYPE *IsUsingLegacyInput)(); 3201 | EVRInputError (OPENVR_FNTABLE_CALLTYPE *OpenBindingUI)(char * pchAppKey, VRActionSetHandle_t ulActionSetHandle, VRInputValueHandle_t ulDeviceHandle, bool bShowOnDesktop); 3202 | EVRInputError (OPENVR_FNTABLE_CALLTYPE *GetBindingVariant)(VRInputValueHandle_t ulDevicePath, char * pchVariantArray, uint32_t unVariantArraySize); 3203 | }; 3204 | 3205 | struct VR_IVRIOBuffer_FnTable 3206 | { 3207 | EIOBufferError (OPENVR_FNTABLE_CALLTYPE *Open)(char * pchPath, EIOBufferMode mode, uint32_t unElementSize, uint32_t unElements, IOBufferHandle_t * pulBuffer); 3208 | EIOBufferError (OPENVR_FNTABLE_CALLTYPE *Close)(IOBufferHandle_t ulBuffer); 3209 | EIOBufferError (OPENVR_FNTABLE_CALLTYPE *Read)(IOBufferHandle_t ulBuffer, void * pDst, uint32_t unBytes, uint32_t * punRead); 3210 | EIOBufferError (OPENVR_FNTABLE_CALLTYPE *Write)(IOBufferHandle_t ulBuffer, void * pSrc, uint32_t unBytes); 3211 | PropertyContainerHandle_t (OPENVR_FNTABLE_CALLTYPE *PropertyContainer)(IOBufferHandle_t ulBuffer); 3212 | bool (OPENVR_FNTABLE_CALLTYPE *HasReaders)(IOBufferHandle_t ulBuffer); 3213 | }; 3214 | 3215 | struct VR_IVRSpatialAnchors_FnTable 3216 | { 3217 | EVRSpatialAnchorError (OPENVR_FNTABLE_CALLTYPE *CreateSpatialAnchorFromDescriptor)(char * pchDescriptor, SpatialAnchorHandle_t * pHandleOut); 3218 | EVRSpatialAnchorError (OPENVR_FNTABLE_CALLTYPE *CreateSpatialAnchorFromPose)(TrackedDeviceIndex_t unDeviceIndex, ETrackingUniverseOrigin eOrigin, struct SpatialAnchorPose_t * pPose, SpatialAnchorHandle_t * pHandleOut); 3219 | EVRSpatialAnchorError (OPENVR_FNTABLE_CALLTYPE *GetSpatialAnchorPose)(SpatialAnchorHandle_t unHandle, ETrackingUniverseOrigin eOrigin, struct SpatialAnchorPose_t * pPoseOut); 3220 | EVRSpatialAnchorError (OPENVR_FNTABLE_CALLTYPE *GetSpatialAnchorDescriptor)(SpatialAnchorHandle_t unHandle, char * pchDescriptorOut, uint32_t * punDescriptorBufferLenInOut); 3221 | }; 3222 | 3223 | struct VR_IVRDebug_FnTable 3224 | { 3225 | EVRDebugError (OPENVR_FNTABLE_CALLTYPE *EmitVrProfilerEvent)(char * pchMessage); 3226 | EVRDebugError (OPENVR_FNTABLE_CALLTYPE *BeginVrProfilerEvent)(VrProfilerEventHandle_t * pHandleOut); 3227 | EVRDebugError (OPENVR_FNTABLE_CALLTYPE *FinishVrProfilerEvent)(VrProfilerEventHandle_t hHandle, char * pchMessage); 3228 | uint32_t (OPENVR_FNTABLE_CALLTYPE *DriverDebugRequest)(TrackedDeviceIndex_t unDeviceIndex, char * pchRequest, char * pchResponseBuffer, uint32_t unResponseBufferSize); 3229 | }; 3230 | 3231 | struct VR_IVRProperties_FnTable 3232 | { 3233 | ETrackedPropertyError (OPENVR_FNTABLE_CALLTYPE *ReadPropertyBatch)(PropertyContainerHandle_t ulContainerHandle, struct PropertyRead_t * pBatch, uint32_t unBatchEntryCount); 3234 | ETrackedPropertyError (OPENVR_FNTABLE_CALLTYPE *WritePropertyBatch)(PropertyContainerHandle_t ulContainerHandle, struct PropertyWrite_t * pBatch, uint32_t unBatchEntryCount); 3235 | char * (OPENVR_FNTABLE_CALLTYPE *GetPropErrorNameFromEnum)(ETrackedPropertyError error); 3236 | PropertyContainerHandle_t (OPENVR_FNTABLE_CALLTYPE *TrackedDeviceToPropertyContainer)(TrackedDeviceIndex_t nDevice); 3237 | }; 3238 | 3239 | struct VR_IVRPaths_FnTable 3240 | { 3241 | ETrackedPropertyError (OPENVR_FNTABLE_CALLTYPE *ReadPathBatch)(PropertyContainerHandle_t ulRootHandle, struct PathRead_t * pBatch, uint32_t unBatchEntryCount); 3242 | ETrackedPropertyError (OPENVR_FNTABLE_CALLTYPE *WritePathBatch)(PropertyContainerHandle_t ulRootHandle, struct PathWrite_t * pBatch, uint32_t unBatchEntryCount); 3243 | ETrackedPropertyError (OPENVR_FNTABLE_CALLTYPE *StringToHandle)(PathHandle_t * pHandle, char * pchPath); 3244 | ETrackedPropertyError (OPENVR_FNTABLE_CALLTYPE *HandleToString)(PathHandle_t pHandle, char * pchBuffer, uint32_t unBufferSize, uint32_t * punBufferSizeUsed); 3245 | }; 3246 | 3247 | struct VR_IVRBlockQueue_FnTable 3248 | { 3249 | EBlockQueueError (OPENVR_FNTABLE_CALLTYPE *Create)(PropertyContainerHandle_t * pulQueueHandle, char * pchPath, uint32_t unBlockDataSize, uint32_t unBlockHeaderSize, uint32_t unBlockCount, uint32_t unFlags); 3250 | EBlockQueueError (OPENVR_FNTABLE_CALLTYPE *Connect)(PropertyContainerHandle_t * pulQueueHandle, char * pchPath); 3251 | EBlockQueueError (OPENVR_FNTABLE_CALLTYPE *Destroy)(PropertyContainerHandle_t ulQueueHandle); 3252 | EBlockQueueError (OPENVR_FNTABLE_CALLTYPE *AcquireWriteOnlyBlock)(PropertyContainerHandle_t ulQueueHandle, PropertyContainerHandle_t * pulBlockHandle, void ** ppvBuffer); 3253 | EBlockQueueError (OPENVR_FNTABLE_CALLTYPE *ReleaseWriteOnlyBlock)(PropertyContainerHandle_t ulQueueHandle, PropertyContainerHandle_t ulBlockHandle); 3254 | EBlockQueueError (OPENVR_FNTABLE_CALLTYPE *WaitAndAcquireReadOnlyBlock)(PropertyContainerHandle_t ulQueueHandle, PropertyContainerHandle_t * pulBlockHandle, void ** ppvBuffer, EBlockQueueReadType eReadType, uint32_t unTimeoutMs); 3255 | EBlockQueueError (OPENVR_FNTABLE_CALLTYPE *AcquireReadOnlyBlock)(PropertyContainerHandle_t ulQueueHandle, PropertyContainerHandle_t * pulBlockHandle, void ** ppvBuffer, EBlockQueueReadType eReadType); 3256 | EBlockQueueError (OPENVR_FNTABLE_CALLTYPE *ReleaseReadOnlyBlock)(PropertyContainerHandle_t ulQueueHandle, PropertyContainerHandle_t ulBlockHandle); 3257 | EBlockQueueError (OPENVR_FNTABLE_CALLTYPE *QueueHasReader)(PropertyContainerHandle_t ulQueueHandle, bool * pbHasReaders); 3258 | }; 3259 | 3260 | 3261 | #if 0 3262 | // Global entry points 3263 | S_API intptr_t VR_InitInternal( EVRInitError *peError, EVRApplicationType eType ); 3264 | S_API void VR_ShutdownInternal(); 3265 | S_API bool VR_IsHmdPresent(); 3266 | S_API intptr_t VR_GetGenericInterface( const char *pchInterfaceVersion, EVRInitError *peError ); 3267 | S_API bool VR_IsRuntimeInstalled(); 3268 | S_API const char * VR_GetVRInitErrorAsSymbol( EVRInitError error ); 3269 | S_API const char * VR_GetVRInitErrorAsEnglishDescription( EVRInitError error ); 3270 | #endif 3271 | 3272 | #endif // __OPENVR_API_FLAT_H__ 3273 | 3274 | 3275 | -------------------------------------------------------------------------------- /overlay_model_test.c: -------------------------------------------------------------------------------- 1 | // Battery Watcher for OpenVR (make an overlay with the battery left for all connected devices on your left hand) 2 | // 3 | // Compile with: 4 | // tcc battery_monitor_overlay.c -o bmo.exe -luser32 -lgdi32 -lkernel32 -lopengl32 C:\windows\system32\msvcrt.dll openvr_api.dll 5 | 6 | // System headers for any extra stuff we need. 7 | #include 8 | 9 | // Include CNFG (rawdraw) for generating a window and/or OpenGL context. 10 | #define CNFG_IMPLEMENTATION 11 | #define CNFGOGL 12 | #include "rawdraw_sf.h" 13 | 14 | #include "teapot.h" 15 | 16 | // Include OpenVR header so we can interact with VR stuff. 17 | #undef EXTERN_C 18 | #include "openvr_capi.h" 19 | 20 | 21 | // The width/height of the overlay. 22 | #define WIDTH 1024 23 | #define HEIGHT 512 24 | float overlayscale = 0.25; // In meters. 25 | float scale = 0.3; // teapot scale 26 | 27 | // OpenVR Doesn't define these for some reason (I don't remmeber why) so we define the functions here. They are copy-pasted from the bottom of openvr_capi.h 28 | intptr_t VR_InitInternal( EVRInitError *peError, EVRApplicationType eType ); 29 | void VR_ShutdownInternal(); 30 | bool VR_IsHmdPresent(); 31 | intptr_t VR_GetGenericInterface( const char *pchInterfaceVersion, EVRInitError *peError ); 32 | bool VR_IsRuntimeInstalled(); 33 | const char * VR_GetVRInitErrorAsSymbol( EVRInitError error ); 34 | const char * VR_GetVRInitErrorAsEnglishDescription( EVRInitError error ); 35 | 36 | // These are functions that rawdraw calls back into. 37 | void HandleKey( int keycode, int bDown ) { } 38 | void HandleButton( int x, int y, int button, int bDown ) { } 39 | void HandleMotion( int x, int y, int mask ) { } 40 | void HandleDestroy() { } 41 | 42 | // This function was copy-pasted from cnovr. 43 | void * CNOVRGetOpenVRFunctionTable( const char * interfacename ) 44 | { 45 | EVRInitError e; 46 | char fnTableName[128]; 47 | int result1 = snprintf( fnTableName, 128, "FnTable:%s", interfacename ); 48 | void * ret = (void *)VR_GetGenericInterface( fnTableName, &e ); 49 | printf( "Getting System FnTable: %s = %p (%d)\n", fnTableName, ret, e ); 50 | if( !ret ) 51 | { 52 | exit( 1 ); 53 | } 54 | return ret; 55 | } 56 | 57 | // These are interfaces into OpenVR, they are basically function call tables. 58 | struct VR_IVRSystem_FnTable * oSystem; 59 | struct VR_IVROverlay_FnTable * oOverlay; 60 | 61 | // The OpenVR Overlay handle. 62 | VROverlayHandle_t overlayID; 63 | 64 | HmdMatrix34_t InvertHmdMatrix34( HmdMatrix34_t mtoinv ) 65 | { 66 | int i, j; 67 | HmdMatrix34_t out = { 0 }; 68 | for( i = 0; i < 3; i++ ) 69 | for( j = 0; j < 3; j++ ) 70 | out.m[j][i] = mtoinv.m[i][j]; 71 | 72 | for ( i = 0; i < 3; i++ ) 73 | { 74 | out.m[i][3] = 0; 75 | for( j = 0; j < 3; j++ ) 76 | out.m[i][3] += out.m[i][j] * -mtoinv.m[j][3]; 77 | } 78 | return out; 79 | } 80 | 81 | HmdMatrix34_t MatrixMultiply( HmdMatrix34_t fin1, HmdMatrix34_t fin2 ) 82 | { 83 | HmdMatrix34_t fotmp; 84 | fotmp.m[0][0] = fin1.m[0][0] * fin2.m[0][0] + fin1.m[0][1] * fin2.m[1][0] + fin1.m[0][2] * fin2.m[2][0] + fin1.m[0][3] * 0; 85 | fotmp.m[0][1] = fin1.m[0][0] * fin2.m[0][1] + fin1.m[0][1] * fin2.m[1][1] + fin1.m[0][2] * fin2.m[2][1] + fin1.m[0][3] * 0; 86 | fotmp.m[0][2] = fin1.m[0][0] * fin2.m[0][2] + fin1.m[0][1] * fin2.m[1][2] + fin1.m[0][2] * fin2.m[2][2] + fin1.m[0][3] * 0; 87 | fotmp.m[0][3] = fin1.m[0][0] * fin2.m[0][3] + fin1.m[0][1] * fin2.m[1][3] + fin1.m[0][2] * fin2.m[2][3] + fin1.m[0][3] * 1; 88 | fotmp.m[1][0] = fin1.m[1][0] * fin2.m[0][0] + fin1.m[1][1] * fin2.m[1][0] + fin1.m[1][2] * fin2.m[2][0] + fin1.m[1][3] * 0; 89 | fotmp.m[1][1] = fin1.m[1][0] * fin2.m[0][1] + fin1.m[1][1] * fin2.m[1][1] + fin1.m[1][2] * fin2.m[2][1] + fin1.m[1][3] * 0; 90 | fotmp.m[1][2] = fin1.m[1][0] * fin2.m[0][2] + fin1.m[1][1] * fin2.m[1][2] + fin1.m[1][2] * fin2.m[2][2] + fin1.m[1][3] * 0; 91 | fotmp.m[1][3] = fin1.m[1][0] * fin2.m[0][3] + fin1.m[1][1] * fin2.m[1][3] + fin1.m[1][2] * fin2.m[2][3] + fin1.m[1][3] * 1; 92 | fotmp.m[2][0] = fin1.m[2][0] * fin2.m[0][0] + fin1.m[2][1] * fin2.m[1][0] + fin1.m[2][2] * fin2.m[2][0] + fin1.m[2][3] * 0; 93 | fotmp.m[2][1] = fin1.m[2][0] * fin2.m[0][1] + fin1.m[2][1] * fin2.m[1][1] + fin1.m[2][2] * fin2.m[2][1] + fin1.m[2][3] * 0; 94 | fotmp.m[2][2] = fin1.m[2][0] * fin2.m[0][2] + fin1.m[2][1] * fin2.m[1][2] + fin1.m[2][2] * fin2.m[2][2] + fin1.m[2][3] * 0; 95 | fotmp.m[2][3] = fin1.m[2][0] * fin2.m[0][3] + fin1.m[2][1] * fin2.m[1][3] + fin1.m[2][2] * fin2.m[2][3] + fin1.m[2][3] * 1; 96 | return fotmp; 97 | } 98 | 99 | 100 | 101 | 102 | #define m00 0 103 | #define m01 1 104 | #define m02 2 105 | #define m03 3 106 | #define m10 4 107 | #define m11 5 108 | #define m12 6 109 | #define m13 7 110 | #define m20 8 111 | #define m21 9 112 | #define m22 10 113 | #define m23 11 114 | #define m30 12 115 | #define m31 13 116 | #define m32 14 117 | #define m33 15 118 | 119 | void ApplyMatrixToPoint444( float * kout, const float * pin, const float * f ) 120 | { 121 | float ptmp[3]; 122 | ptmp[0] = pin[0] * f[m00] + pin[1] * f[m01] + pin[2] * f[m02] + pin[3] * f[m03]; 123 | ptmp[1] = pin[0] * f[m10] + pin[1] * f[m11] + pin[2] * f[m12] + pin[3] * f[m13]; 124 | ptmp[2] = pin[0] * f[m20] + pin[1] * f[m21] + pin[2] * f[m22] + pin[3] * f[m23]; 125 | kout[3] = pin[0] * f[m30] + pin[1] * f[m31] + pin[2] * f[m32] + pin[3] * f[m33]; 126 | kout[0] = ptmp[0]; 127 | kout[1] = ptmp[1]; 128 | kout[2] = ptmp[2]; 129 | } 130 | 131 | void ApplyMatrixToPoint( float * pout, const float * pin, const HmdMatrix34_t matt ) 132 | { 133 | float ptmp[2]; 134 | ptmp[0] = pin[0] * matt.m[0][0] + pin[1] * matt.m[0][1] + pin[2] * matt.m[0][2] + matt.m[0][3]; 135 | ptmp[1] = pin[0] * matt.m[1][0] + pin[1] * matt.m[1][1] + pin[2] * matt.m[1][2] + matt.m[1][3]; 136 | pout[2] = pin[0] * matt.m[2][0] + pin[1] * matt.m[2][1] + pin[2] * matt.m[2][2] + matt.m[2][3]; 137 | pout[0] = ptmp[0]; 138 | pout[1] = ptmp[1]; 139 | } 140 | void ApplyMatrixToPointRotateOnly( float * pout, const float * pin, const HmdMatrix34_t matt ) 141 | { 142 | float ptmp[2]; 143 | ptmp[0] = pin[0] * matt.m[0][0] + pin[1] * matt.m[0][1] + pin[2] * matt.m[0][2]; 144 | ptmp[1] = pin[0] * matt.m[1][0] + pin[1] * matt.m[1][1] + pin[2] * matt.m[1][2]; 145 | pout[2] = pin[0] * matt.m[2][0] + pin[1] * matt.m[2][1] + pin[2] * matt.m[2][2]; 146 | pout[0] = ptmp[0]; 147 | pout[1] = ptmp[1]; 148 | } 149 | 150 | 151 | void matrix44perspective( float * out, float fovyK, float aspect, float zNear, float zFar ) 152 | { 153 | //float f = 1./tan(fovy * 3.1415926 / 360.0); 154 | float f = fovyK; 155 | out[m00] = f/aspect; out[m01] = 0; out[m02] = 0; out[m03] = 0; 156 | out[m10] = 0; out[m11] = f; out[m12] = 0; out[m13] = 0; 157 | out[m20] = 0; out[m21] = 0; 158 | out[m22] = (zFar + zNear)/(zNear - zFar); 159 | out[m23] = 2*zFar*zNear /(zNear - zFar); 160 | out[m30] = 0; out[m31] = 0; out[m32] = -1; out[m33] = 0; 161 | } 162 | 163 | 164 | void cross3d(float *out, const float *a, const float *b) { 165 | float o0 = a[1] * b[2] - a[2] * b[1]; 166 | float o1 = a[2] * b[0] - a[0] * b[2]; 167 | out[2] = a[0] * b[1] - a[1] * b[0]; 168 | out[1] = o1; 169 | out[0] = o0; 170 | } 171 | 172 | void sub3d(float *out, const float *a, const float *b) { 173 | out[0] = a[0] - b[0]; 174 | out[1] = a[1] - b[1]; 175 | out[2] = a[2] - b[2]; 176 | } 177 | 178 | float mag3d( const float *in ) 179 | { 180 | return sqrt(in[0] * in[0] + in[1] * in[1] + in[2] * in[2]); 181 | } 182 | 183 | void normalize3d(float *out, const float *in) { 184 | float r = ((float)1.) / mag3d(in); 185 | out[0] = in[0] * r; 186 | out[1] = in[1] * r; 187 | out[2] = in[2] * r; 188 | } 189 | 190 | double OGGetAbsoluteTime() 191 | { 192 | static LARGE_INTEGER lpf; 193 | LARGE_INTEGER li; 194 | 195 | if( !lpf.QuadPart ) 196 | { 197 | QueryPerformanceFrequency( &lpf ); 198 | } 199 | 200 | QueryPerformanceCounter( &li ); 201 | return (double)li.QuadPart / (double)lpf.QuadPart; 202 | } 203 | 204 | int main() 205 | { 206 | // Create the window, needed for making an OpenGL context, but also 207 | // gives us a framebuffer we can draw into. Minus signs in front of 208 | // width/height hint to rawdrawthat we want a hidden window. 209 | CNFGSetup( "Example App", -WIDTH, -HEIGHT ); 210 | 211 | // We put this in a codeblock because it's logically together. 212 | // no reason to keep the token around. 213 | { 214 | EVRInitError ierr; 215 | uint32_t token = VR_InitInternal( &ierr, EVRApplicationType_VRApplication_Overlay ); 216 | if( !token ) 217 | { 218 | printf( "Error!!!! Could not initialize OpenVR\n" ); 219 | return -5; 220 | } 221 | 222 | // Get the system and overlay interfaces. We pass in the version of these 223 | // interfaces that we wish to use, in case the runtime is newer, we can still 224 | // get the interfaces we expect. 225 | oSystem = CNOVRGetOpenVRFunctionTable( IVRSystem_Version ); 226 | oOverlay = CNOVRGetOpenVRFunctionTable( IVROverlay_Version ); 227 | } 228 | 229 | { 230 | // Generate the overlay. 231 | oOverlay->CreateOverlay( "model-overlay", "Model Overlay", &overlayID ); 232 | oOverlay->SetOverlayWidthInMeters( overlayID, overlayscale ); 233 | oOverlay->SetOverlayColor( overlayID, 1., .8, .7 ); 234 | 235 | // Control texture bounds to control the way the texture is mapped to the overlay. 236 | VRTextureBounds_t bounds; 237 | bounds.uMin = 1; 238 | bounds.uMax = 0; 239 | bounds.vMin = 0; 240 | bounds.vMax = 1; 241 | oOverlay->SetOverlayTextureBounds( overlayID, &bounds ); 242 | } 243 | 244 | oOverlay->SetOverlayFlag( overlayID, VROverlayFlags_SideBySide_Parallel, 1 ); 245 | 246 | // Actually show the overlay. 247 | oOverlay->ShowOverlay( overlayID ); 248 | 249 | GLuint overlaytexture; 250 | { 251 | // Initialize the texture with junk data. 252 | uint8_t * myjunkdata = malloc( WIDTH * HEIGHT * 4 ); 253 | int x, y; 254 | for( y = 0; y < HEIGHT; y++ ) 255 | for( x = 0; x < WIDTH; x++ ) 256 | { 257 | myjunkdata[ ( x + y * WIDTH ) * 4 + 0 ] = x * 2; 258 | myjunkdata[ ( x + y * WIDTH ) * 4 + 1 ] = y * 2; 259 | myjunkdata[ ( x + y * WIDTH ) * 4 + 2 ] = 0; 260 | myjunkdata[ ( x + y * WIDTH ) * 4 + 3 ] = 255; 261 | } 262 | 263 | // We aren't doing it, but we could write directly into the overlay. 264 | //err = oOverlay->SetOverlayRaw( overlayID, myjunkdata, 128, 128, 4 ); 265 | 266 | // Generate the texture. 267 | glGenTextures( 1, &overlaytexture ); 268 | glBindTexture( GL_TEXTURE_2D, overlaytexture ); 269 | 270 | // It is required to setup the min and mag filter of the texture. 271 | glTexParameteri( GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST ); 272 | glTexParameteri( GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST ); 273 | 274 | // Load the texture with our dummy data. Optionally we could pass 0 in where we are 275 | // passing in myjunkdata. That would allocate the RAM on the GPU but not do anything with it. 276 | glTexImage2D( GL_TEXTURE_2D, 0, GL_RGBA, WIDTH, HEIGHT, 0, GL_RGBA, GL_UNSIGNED_BYTE, myjunkdata ); 277 | } 278 | 279 | int framenumber; 280 | 281 | while( true ) 282 | { 283 | CNFGBGColor = 0x00000000; //Black Transparent Background 284 | CNFGClearFrame(); 285 | 286 | // Process any window events and call callbacks. 287 | CNFGHandleInput(); 288 | 289 | // Setup draw color. 290 | CNFGColor( 0xffffffff ); 291 | 292 | #if 1 293 | int eye; 294 | 295 | for( eye = 0; eye < 2; eye++ ) 296 | { 297 | // Setup where "CNFGDrawText" will draw. 298 | CNFGPenX = 1+WIDTH/2*eye; 299 | CNFGPenY = 1; 300 | CNFGTackSegment( CNFGPenX-1, CNFGPenY-1, CNFGPenX + WIDTH/2-2, CNFGPenY-1 ); 301 | CNFGTackSegment( CNFGPenX + WIDTH/2-2, CNFGPenY-1, CNFGPenX + WIDTH/2-2, CNFGPenY+HEIGHT-2 ); 302 | CNFGTackSegment( CNFGPenX + WIDTH/2-2, CNFGPenY+HEIGHT-2, CNFGPenX -1, CNFGPenY+HEIGHT-2 ); 303 | CNFGTackSegment( CNFGPenX-1, CNFGPenY+HEIGHT-2, CNFGPenX -1, CNFGPenY-1 ); 304 | 305 | // Scratch buffer for us to write text into. 306 | char str[256]; 307 | sprintf( str, "%d\n", framenumber ); 308 | 309 | // Actually draw the string. 310 | CNFGDrawText( str, 2 ); 311 | 312 | // Iterate over the list of all devices. 313 | int i; 314 | int devices = 0; 315 | for( i = 0; i < k_unMaxTrackedDeviceCount; i++ ) 316 | { 317 | // See if this device has a battery charge. 318 | ETrackedDeviceProperty prop; 319 | ETrackedPropertyError err; 320 | float battery = oSystem->GetFloatTrackedDeviceProperty( i, ETrackedDeviceProperty_Prop_DeviceBatteryPercentage_Float, &err ); 321 | 322 | // No error? Proceed. 323 | if( err == 0 ) 324 | { 325 | // Get the device name 326 | char ctrlname[128]; 327 | oSystem->GetStringTrackedDeviceProperty( i, ETrackedDeviceProperty_Prop_ModelNumber_String, ctrlname, 128, &err ); 328 | 329 | // If the device name is nonempty... 330 | if( strlen( ctrlname ) ) 331 | { 332 | // Write into the scratch string. 333 | // Set the draw location, and draw that string. 334 | sprintf( str, "%4.0f %s", battery * 100., ctrlname ); 335 | CNFGPenX = 1+WIDTH/2*eye; 336 | CNFGPenY = devices * 12 + 13; 337 | CNFGDrawText( str, 2 ); 338 | devices++; 339 | } 340 | } 341 | } 342 | } 343 | #endif 344 | 345 | 346 | int overlayAssociated = false; 347 | TrackedDeviceIndex_t index; 348 | index = oSystem->GetTrackedDeviceIndexForControllerRole( ETrackedControllerRole_TrackedControllerRole_LeftHand ); 349 | 350 | if( index == k_unTrackedDeviceIndexInvalid || index == k_unTrackedDeviceIndex_Hmd ) 351 | { 352 | printf( "Couldn't find your controller to attach our overlay to (%d)\n", index ); 353 | } 354 | else 355 | { 356 | float RWIDTH = WIDTH/2; 357 | float RHEIGHT = HEIGHT; 358 | overlayAssociated = true; 359 | 360 | EVROverlayError err; 361 | struct HmdMatrix34_t eyeLoc[2] = { 362 | oSystem->GetEyeToHeadTransform( EVREye_Eye_Left ), 363 | oSystem->GetEyeToHeadTransform( EVREye_Eye_Right ) 364 | }; 365 | 366 | // Get correct time offset for poses. 367 | float last_vsync_time; 368 | oSystem->GetTimeSinceLastVsync( &last_vsync_time, 0 ); 369 | const float display_frequency = oSystem->GetFloatTrackedDeviceProperty( k_unTrackedDeviceIndex_Hmd, ETrackedDeviceProperty_Prop_DisplayFrequency_Float, 0 ); 370 | const float frame_period = 1.f / display_frequency; 371 | const float vsync_to_photons = oSystem->GetFloatTrackedDeviceProperty( k_unTrackedDeviceIndex_Hmd, ETrackedDeviceProperty_Prop_SecondsFromVsyncToPhotons_Float, 0 ); 372 | const float predicted_time = frame_period * 3 - last_vsync_time + vsync_to_photons; 373 | 374 | // Get all tracked devices for when we think our frame is likely to land. 375 | TrackedDevicePose_t poses[64]; 376 | oSystem->GetDeviceToAbsoluteTrackingPose( ETrackingUniverseOrigin_TrackingUniverseRawAndUncalibrated, predicted_time, poses, 64 ); 377 | struct HmdMatrix34_t ctrl = poses[index].mDeviceToAbsoluteTracking; 378 | struct HmdMatrix34_t head = poses[0].mDeviceToAbsoluteTracking; 379 | float put_thing_at[3] = { ctrl.m[0][3], ctrl.m[1][3], ctrl.m[2][3] }; 380 | float head_location[3] = { head.m[0][3], head.m[1][3], head.m[2][3] }; 381 | float object_to_head[3]; 382 | float object_to_head_full_mag[3]; 383 | sub3d( object_to_head_full_mag, head_location, put_thing_at ); 384 | normalize3d( object_to_head, object_to_head_full_mag ); 385 | 386 | // printf( "%f %f %f\n", put_thing_at[0], put_thing_at[1], put_thing_at[2] ); 387 | 388 | // Point square at head - Make HMD up real up, to keep eyes parallel in view space. 389 | float up[3] = { 0, 1, 0 }; 390 | ApplyMatrixToPointRotateOnly( up, up, head ); 391 | float object_vector_up[3]; 392 | float object_vector_right[3]; 393 | cross3d( object_vector_right, object_to_head, up ); 394 | cross3d( object_vector_up, object_vector_right, object_to_head ); 395 | normalize3d( object_vector_up, object_vector_up ); 396 | normalize3d( object_vector_right, object_vector_right ); 397 | //Makes a coordinate frame. 398 | struct HmdMatrix34_t absXForm; 399 | 400 | absXForm.m[0][3] = ctrl.m[0][3]; 401 | absXForm.m[1][3] = ctrl.m[1][3]; 402 | absXForm.m[2][3] = ctrl.m[2][3]; 403 | absXForm.m[0][0] = object_vector_right[0]; 404 | absXForm.m[1][0] = object_vector_right[1]; 405 | absXForm.m[2][0] = object_vector_right[2]; 406 | absXForm.m[0][1] = object_vector_up[0]; 407 | absXForm.m[1][1] = object_vector_up[1]; 408 | absXForm.m[2][1] = object_vector_up[2]; 409 | absXForm.m[0][2] = object_to_head[0]; 410 | absXForm.m[1][2] = object_to_head[1]; 411 | absXForm.m[2][2] = object_to_head[2]; 412 | 413 | //This now has a plane pointing at the center of your eyes. 414 | #if 0 415 | printf( "%f %f %f / %f %f %f / %f %f %f / %f %f %f\n", 416 | object_vector_right[0], object_vector_right[1], object_vector_right[2], 417 | object_vector_up[0], object_vector_up[1], object_vector_up[2], 418 | object_to_head[0], object_to_head[1], object_to_head[2], 419 | ctrl.m[0][3], ctrl.m[1][3], ctrl.m[2][3] ); 420 | #endif 421 | 422 | int eye; 423 | for( eye = 0; eye < 2; eye++ ) 424 | { 425 | HmdMatrix34_t worldEyeLoc = MatrixMultiply( head, eyeLoc[eye] ); 426 | float eye_location[3] = { worldEyeLoc.m[0][3], worldEyeLoc.m[1][3], worldEyeLoc.m[2][3] }; 427 | float put_thing_at[3] = { ctrl.m[0][3], ctrl.m[1][3], ctrl.m[2][3] }; 428 | float object_to_head[3]; 429 | float object_to_head_full_mag[3]; 430 | sub3d( object_to_head_full_mag, eye_location, put_thing_at ); 431 | normalize3d( object_to_head, object_to_head_full_mag ); 432 | 433 | float fovyK = mag3d( object_to_head_full_mag ) / overlayscale; 434 | //1./tan(fovy * 3.1415926 / 360.0) 435 | float aspect = 1; 436 | float zNear = .01; 437 | float zFar = 200; 438 | float perspective[16]; 439 | matrix44perspective( perspective, fovyK, aspect, zNear, zFar ); 440 | 441 | // Point square at head - Make HMD up real up, to keep eyes parallel in view space. 442 | float up[3] = { 0, 1, 0 }; 443 | ApplyMatrixToPointRotateOnly( up, up, head ); 444 | float object_vector_up[3]; 445 | float object_vector_right[3]; 446 | cross3d( object_vector_right, object_to_head, up ); 447 | cross3d( object_vector_up, object_vector_right, object_to_head ); 448 | normalize3d( object_vector_up, object_vector_up ); 449 | normalize3d( object_vector_right, object_vector_right ); 450 | //Makes a coordinate frame. 451 | struct HmdMatrix34_t absXFormTE; 452 | 453 | absXFormTE.m[0][3] = eye_location[0]; 454 | absXFormTE.m[1][3] = eye_location[1]; 455 | absXFormTE.m[2][3] = eye_location[2]; 456 | absXFormTE.m[0][0] = object_vector_right[0]; 457 | absXFormTE.m[1][0] = object_vector_right[1]; 458 | absXFormTE.m[2][0] = object_vector_right[2]; 459 | absXFormTE.m[0][1] = object_vector_up[0]; 460 | absXFormTE.m[1][1] = object_vector_up[1]; 461 | absXFormTE.m[2][1] = object_vector_up[2]; 462 | absXFormTE.m[0][2] = object_to_head[0]; 463 | absXFormTE.m[1][2] = object_to_head[1]; 464 | absXFormTE.m[2][2] = object_to_head[2]; 465 | 466 | 467 | // Need to make a matrix to invert the object to eye in worldspace. 468 | HmdMatrix34_t mat_to_inv = absXFormTE; 469 | HmdMatrix34_t modelview = InvertHmdMatrix34( mat_to_inv ); 470 | // modelview.m[0][3] += -eye_location[0]; 471 | // modelview.m[1][3] += -eye_location[1]; 472 | // modelview.m[2][3] += -eye_location[2]; 473 | // mat_to_inv.m[0][0] = 1; mat_to_inv.m[1][0] = 0; mat_to_inv.m[2][0] = 0; 474 | // mat_to_inv.m[0][1] = 0; mat_to_inv.m[1][1] = 1; mat_to_inv.m[2][1] = 0; 475 | // mat_to_inv.m[0][2] = 0; mat_to_inv.m[1][2] = 0; mat_to_inv.m[2][2] = 1; 476 | // modelview.m[0][3] = -eye_location[0]; 477 | // modelview.m[1][3] = -eye_location[1]; 478 | // modelview.m[2][3] = -eye_location[2]; 479 | //printf( "%f %f %f -> %f %f %f\n", mat_to_inv.m[0][3], mat_to_inv.m[1][3], mat_to_inv.m[2][3], modelview.m[0][3], modelview.m[1][3], modelview.m[2][3] ); 480 | 481 | 482 | //HmdMatrix34_t modelview = ( mat_to_inv ); 483 | 484 | 485 | int i; 486 | // Skip over a bunch of vertices. 487 | for( i = 0; i < sizeof( teapotIndices ) / sizeof( unsigned int); i+=3 ) 488 | { 489 | int i1 = teapotIndices[((i+0)%3)+(i/3)*3]; 490 | int i2 = teapotIndices[((i+1)%3)+(i/3)*3]; 491 | const float * pt1 = &teapotPositions[i1*3]; 492 | const float * pt2 = &teapotPositions[i2*3]; 493 | 494 | float applied_pt1[4]; 495 | float output_pt1[4]; 496 | float applied_pt2[4]; 497 | float output_pt2[4]; 498 | float enpt = 1; 499 | 500 | float ptloc1[3]; 501 | float ptlocal1[3] = { pt1[0]*scale, pt1[1]*scale, pt1[2]*scale }; 502 | ApplyMatrixToPoint( ptloc1, ptlocal1, ctrl ); 503 | 504 | float ptloc2[3]; 505 | float ptlocal2[3] = { pt2[0]*scale, pt2[1]*scale, pt2[2]*scale }; 506 | ApplyMatrixToPoint( ptloc2, ptlocal2, ctrl ); 507 | 508 | ApplyMatrixToPoint( applied_pt1, ptloc1, modelview ); 509 | ApplyMatrixToPoint( applied_pt2, ptloc2, modelview ); 510 | applied_pt1[3] = 1; 511 | applied_pt2[3] = 1; 512 | ApplyMatrixToPoint444( output_pt1, applied_pt1, perspective ); 513 | ApplyMatrixToPoint444( output_pt2, applied_pt2, perspective ); 514 | 515 | output_pt1[3] *= -1; // HMMM 516 | output_pt2[3] *= -1; // HMMM 517 | 518 | output_pt1[0] /= output_pt1[3]; 519 | output_pt1[1] /= output_pt1[3]; 520 | output_pt1[2] /= output_pt1[3]; 521 | output_pt1[3] /= output_pt1[3]; 522 | output_pt2[0] /= output_pt2[3]; 523 | output_pt2[1] /= output_pt2[3]; 524 | output_pt2[2] /= output_pt2[3]; 525 | output_pt2[3] /= output_pt2[3]; 526 | 527 | float clip_space1[2]; 528 | float clip_space2[2]; 529 | clip_space1[0] = ( output_pt1[0] + 1 ) * ( RWIDTH / 2.0 ); 530 | clip_space1[1] = ( output_pt1[1] + 1 ) * ( RHEIGHT / 2.0 ); 531 | clip_space2[0] = ( output_pt2[0] + 1 ) * ( RWIDTH / 2.0 ); 532 | clip_space2[1] = ( output_pt2[1] + 1 ) * ( RHEIGHT / 2.0 ); 533 | if( i < 0 ) 534 | { 535 | printf( "%d %f %f %f -> %f %f %f -> %f %f %f %f -> %f %f\n", i, ptloc1[0], ptloc1[1], ptloc1[2], applied_pt1[0], applied_pt1[1], applied_pt1[2], 536 | output_pt1[0], output_pt1[1], output_pt1[2], output_pt1[3], clip_space1[0], clip_space1[1] ); 537 | } 538 | if( clip_space1[0] < 0 || clip_space1[0] >= RWIDTH ) continue; 539 | if( clip_space2[0] < 0 || clip_space2[0] >= RWIDTH ) continue; 540 | CNFGTackSegment( clip_space1[0] + (!eye)*RWIDTH, clip_space1[1], clip_space2[0] + (!eye)*RWIDTH, clip_space2[1] ); 541 | } 542 | } 543 | 544 | // printf( "%f %f %f - ", head.m[0][3], head.m[1][3], head.m[2][3] ); 545 | // printf( "%f %f %f\n", headeL.m[0][3], headeL.m[1][3], headeL.m[2][3] ); 546 | 547 | err = oOverlay->SetOverlayTransformAbsolute( overlayID, index, &absXForm ); 548 | } 549 | 550 | // Finish rendering any pending draw operations. 551 | CNFGFlushRender(); 552 | 553 | // Bind the texture we will be sending to OpenVR. 554 | glBindTexture( GL_TEXTURE_2D, overlaytexture ); 555 | 556 | // Copy the current framebuffer into that texture. 557 | glCopyTexImage2D( GL_TEXTURE_2D, 0, GL_RGBA, 0, 0, WIDTH, HEIGHT, 0 ); 558 | 559 | // Setup a Texture_t object to send in the texture. 560 | struct Texture_t tex; 561 | tex.eColorSpace = EColorSpace_ColorSpace_Auto; 562 | tex.eType = ETextureType_TextureType_OpenGL; 563 | tex.handle = (void*)(intptr_t)overlaytexture; 564 | 565 | // Send texture into OpenVR as the overlay. 566 | oOverlay->SetOverlayTexture( overlayID, &tex ); 567 | 568 | // We have to process through texture events. 569 | struct VREvent_t nEvent; 570 | if( overlayAssociated ) 571 | { 572 | while( oOverlay->PollNextOverlayEvent( overlayID, &nEvent, sizeof( nEvent ) ) ); 573 | } 574 | 575 | // Do not flip frames, otherwise we will lock to 2D FPS. 576 | //CNFGSwapBuffers(); 577 | 578 | framenumber++; 579 | 580 | // Don't go at 1,000+ FPS, wait til next frame sync from scene app. 581 | oOverlay->WaitFrameSync( 100 ); 582 | } 583 | 584 | return 0; 585 | } -------------------------------------------------------------------------------- /screenshot.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cnlohr/openvr_overlay_model/d4a8f4d1668e313e7654cad65acdd98574763dba/screenshot.jpg --------------------------------------------------------------------------------