VTK  9.3.1
vtkWin32OpenGLDXRenderWindow.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
15 #ifndef vtkWin32OpenGLDXRenderWindow_h
16 #define vtkWin32OpenGLDXRenderWindow_h
17 
18 #include "vtkRenderingOpenGL2Module.h" // For export macro
20 
21 #include <memory> // For std::unique_ptr
22 
23 struct ID3D11Device;
24 struct ID3D11Texture2D;
25 
26 VTK_ABI_NAMESPACE_BEGIN
27 class VTKRENDERINGOPENGL2_EXPORT vtkWin32OpenGLDXRenderWindow : public vtkWin32OpenGLRenderWindow
28 {
29 public:
32  void PrintSelf(ostream& os, vtkIndent indent) override;
33 
37  void Initialize() override;
38 
40 
44  void Lock();
45  void Unlock();
47 
49 
53  void RegisterSharedTexture(unsigned int textureHandle);
54  void UnregisterSharedTexture();
56 
58 
61  void SetSize(int width, int height) override;
63 
65 
68  void SetMultiSamples(int samples) override;
70 
72 
75  void BlitToTexture(ID3D11Texture2D* texture);
77 
79 
82  ID3D11Device* GetDevice();
84 
86 
89  ID3D11Texture2D* GetD3DSharedTexture();
91 
93 
97  void SetAdapterId(LUID uid) { this->AdapterId = uid; }
99 
100 protected:
102  ~vtkWin32OpenGLDXRenderWindow() override;
103 
104 private:
106  void operator=(const vtkWin32OpenGLDXRenderWindow&) = delete;
107 
108  // Hide D3D resources managed by Microsoft::WRL::ComPtr
109  class PIMPL;
110  PIMPL* Private;
111 
112  HANDLE DeviceHandle = 0;
113 
114  unsigned int TextureId = 0; // OpenGL texture id to be shared with the D3D texture
115 
116  HANDLE GLSharedTextureHandle = 0; // OpenGL-D3D shared texture id
117 
118  LUID AdapterId = { 0, 0 }; // DGXI adapter id
119 };
120 VTK_ABI_NAMESPACE_END
121 #endif
static vtkWin32OpenGLRenderWindow * New()
void SetAdapterId(LUID uid)
Specify the DGXI adapter to be used for initialization.
void Initialize() override
Initialize the rendering window.
VTK render window providing OpenGL-DirectX interop.
a simple class to control print indentation
Definition: vtkIndent.h:28
void SetSize(int width, int height) override
Set the size (width and height) of the rendering window in screen coordinates (in pixels)...
virtual void SetMultiSamples(int)
Set / Get the number of multisamples to use for hardware antialiasing.
void PrintSelf(ostream &os, vtkIndent indent) override
Methods invoked by print to print information about the object including superclasses.