VTK  9.6.20260330
vtkWebXRRenderWindow.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
29
30#ifndef vtkWebXRRenderWindow_h
31#define vtkWebXRRenderWindow_h
32
33#include "vtkRenderingWebXRModule.h" // For export macro
34#include "vtkVRRenderWindow.h"
35#include "vtkWrappingHints.h" // For VTK_MARSHALAUTO
36
37VTK_ABI_NAMESPACE_BEGIN
38
39class VTKRENDERINGWEBXR_EXPORT VTK_MARSHALAUTO vtkWebXRRenderWindow : public vtkVRRenderWindow
40{
41public:
44 void PrintSelf(ostream& os, vtkIndent indent) override;
45
50
54 void AddRenderer(vtkRenderer*) override;
55
60 void Render() override;
61
66 int GetColorBufferSizes(int* rgba) override;
67
71 void SetCanvasSelector(const char* _arg);
72
77
82 void Initialize() override;
83
87 void Finalize() override;
88
92 const char* ReportCapabilities() override { return "WebXR System"; }
93
97 bool GetSizeFromAPI() override;
98
103 void StereoMidpoint() override;
104
109 void StereoRenderComplete() override;
110
116 void UpdateHMDMatrixPose() override;
117
121 void RenderModels() override;
122
123protected:
126
130 bool CreateFramebuffers(uint32_t vtkNotUsed(viewCount) = 1) override { return true; };
131
135 void RenderFramebuffer(FramebufferDesc& vtkNotUsed(framebufferDesc)) override{};
136
137private:
139 void operator=(const vtkWebXRRenderWindow&) = delete;
140
141 vtkNew<vtkMatrix4x4> TempMatrix4x4;
142
143 class vtkInternals;
144 vtkInternals* Internal;
145};
146
147VTK_ABI_NAMESPACE_END
148#endif
149// VTK-HeaderTest-Exclude: vtkWebXRRenderWindow.h
a simple class to control print indentation
Definition vtkIndent.h:108
Allocate and hold a VTK object.
Definition vtkNew.h:167
platform-independent render window interaction including picking and frame rate control.
abstract specification for renderers
WebXR rendering window.
void Render() override
Overridden to not release resources that would interfere with an external application's rendering.
void StereoMidpoint() override
Intermediate method performs operations required between the rendering of the left and right eye.
void AddRenderer(vtkRenderer *) override
Add a renderer to the list of renderers.
vtkRenderWindowInteractor * MakeRenderWindowInteractor() override
Create an interactor to control renderers in this window.
void PrintSelf(ostream &os, vtkIndent indent) override
Methods invoked by print to print information about the object including superclasses.
void RenderModels() override
Render the controllers.
void Initialize() override
Initialize the rendering window.
char * GetCanvasSelector()
Get the selector of the canvas element in the DOM.
int GetColorBufferSizes(int *rgba) override
Get the size of the color buffer.
static vtkWebXRRenderWindow * New()
void Finalize() override
Finalize the rendering window.
~vtkWebXRRenderWindow() override
bool CreateFramebuffers(uint32_t viewCount=1) override
no-op because the WebXR API already gives us a framebuffer
const char * ReportCapabilities() override
Get report of capabilities for the render window.
void StereoRenderComplete() override
Handles work required once both views have been rendered when using stereo rendering.
void UpdateHMDMatrixPose() override
Update the HMD pose based on hardware pose and physical to world transform.
void RenderFramebuffer(FramebufferDesc &framebufferDesc) override
no-op to satisfy the base class API
bool GetSizeFromAPI() override
Get size of render window from WebXR.
void SetCanvasSelector(const char *_arg)
Specify the selector of the canvas element in the DOM.
#define VTK_MARSHALAUTO
#define VTK_NEWINSTANCE