mirror of
https://github.com/OpenFOAM/ThirdParty-6.git
synced 2025-12-08 06:57:43 +00:00
91 lines
3.6 KiB
C++
91 lines
3.6 KiB
C++
/*=========================================================================
|
|
|
|
Program: Visualization Toolkit
|
|
Module: vtkExternalOpenGLRenderWindow.h
|
|
|
|
Copyright (c) Ken Martin, Will Schroeder, Bill Lorensen
|
|
All rights reserved.
|
|
See Copyright.txt or http://www.kitware.com/Copyright.htm for details.
|
|
|
|
This software is distributed WITHOUT ANY WARRANTY; without even
|
|
the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
|
|
PURPOSE. See the above copyright notice for more information.
|
|
|
|
=========================================================================*/
|
|
// .NAME vtkExternalOpenGLRenderWindow - OpenGL render window that allows using
|
|
// an external window to render vtk objects
|
|
// .SECTION Description
|
|
// vtkExternalOpenGLRenderWindow is a concrete implementation of the abstract
|
|
// class vtkRenderWindow. vtkExternalOpenGLRenderer interfaces to the OpenGL
|
|
// graphics library.
|
|
//
|
|
// This class extends vtkGenericOpenGLRenderWindow to allow sharing the
|
|
// same OpenGL context by various visualization applications. Basically, this
|
|
// class prevents VTK from creating a new OpenGL context. Thus, it requires that
|
|
// an OpenGL context be initialized before Render is called.
|
|
// \sa Render()
|
|
//
|
|
// It is a generic implementation; this window is platform agnostic. However,
|
|
// the application user must explicitly make sure the window size is
|
|
// synchronized when the external application window/viewport resizes.
|
|
// \sa SetSize()
|
|
//
|
|
// It has the same requirements as the vtkGenericOpenGLRenderWindow, whereby,
|
|
// one must register an observer for WindowMakeCurrentEvent,
|
|
// WindowIsCurrentEvent and WindowFrameEvent.
|
|
// \sa vtkGenericOpenGLRenderWindow
|
|
|
|
#ifndef vtkExternalOpenGLRenderWindow_h
|
|
#define vtkExternalOpenGLRenderWindow_h
|
|
|
|
#include "vtkRenderingExternalModule.h" // For export macro
|
|
#include "vtkGenericOpenGLRenderWindow.h"
|
|
|
|
class VTKRENDERINGEXTERNAL_EXPORT vtkExternalOpenGLRenderWindow :
|
|
public vtkGenericOpenGLRenderWindow
|
|
{
|
|
public:
|
|
static vtkExternalOpenGLRenderWindow *New();
|
|
vtkTypeMacro(vtkExternalOpenGLRenderWindow, vtkGenericOpenGLRenderWindow);
|
|
void PrintSelf(ostream &os, vtkIndent indent);
|
|
|
|
// Description:
|
|
// Begin the rendering process using the existing context.
|
|
void Start(void);
|
|
|
|
// Description:
|
|
// This computes the size of the render window
|
|
// before calling the superclass' Render() method
|
|
void Render();
|
|
|
|
// Description:
|
|
// Tells if this window is the current graphics context for the calling
|
|
// thread.
|
|
virtual bool IsCurrent();
|
|
|
|
// Description:
|
|
// Turn on/off a flag which enables/disables automatic positioning and
|
|
// resizing of the render window. By default, vtkExternalOpenGLRenderWindow
|
|
// queries the viewport position and size (glViewport) from the OpenGL state
|
|
// and uses it to resize itself. However, in special circumstances this
|
|
// feature is undesirable. One such circumstance may be to avoid performance
|
|
// penalty of querying OpenGL state variables. So the following boolean is
|
|
// provided to disable automatic window resize.
|
|
// (Turn AutomaticWindowPositionAndResize off if you do not want the viewport
|
|
// to be queried from the OpenGL state.)
|
|
vtkGetMacro(AutomaticWindowPositionAndResize,int);
|
|
vtkSetMacro(AutomaticWindowPositionAndResize,int);
|
|
vtkBooleanMacro(AutomaticWindowPositionAndResize,int);
|
|
|
|
protected:
|
|
vtkExternalOpenGLRenderWindow();
|
|
~vtkExternalOpenGLRenderWindow();
|
|
|
|
int AutomaticWindowPositionAndResize;
|
|
|
|
private:
|
|
vtkExternalOpenGLRenderWindow(const vtkExternalOpenGLRenderWindow&); // Not implemented
|
|
void operator=(const vtkExternalOpenGLRenderWindow&); // Not implemented
|
|
};
|
|
#endif //vtkExternalOpenGLRenderWindow_h
|