VTK  9.6.20260514
vtkOpenXRManagerOpenGLGraphics.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
10
11#ifndef vtkOpenXRManagerOpenGLGraphics_h
12#define vtkOpenXRManagerOpenGLGraphics_h
13
15#include "vtkRenderingOpenXRModule.h" // For export macro
16
17#include "vtkRenderingOpenGLConfigure.h" // For VTK_USE_X / WIN32
18
19#include <memory> // For shared_ptr
20#include <vector> // For std::vector
21
22// Forward declare the graphics binding struct depending on the platform being used
23#ifdef VTK_USE_X
24struct XrGraphicsBindingOpenGLXlibKHR;
25typedef XrGraphicsBindingOpenGLXlibKHR XrGraphicsBindingOpenGL;
26#elif defined(_WIN32)
27struct XrGraphicsBindingOpenGLWin32KHR;
28typedef XrGraphicsBindingOpenGLWin32KHR XrGraphicsBindingOpenGL;
29#endif
30struct XrSwapchainImageOpenGLKHR;
31
32namespace vtk::detail
33{
34VTK_ABI_NAMESPACE_BEGIN
36VTK_ABI_NAMESPACE_END
37}
38
39VTK_ABI_NAMESPACE_BEGIN
40class VTKRENDERINGOPENXR_EXPORT vtkOpenXRManagerOpenGLGraphics : public vtkOpenXRManagerGraphics
41{
42public:
45
49 void SetNumberOfSwapchains(uint32_t viewCount) override;
50
52
56 void GetColorSwapchainImage(uint32_t scIndex, uint32_t imgIndex, void* texture) override;
57 void GetDepthSwapchainImage(uint32_t scIndex, uint32_t imgIndex, void* texture) override;
59
61
64 void EnumerateColorSwapchainImages(XrSwapchain swapchain, uint32_t scIndex) override;
65 void EnumerateDepthSwapchainImages(XrSwapchain swapchain, uint32_t scIndex) override;
67
69
73 const std::vector<int64_t>& GetSupportedColorFormats() override;
74 const std::vector<int64_t>& GetSupportedDepthFormats() override;
76
80 bool CreateGraphicsBinding(vtkOpenGLRenderWindow* helperWindow) override;
81
85 const void* GetGraphicsBinding() override { return this->GraphicsBinding.get(); };
86
90 const char* GetBackendExtensionName() override;
91
92protected:
95
100 {
101 std::vector<XrSwapchainImageOpenGLKHR> Images;
102 };
103
107 void EnumerateSwapchainImages(XrSwapchain swapchain, SwapchainImagesOpenGL& swapchainImages);
108
109 std::shared_ptr<XrGraphicsBindingOpenGL> GraphicsBinding;
110
115
116private:
118 void operator=(const vtkOpenXRManagerOpenGLGraphics&) = delete;
119
120 class PIMPL;
121 PIMPL* Private;
122};
123
124VTK_ABI_NAMESPACE_END
125#endif
OpenGL rendering window.
vtkOpenXRManagerGraphics()=default
void EnumerateSwapchainImages(XrSwapchain swapchain, SwapchainImagesOpenGL &swapchainImages)
Acquire OpenGL swapchain images an store them in swapchainImages.
bool CreateGraphicsBinding(vtkOpenGLRenderWindow *helperWindow) override
Fill the pointer to the XrGraphicsBindingOpenGL structure.
static vtkOpenXRManagerOpenGLGraphics * New()
const std::vector< int64_t > & GetSupportedColorFormats() override
Return the list of GL formats supported by vtkOpenGLRenderWindow.
void EnumerateDepthSwapchainImages(XrSwapchain swapchain, uint32_t scIndex) override
Acquire OpenGL swapchain images for the specified eye index.
void GetColorSwapchainImage(uint32_t scIndex, uint32_t imgIndex, void *texture) override
Fill texture with the OpenGL texture id for the specified eye scIndex.
bool CheckGraphicsRequirements(vtk::detail::vtkOpenXRManager &manager) override
Check OpenGL version supported by the runtime.
const char * GetBackendExtensionName() override
Return the extension name corresponding to the OpenGL rendering backend.
void GetDepthSwapchainImage(uint32_t scIndex, uint32_t imgIndex, void *texture) override
Fill texture with the OpenGL texture id for the specified eye scIndex.
void SetNumberOfSwapchains(uint32_t viewCount) override
Resize the internal vectors storing the color and depth swapchains.
std::shared_ptr< XrGraphicsBindingOpenGL > GraphicsBinding
void EnumerateColorSwapchainImages(XrSwapchain swapchain, uint32_t scIndex) override
Acquire OpenGL swapchain images for the specified eye index.
const void * GetGraphicsBinding() override
Return pointer to the XrGraphicsBindingOpenGL structure required to create the OpenXR session.
~vtkOpenXRManagerOpenGLGraphics() override
const std::vector< int64_t > & GetSupportedDepthFormats() override
Return the list of GL formats supported by vtkOpenGLRenderWindow.
Singleton class that holds a collection of utility functions and member variables to communicate with...