VTK  9.3.0
vtkOpenXRRenderWindow.h
Go to the documentation of this file.
1// SPDX-FileCopyrightText: Copyright (c) Ken Martin, Will Schroeder, Bill Lorensen
2// SPDX-License-Identifier: BSD-3-Clause
42#ifndef vtkOpenXRRenderWindow_h
43#define vtkOpenXRRenderWindow_h
44
45#include "vtkRenderingOpenXRModule.h" // For export macro
46#include "vtkVRRenderWindow.h"
47
48#include "vtkEventData.h" // for method sig
49
50#include <array> // array
51
52VTK_ABI_NAMESPACE_BEGIN
53class vtkMatrix4x4;
54
55class VTKRENDERINGOPENXR_EXPORT vtkOpenXRRenderWindow : public vtkVRRenderWindow
56{
57public:
60
65
69 void AddRenderer(vtkRenderer*) override;
70
75 void StereoUpdate() override;
76
81 void StereoMidpoint() override;
82
87 void StereoRenderComplete() override;
88
93 void Render() override;
94
101 void Initialize() override;
102
108 void Finalize() override;
109
113 const char* ReportCapabilities() override { return "OpenXR System"; }
114
118 bool GetSizeFromAPI() override;
119
125 vtkTypeBool GetEventPending() override { return 0; }
126
130 void SetModelActiveState(const int hand, bool state) { this->ModelsActiveState[hand] = state; }
131
132 uint32_t GetDeviceHandleForOpenXRHandle(uint32_t index);
134
140 void UpdateHMDMatrixPose() override;
141
145 void RenderModels() override;
146
147protected:
150
151 // Create one framebuffer per view
152 bool CreateFramebuffers(uint32_t viewCount = 2) override;
153
155 void RenderFramebuffer(FramebufferDesc& framebufferDesc) override;
156
157 virtual void RenderOneEye(uint32_t eye);
158
160
161 // Store if a model is active or not here as openxr do not have a concept
162 // of active/inactive controller
163 std::array<bool, 2> ModelsActiveState = { true, true };
164
165private:
167 void operator=(const vtkOpenXRRenderWindow&) = delete;
168};
169
170VTK_ABI_NAMESPACE_END
171#endif
172// VTK-HeaderTest-Exclude: vtkOpenXRRenderWindow.h
represent and manipulate 4x4 transformation matrices
Allocate and hold a VTK object.
Definition vtkNew.h:60
OpenXR rendering window.
static vtkOpenXRRenderWindow * New()
void RenderFramebuffer(FramebufferDesc &framebufferDesc) override
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.
~vtkOpenXRRenderWindow() override
virtual void RenderOneEye(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.
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.
void RenderModels() override
Render the controllers.
platform-independent render window interaction including picking and frame rate control.
abstract specification for renderers
Definition vtkRenderer.h:68
VR rendering window.
int vtkTypeBool
Definition vtkABI.h:64
vtkEventDataDevice
platform-independent event data structures
#define VTK_NEWINSTANCE