VTK
vtkOpenGLContextDevice3D.h
Go to the documentation of this file.
1 /*=========================================================================
2 
3  Program: Visualization Toolkit
4  Module: vtkOpenGLContextDevice3D.h
5 
6  Copyright (c) Ken Martin, Will Schroeder, Bill Lorensen
7  All rights reserved.
8  See Copyright.txt or http://www.kitware.com/Copyright.htm for details.
9 
10  This software is distributed WITHOUT ANY WARRANTY; without even
11  the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
12  PURPOSE. See the above copyright notice for more information.
13 
14 =========================================================================*/
15 
25 #ifndef vtkOpenGLContextDevice3D_h
26 #define vtkOpenGLContextDevice3D_h
27 
28 #include "vtkRenderingContextOpenGL2Module.h" // For export macro
29 #include "vtkContextDevice3D.h"
30 #include "vtkNew.h" // For ivars.
31 #include <vector> // STL Header
32 
33 class vtkBrush;
35 class vtkOpenGLHelper;
37 class vtkPen;
38 class vtkRenderer;
39 class vtkShaderProgram;
40 class vtkTransform;
41 
42 class VTKRENDERINGCONTEXTOPENGL2_EXPORT vtkOpenGLContextDevice3D : public vtkContextDevice3D
43 {
44 public:
46  void PrintSelf(ostream &os, vtkIndent indent);
47 
49 
53  void DrawPoly(const float *verts, int n, const unsigned char *colors, int nc);
54 
59  void DrawLines(const float *verts, int n, const unsigned char *colors, int nc);
60 
64  void DrawPoints(const float *verts, int n,
65  const unsigned char *colors, int nc);
66 
70  void DrawTriangleMesh(const float *mesh, int n,
71  const unsigned char *colors, int nc);
72 
78  void ApplyPen(vtkPen *pen);
79 
85  void ApplyBrush(vtkBrush *brush);
86 
91 
96 
101 
105  void PushMatrix();
106 
110  void PopMatrix();
111 
116  void SetClipping(const vtkRecti &rect);
117 
121  void EnableClipping(bool enable);
122 
124 
131  void EnableClippingPlane(int i, double *planeEquation);
132  void DisableClippingPlane(int i);
134 
139 
143  virtual void Begin(vtkViewport* viewport);
144 
145 protected:
148 
152  virtual void EnableDepthBuffer();
153 
157  virtual void DisableDepthBuffer();
158 
159  vtkOpenGLHelper *VCBO; // vertex + color
161  vtkOpenGLHelper *VBO; // vertex
163 
166  const float *v, int nv,
167  const unsigned char *coolors, int nc,
168  float *tcoords);
169  void CoreDrawTriangles(std::vector<float> &tverts);
170 
171  // do we have wide lines that require special handling
172  virtual bool HaveWideLines();
173 
175 
180 
185 
186  std::vector<bool> ClippingPlaneStates;
187  std::vector<double> ClippingPlaneValues;
188 
189 private:
190  vtkOpenGLContextDevice3D(const vtkOpenGLContextDevice3D &) VTK_DELETE_FUNCTION;
191  void operator=(const vtkOpenGLContextDevice3D &) VTK_DELETE_FUNCTION;
192 
194 
197  class Private;
198  Private *Storage;
200 
201  // we need a pointer to this because only
202  // the 2D device gets a Begin and sets up
203  // the ortho matrix
204  vtkOpenGLContextDevice2D *Device2D;
205 
206  vtkNew<vtkBrush> Brush;
207  vtkNew<vtkPen> Pen;
208 };
209 
210 #endif
provides a brush that fills shapes drawn by vtkContext2D.
Definition: vtkBrush.h:38
Abstract class for drawing 3D primitives.
a simple class to control print indentation
Definition: vtkIndent.h:40
represent and manipulate 4x4 transformation matrices
Definition: vtkMatrix4x4.h:42
Class for drawing 2D primitives using OpenGL 1.1+.
OpenGL class drawing 3D primitives.
void SetMatrices(vtkShaderProgram *prog)
std::vector< double > ClippingPlaneValues
virtual void DisableDepthBuffer()
End drawing, turn off the depth buffer.
void CoreDrawTriangles(std::vector< float > &tverts)
void GetMatrix(vtkMatrix4x4 *m)
Set the model view matrix for the display.
virtual bool HaveWideLines()
void DrawPoly(const float *verts, int n, const unsigned char *colors, int nc)
Draw a polyline between the specified points.
void Initialize(vtkRenderer *, vtkOpenGLContextDevice2D *)
This must be set during initialization.
void ApplyPen(vtkPen *pen)
Apply the supplied pen which controls the outlines of shapes, as well as lines, points and related pr...
virtual void EnableDepthBuffer()
Begin drawing, turn on the depth buffer.
void ApplyBrush(vtkBrush *brush)
Apply the supplied brush which controls the outlines of shapes, as well as lines, points and related ...
void EnableClipping(bool enable)
Enable or disable the clipping of the scene.
static vtkOpenGLContextDevice3D * New()
void PrintSelf(ostream &os, vtkIndent indent)
Methods invoked by print to print information about the object including superclasses.
void DisableClippingPlane(int i)
std::vector< bool > ClippingPlaneStates
void SetMatrix(vtkMatrix4x4 *m)
Set the model view matrix for the display.
vtkOpenGLRenderWindow * RenderWindow
The OpenGL render window being used by the device.
void DrawPoints(const float *verts, int n, const unsigned char *colors, int nc)
Draw points at the vertex positions specified.
void SetClipping(const vtkRecti &rect)
Supply a float array of length 4 with x1, y1, width, height specifying clipping region for the device...
void EnableClippingPlane(int i, double *planeEquation)
Enable/Disable the specified clipping plane.
void DrawTriangleMesh(const float *mesh, int n, const unsigned char *colors, int nc)
Draw triangles to generate the specified mesh.
void PushMatrix()
Push the current matrix onto the stack.
void MultiplyMatrix(vtkMatrix4x4 *m)
Multiply the current model view matrix by the supplied one.
void BuildVBO(vtkOpenGLHelper *cbo, const float *v, int nv, const unsigned char *coolors, int nc, float *tcoords)
vtkRenderer * Renderer
We need to store a pointer to get the camera mats.
virtual void Begin(vtkViewport *viewport)
Begin drawing, pass in the viewport to set up the view.
void PopMatrix()
Pop the current matrix off of the stack.
void DrawLines(const float *verts, int n, const unsigned char *colors, int nc)
Draw lines defined by specified pair of points.
OpenGL rendering window.
provides a pen that draws the outlines of shapes drawn by vtkContext2D.
Definition: vtkPen.h:40
abstract specification for renderers
Definition: vtkRenderer.h:64
The ShaderProgram uses one or more Shader objects.
describes linear transformations via a 4x4 matrix
Definition: vtkTransform.h:61
abstract specification for Viewports
Definition: vtkViewport.h:48