26 #include <osg/Geometry>
28 #include <tbb/concurrent_queue.h>
30 #include <boost/thread.hpp>
37 class DtCoreGlBufferCreator;
38 class DtAggregatedGeometry;
39 class DtAggregatedGeometryCopyDataAsync;
40 class DtIndirectGeometryAggregator;
41 class DtIndirectGeometryRegistrar;
42 class DtIndirectAggregateHelper;
112 virtual void releaseGLObjects(osg::State* state)
const;
118 virtual bool hasDataToAsyncLoad();
121 virtual bool hasDataToCopy();
125 virtual void setDtDe(
DtDe* myDe);
143 virtual int numModels(
void)
const;
146 virtual int modelId(
int index)
const;
161 virtual int vertexAndAttributesBufferSize(
void)
const;
164 virtual osg::Geometry* aggregatedGeometry(
void);
168 virtual void printStats();
170 virtual void testDrawUsingDrawElements();
173 virtual GLenum indicesType(
void)
const;
175 virtual void copyDataQueue();
185 void configureBuffers();
188 virtual void reserveMaxMemory();
194 virtual void convertToUIntIfNecessary(
int indicesCount);
197 virtual bool updateBuffers();
200 virtual void bindBuffers();
203 virtual void unbindBuffers();
205 virtual unsigned int vertexBufferSizeInBytes()
const;
207 virtual unsigned int vertexBufferNumElements()
const;
208 virtual const void* verticesPointer()
const;
209 virtual unsigned int numVertices(
void)
const;
212 virtual unsigned int normalBufferSizeInBytes()
const;
213 virtual unsigned int normalBufferNumElements()
const;
214 virtual const void* normalsPointer()
const;
215 virtual unsigned int numNormals(
void)
const;
218 virtual unsigned int colorBufferSizeInBytes()
const;
219 virtual unsigned int colorBufferNumElements()
const;
220 virtual const void* colorsPointer()
const;
221 virtual unsigned int numColors(
void)
const;
224 virtual unsigned int textureCoordsBufferSizeInBytes(
unsigned int unit)
const;
225 virtual unsigned int textureCoordsBufferNumElements(
unsigned int unit)
const;
226 virtual const void* textureCoordsPointer(
unsigned int unit)
const;
227 virtual unsigned int numTextureCoords(
unsigned int unit)
const;
229 virtual unsigned int textureBufferSizeInBytes()
const;
231 virtual void copyTextureData(
DtGlBuffer* vertexAndAttributesBuffer,
int &
offset)
const;
234 virtual const void* indexBufferPointer()
const;
235 virtual unsigned int indexBufferSizeInBytes()
const;
296 static void registerInstance(
DtDe& de,
DtIndirectSwitchManager::DequeNodeSwitchInfoPairsArray mySwitchPaths
Definition: DtAggregatedGeometry.h:64
The DtAggregatedGeometry creator for the DtAggregatedGeometryCreator class.
Definition: DtAggregatedGeometry.h:274
tbb::concurrent_queue< DtCopyDataStructure > myDataToCopy
Definition: DtAggregatedGeometry.h:253
int myLastIndex
Definition: DtAggregatedGeometry.h:256
DtMaterial class declaration.
int myLastVertex
Definition: DtAggregatedGeometry.h:255
Virtual base class.
Definition: DtVirtualBaseClass.h:22
bool myDownloaded
is the model completely downloaded to the gpu
Definition: DtAggregatedGeometry.h:57
friend DtIndirectGeometryAggregator
Definition: DtAggregatedGeometry.h:182
DtPerGeomInstances myPerGeomInstancesTemplate
Definition: DtAggregatedGeometry.h:62
contains the information which indirect needs for all geometry found by the geometry aggregator after...
Definition: DtAggregatedGeometry.h:99
#define DT_DLL_VRVOSG
Definition: vrvOsg.h:23
DtIndirectAggregateHelper myAggregateHelper
Definition: DtAggregatedGeometry.h:247
boost::mutex & copyDataMutex()
access to copy data mutex
Definition: DtAggregatedGeometry.h:128
contains the geometry data which DtAggregatedGeometry needs to copy into cpu and then gpu data ...
Definition: DtAggregatedGeometry.h:70
creator for DtCoreGlBuffer
Definition: DtCoreGlBuffer.h:58
DtIndirectGeometryTexturesRefPtr myTextureForThisGeometry
Definition: DtAggregatedGeometry.h:74
int myModelID
Definition: DtAggregatedGeometry.h:53
DtIndirectLodManager::DequeIndirectLodInfoArray myLodStacks
Definition: DtAggregatedGeometry.h:65
std::vector< DtPerGeomInstance > DtPerGeomInstances
Definition: DtGeometrySpecification.h:41
osg::Matrix myMatrix
Definition: DtAggregatedGeometry.h:75
DtGeometrySpecification class declaration.
helper class to the DtIndirectGeometryAggregator.
Definition: DtIndirectAggregateHelper.h:35
DtGlBuffer * myColorBuffer
Definition: DtAggregatedGeometry.h:238
std::vector< DequeIndirectLodInfos > DequeIndirectLodInfoArray
Definition: DtIndirectLodManager.h:97
int myLastVertex
last vertex in this model used for offset calculation
Definition: DtAggregatedGeometry.h:55
friend DtAggregatedGeometryCopyDataAsync
Definition: DtAggregatedGeometry.h:181
OsgTexturesArray myTextures
Definition: DtAggregatedGeometry.h:61
Contains the DtIndirectAggregateHelper class declaration.
DtAggregateModelInfo * myModelInfo
Definition: DtAggregatedGeometry.h:72
std::vector< DtIndirectGeometryTexturesRefPtr > OsgTexturesArray
Definition: DtIndirectGeometryTextures.h:125
DtGlBuffer * myIndexBuffer
Definition: DtAggregatedGeometry.h:241
DtGlBuffer * myUVBuffer
Definition: DtAggregatedGeometry.h:240
DtGlBuffer * myVertexAndAttributesBuffer
Definition: DtAggregatedGeometry.h:237
std::vector< int > myScratchIndices
Definition: DtAggregatedGeometry.h:246
std::map< int, DtAggregateModelInfo * > MapModelsToModelInfo
Definition: DtAggregatedGeometry.h:243
Contains makVrv::DtVirtualBaseClass class.
std::vector< DtMaterial > DtIndirectMaterialVector
Each model type can have a number of geometries, each with an own material.
Definition: DtMaterial.h:81
osg::ref_ptr< osg::Geometry > myGeomToProcess
Definition: DtAggregatedGeometry.h:73
DtGeometrySpecVector myGeometrySpecifications
Definition: DtAggregatedGeometry.h:59
contains the Per Model info which DtAggregatedGeometry needs It is owned by the Indirect geometry reg...
Definition: DtAggregatedGeometry.h:47
std::string myModelName
Definition: DtAggregatedGeometry.h:52
friend DtIndirectGeometryRegistrar
need lots of access to internal functions, these are effectively a tightly coupled system probably sh...
Definition: DtAggregatedGeometry.h:180
std::vector< DequeNodeSwitchInfoPairs > DequeNodeSwitchInfoPairsArray
Definition: DtIndirectSwitchManager.h:73
boost::mutex myCopyDataMutex
Definition: DtAggregatedGeometry.h:259
osg::ref_ptr< osg::Geometry > myAggregatedGeometry
Definition: DtAggregatedGeometry.h:249
DtDe & myDe
Create a DtAggregatedGeometry.
Definition: DtAggregatedGeometry.h:306
Contains makVrv::DtIndirectSwitchManager class.
tbb::atomic< int > myIsCopyingData
Definition: DtAggregatedGeometry.h:258
A generic OpenGL buffer.
Definition: DtGlBuffer.h:25
DtGlBuffer * myNormalBuffer
Definition: DtAggregatedGeometry.h:239
std::vector< int > myEnabledVertexAttribArrays
Definition: DtAggregatedGeometry.h:244
unsigned int GLenum
Definition: DtGlTextureBufferObject.h:18
Creates another thread to compress and mipmap data.
Definition: DtAggregatedGeometry.h:80
DtIndirectMaterialVector myMaterials
Definition: DtAggregatedGeometry.h:60
DtDe * myDtDe
reference to De
Definition: DtAggregatedGeometry.h:265
Contains makVrv::DtIndirectLodManager class.
boost::mutex myMutableMapModelsToModelInfoMutex
mutex needs to be used in const functions so must be mutable.
Definition: DtAggregatedGeometry.h:262
Contains DLL export macros.
tbb::atomic< int > myCancelTask
Definition: DtAggregatedGeometry.h:267
std::vector< DtGeometrySpecification > DtGeometrySpecVector
Each model type can have a number of geometries.
Definition: DtGeometrySpecification.h:94
The DtDe is the core component of any VR-Vantage application.
Definition: DtDe.h:69
DtAggregatedGeometryCopyDataAsync(DtAggregatedGeometry *geometry)
Definition: DtAggregatedGeometry.h:83
voidpf uLong offset
Definition: ioapi.h:42
Contains the DtIndirectGeometryTextures class declaration.
DtAggregateModelInfo()
Definition: DtAggregatedGeometry.h:50
MapModelsToModelInfo myMapModelsToModelInfo
Definition: DtAggregatedGeometry.h:245
DtAggregatedGeometry * myGeometry
Definition: DtAggregatedGeometry.h:92
int isCopyingData()
access to copy data atomic
Definition: DtAggregatedGeometry.h:131
virtual tbb::task * execute()