vtkRenderWindow类中包含的一些函数概析

来源:互联网 发布:微盟 知乎 编辑:程序博客网 时间:2024/04/29 02:58

该类主要用于创建一个window用于renderers来进行绘制

vtkRenderWindow是一个抽象类,主要用于指定渲染窗口的一些参数与函数。一个渲染窗口是一个图形窗口,对于用户绘制他们想要图形的接口。方法用来同步渲染进程,设置窗口大小和控制double buffering。也允许渲染立体图形,交错渲染立体类型是为了输出a VRex stereo projector。所有的奇数平行线是来自左眼,偶数的来自右眼,用户必须使render window与VRex projector对其,否则两眼将被替换。

在vtk4以后的版本vtkWindowToImageFilter类是一个规范的方法的一部分,主要用来输出window的图形到文件中(代替了SaveImageAsPPM)。连接这些filters中的一个到window的输出,并且把这些filters的输出作为一个writer,就像vtkPNGWriter

// .SECTION see also
// vtkRenderer vtkRenderWindowInteractor vtkWindowToImageFilter

#include "vtkRenderingCoreModule.h" // For export macro
#include "vtkWindow.h"

class vtkFloatArray;
class vtkPainterDeviceAdapter;
class vtkProp;
class vtkCollection;
class vtkRenderWindowInteractor;
class vtkRenderer;
class vtkRendererCollection;
class vtkUnsignedCharArray;

// lets define the different types of stereo     立体的不同种类
#define VTK_STEREO_CRYSTAL_EYES 1
#define VTK_STEREO_RED_BLUE     2
#define VTK_STEREO_INTERLACED   3
#define VTK_STEREO_LEFT         4
#define VTK_STEREO_RIGHT        5
#define VTK_STEREO_DRESDEN      6
#define VTK_STEREO_ANAGLYPH     7
#define VTK_STEREO_CHECKERBOARD 8
#define VTK_STEREO_SPLITVIEWPORT_HORIZONTAL 9

//光标的不同种类
#define VTK_CURSOR_DEFAULT   0
#define VTK_CURSOR_ARROW     1
#define VTK_CURSOR_SIZENE    2
#define VTK_CURSOR_SIZENW    3
#define VTK_CURSOR_SIZESW    4
#define VTK_CURSOR_SIZESE    5
#define VTK_CURSOR_SIZENS    6
#define VTK_CURSOR_SIZEWE    7

#define VTK_CURSOR_SIZEALL   8
#define VTK_CURSOR_HAND      9
#define VTK_CURSOR_CROSSHAIR 10

class VTKRENDERINGCORE_EXPORT vtkRenderWindow : public vtkWindow
{

public:

父类为vtkWindow。

void PrintSelf(ostream& os, vtkIndent indent);

static vtkRenderWindow *New();:默认创建的实例是screen size为300*300,borders on,positioned at (0,0),doublebuffering on

添加renderer,去除renderer(都是从lists of renderers),查找某个renderer是否在list中,获取整个renderers 集

获取现在使用的rendering library

GL2PS exporter通过特殊的方式操控特定的props(例如文本信息)。这个方法提供一个 a render,并且通过特定集合捕获all "GL2PS-special" props。对于每个vtkRenderer in this->GetRenderers()这个集合vtkPropCollection,且每一个都包含由相关renderer渲染的props。void CaptureGL2PSSpecialProps(vtkCollection *specialProps);

返回true,当渲染进程捕获了text actors

渲染进程开始渲染函数并且同步开始这个进程,初始化渲染进程,结束渲染进程,swapping buffers,阻止线程,生成图像,

生成交互器:virtual vtkRenderWindowInteractor *MakeRenderWindowInteractor();

光标的相关设置

screen window size设置,borders设置,产生

立体模型渲染的相关参数设置,在这里我们就先不细看了

Set/get the anaglyph color saturation factor 立体颜色的饱和度系数

Set/get the anaglyph color mask values 立体颜色的掩码值

Turn on/off buffer swapping between images

Set/Get the pixel data of an image transmitted as RGBRGBRGB 获取/设置图像的像素数据

含 alpha值的上函数

抗锯齿

焦点深度

运动模糊

打断程序中的渲染

鼠标事件处理

在当下是否渲染

清除状态

期盼的更新速率

获取number of layers for renderers

获取与设置当前renderer相关的interactor(交互器)

检测事件RenderWindow<->Interactor环

vtkWindow API的虚拟根

根据当前的 activated OpenGL context初始化render window

当前window的一些相关的参数设置与检测。color buffer,number of multisamples

protected:
  vtkRenderWindow();
  ~vtkRenderWindow();


  virtual void DoStereoRender();
  virtual void DoFDRender();
  virtual void DoAARender();


  vtkPainterDeviceAdapter* PainterDeviceAdapter;
  vtkRendererCollection *Renderers;
  int Borders;
  int FullScreen;
  int OldScreen[5];
  int PointSmoothing;
  int LineSmoothing;
  int PolygonSmoothing;
  int StereoRender;
  int StereoType;
  int StereoStatus; // used for keeping track of what's going on
  int StereoCapableWindow;

 int AlphaBitPlanes;
  vtkRenderWindowInteractor *Interactor;
  unsigned char* StereoBuffer; // used for red blue stereo
  float *AccumulationBuffer;   // used for many techniques
  unsigned int AccumulationBufferSize;
  int AAFrames;
  int FDFrames;
  int UseConstantFDOffsets; // to use the same offsets at each rendering
  double *ConstantFDOffsets[2];
  int SubFrames;               // number of sub frames
  int CurrentSubFrame;         // what one are we on
  unsigned char *ResultFrame;  // used for any non immediate rendering
  int   SwapBuffers;
  double DesiredUpdateRate;
  int   AbortRender;
  int   InAbortCheck;
  int   InRender;
  int   NeverRendered;
  int   NumberOfLayers;
  int CurrentCursor;
  int IsPicking;
  float AnaglyphColorSaturation;

int AnaglyphColorMask[2];
  int MultiSamples;
  int StencilCapable;
  int CapturingGL2PSSpecialProps;

0 0
原创粉丝点击