VTK  9.2.6
vtkOpenXRRenderWindow.h
Go to the documentation of this file.
1/*=========================================================================
2
3Program: Visualization Toolkit
4
5Copyright (c) Ken Martin, Will Schroeder, Bill Lorensen
6All rights reserved.
7See Copyright.txt or http://www.kitware.com/Copyright.htm for details.
8
9This software is distributed WITHOUT ANY WARRANTY; without even
10the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
11PURPOSE. See the above copyright notice for more information.
12
13=========================================================================*/
48
49#ifndef vtkOpenXRRenderWindow_h
50#define vtkOpenXRRenderWindow_h
51
52#include "vtkRenderingOpenXRModule.h" // For export macro
53#include "vtkVRRenderWindow.h"
54
55#include "vtkEventData.h" // for method sig
56#include "vtkOpenXR.h"
57
58#include <array> // array
59
60class vtkMatrix4x4;
61
62class VTKRENDERINGOPENXR_EXPORT vtkOpenXRRenderWindow : public vtkVRRenderWindow
63{
64public:
67
72
76 void AddRenderer(vtkRenderer*) override;
77
82 void StereoUpdate() override;
83
88 void StereoMidpoint() override;
89
94 void StereoRenderComplete() override;
95
100 void Render() override;
102
104
110 void Initialize() override;
111
117 void Finalize() override;
118
122 const char* ReportCapabilities() override { return "OpenXR System"; }
123
127 bool GetSizeFromAPI() override;
128
134 vtkTypeBool GetEventPending() override { return 0; }
135
137
140 void SetModelActiveState(const int hand, bool state) { this->ModelsActiveState[hand] = state; }
142
143 uint32_t GetDeviceHandleForOpenXRHandle(uint32_t index);
145
151 void UpdateHMDMatrixPose() override;
152
153protected:
156
157 // Create one framebuffer per view
158 bool CreateFramebuffers(uint32_t viewCount = 2) override;
159
161 void RenderFramebuffer(FramebufferDesc& framebufferDesc);
162
163 void RenderOneEye(const uint32_t eye);
164
166
168
169 // Store if a model is active or not here as openxr do not have a concept
170 // of active/inactive controller
171 std::array<bool, 2> ModelsActiveState = { true, true };
172
173private:
175 void operator=(const vtkOpenXRRenderWindow&) = delete;
176};
177
178#endif
179// VTK-HeaderTest-Exclude: vtkOpenXRRenderWindow.h
represent and manipulate 4x4 transformation matrices
Allocate and hold a VTK object.
Definition vtkNew.h:56
OpenXR rendering window.
static vtkOpenXRRenderWindow * New()
void Render() override
Overridden to not release resources that would interfere with an external application's rendering.
void StereoUpdate() override
Update the system, if needed, due to stereo rendering.
std::array< bool, 2 > ModelsActiveState
~vtkOpenXRRenderWindow() override
void RenderFramebuffer(FramebufferDesc &framebufferDesc)
void RenderOneEye(const uint32_t eye)
bool BindTextureToFramebuffer(FramebufferDesc &framebufferDesc)
vtkTypeBool GetEventPending() override
Check to see if a mouse button has been pressed or mouse wheel activated.
void AddRenderer(vtkRenderer *) override
Add a renderer to the list of renderers.
const char * ReportCapabilities() override
Get report of capabilities for the render window.
bool CreateFramebuffers(uint32_t viewCount=2) override
void Finalize() override
Finalize the rendering window.
vtkRenderWindowInteractor * MakeRenderWindowInteractor() override
Create an interactor to control renderers in this window.
void UpdateHMDMatrixPose() override
Update the HMD pose based on hardware pose and physical to world transform.
void StereoRenderComplete() override
Handles work required once both views have been rendered when using stereo rendering.
void SetModelActiveState(const int hand, bool state)
Set the active state (active: true / inactive: false) of the specified hand.
void Initialize() override
Initialize the rendering window.
void RenderModels()
Render the controller and base station models.
uint32_t GetDeviceHandleForOpenXRHandle(uint32_t index)
vtkEventDataDevice GetDeviceForOpenXRHandle(uint32_t ohandle)
vtkNew< vtkMatrix4x4 > TempMatrix4x4
void StereoMidpoint() override
Intermediate method performs operations required between the rendering of the left and right eye.
bool GetSizeFromAPI() override
Get size of render window from OpenXR.
platform-independent render window interaction including picking and frame rate control.
abstract specification for renderers
Definition vtkRenderer.h:67
int vtkTypeBool
Definition vtkABI.h:69
vtkEventDataDevice
platform-independent event data structures
#define VTK_NEWINSTANCE