VTK
dox
Rendering
OpenGL2
vtkOpenGLInstanceCulling.h
Go to the documentation of this file.
1
/*=========================================================================
2
3
Program: Visualization Toolkit
4
Module: vtkOpenGLInstanceCulling.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
66
#ifndef vtkOpenGLInstanceCulling_h
67
#define vtkOpenGLInstanceCulling_h
68
69
#include "
vtkObject.h
"
70
#include "
vtkOpenGLHelper.h
"
// For vtkOpenGLHelper
71
#include "vtkRenderingOpenGL2Module.h"
// For export macro
72
#include "
vtkSmartPointer.h
"
// For smart pointer
73
74
#include <vector>
75
76
class
vtkOpenGLIndexBufferObject
;
77
class
vtkOpenGLBufferObject
;
78
class
vtkPolyData
;
79
class
vtkOpenGLShaderCache
;
80
81
class
VTKRENDERINGOPENGL2_EXPORT
vtkOpenGLInstanceCulling
:
public
vtkObject
82
{
83
public
:
84
static
vtkOpenGLInstanceCulling
*
New
();
85
vtkTypeMacro(
vtkOpenGLInstanceCulling
,
vtkObject
)
86
87
struct
InstanceLOD
88
{
89
float
Distance
;
90
unsigned
int
Query
;
91
vtkOpenGLIndexBufferObject
*
IBO
;
92
vtkOpenGLBufferObject
*
PositionVBO
;
93
vtkOpenGLBufferObject
*
NormalVBO
;
94
int
NumberOfInstances
;
95
96
// used for sorting
97
bool
operator <
(
const
InstanceLOD
& other)
const
98
{
99
return
this->Distance < other.
Distance
;
100
}
101
};
102
106
void
InitLOD(
vtkPolyData
* pd);
107
115
void
AddLOD(
float
distance,
float
targetReduction);
116
120
void
BuildCullingShaders(
vtkOpenGLShaderCache
* cache,
vtkIdType
numInstances,
bool
withNormals);
121
125
vtkOpenGLHelper
& GetHelper();
126
130
InstanceLOD& GetLOD(
vtkIdType
index
);
131
135
vtkIdType
GetNumberOfLOD();
136
140
vtkOpenGLBufferObject
* GetLODBuffer(
vtkIdType
index
);
141
145
void
RunCullingShaders(
vtkIdType
numInstances,
146
vtkOpenGLBufferObject
* matrixBuffer,
147
vtkOpenGLBufferObject
* colorBuffer,
148
vtkOpenGLBufferObject
* normalBuffer);
149
151
154
vtkSetMacro(ColorLOD,
bool
);
155
vtkGetMacro(ColorLOD,
bool
);
157
158
protected
:
159
vtkOpenGLInstanceCulling
() =
default
;
160
~
vtkOpenGLInstanceCulling
()
override
;
161
162
void
DeleteLODs();
163
void
UploadCurrentState(InstanceLOD& lod,
vtkPolyData
* pd);
164
165
private
:
166
vtkOpenGLInstanceCulling
(
const
vtkOpenGLInstanceCulling
&) =
delete
;
167
void
operator=(
const
vtkOpenGLInstanceCulling
&) =
delete
;
168
169
vtkOpenGLHelper
CullingHelper;
170
std::vector<InstanceLOD> LODList;
171
vtkSmartPointer<vtkPolyData>
PolyData;
172
bool
ColorLOD =
false
;
173
};
174
175
#endif // vtkOpenGLInstanceCulling_h
176
177
// VTK-HeaderTest-Exclude: vtkOpenGLInstanceCulling.h
vtkOpenGLBufferObject
OpenGL buffer object.
Definition:
vtkOpenGLBufferObject.h:33
vtkIdType
int vtkIdType
Definition:
vtkType.h:347
vtkObject::New
static vtkObject * New()
Create an object with Debug turned off, modified time initialized to zero, and reference counting on.
vtkOpenGLHelper.h
vtkSmartPointer< vtkPolyData >
vtkObject
abstract base class for most VTK objects
Definition:
vtkObject.h:59
vtkOpenGLInstanceCulling::InstanceLOD
Definition:
vtkOpenGLInstanceCulling.h:87
operator<
VTKCOMMONCORE_EXPORT bool operator<(const vtkUnicodeString &lhs, const vtkUnicodeString &rhs)
vtkOpenGLInstanceCulling::InstanceLOD::NormalVBO
vtkOpenGLBufferObject * NormalVBO
Definition:
vtkOpenGLInstanceCulling.h:93
vtkOpenGLIndexBufferObject
OpenGL vertex buffer object.
Definition:
vtkOpenGLIndexBufferObject.h:28
vtkOpenGLInstanceCulling
Frustum culling and LOD management.
Definition:
vtkOpenGLInstanceCulling.h:81
vtkOpenGLHelper
Definition:
vtkOpenGLHelper.h:30
vtkSmartPointer.h
vtkOpenGLInstanceCulling::InstanceLOD::Query
unsigned int Query
Definition:
vtkOpenGLInstanceCulling.h:90
vtkOpenGLShaderCache
manage Shader Programs within a context
Definition:
vtkOpenGLShaderCache.h:35
vtkOpenGLInstanceCulling::InstanceLOD::PositionVBO
vtkOpenGLBufferObject * PositionVBO
Definition:
vtkOpenGLInstanceCulling.h:92
vtkObject.h
vtkOpenGLInstanceCulling::InstanceLOD::Distance
float Distance
Definition:
vtkOpenGLInstanceCulling.h:89
vtkOpenGLInstanceCulling::InstanceLOD::IBO
vtkOpenGLIndexBufferObject * IBO
Definition:
vtkOpenGLInstanceCulling.h:91
vtkPolyData
concrete dataset represents vertices, lines, polygons, and triangle strips
Definition:
vtkPolyData.h:85
vtkOpenGLInstanceCulling::InstanceLOD::NumberOfInstances
int NumberOfInstances
Definition:
vtkOpenGLInstanceCulling.h:94
vtkX3D::index
Definition:
vtkX3D.h:246
Generated by
1.8.16