VR-Forces Developer's Guide
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
DtIndirectModelInfoContainer.h
Go to the documentation of this file.
1 /******************************************************************************
2 ** Copyright (c) 2022 VT-MAK Technologies, Inc.
3 ** All rights reserved.
4 ******************************************************************************/
5 
11 
12 #pragma once
13 
14 #include <vrvOsg/vrvOsg.h>
15 
22 
24 
25 #define CPU_SIDE_COMPILATION 1
26 #include <../data/shaders/indirect/GeometrySpecification.h>
27 
30 
32 
33 #include <osg/Geometry>
34 
35 #include <tbb/concurrent_queue.h>
36 #include <tbb/task.h>
37 #include <boost/thread.hpp>
38 
39 #include <list>
40 
41 namespace makVrv
42 {
43  class DtGlBuffer;
44  class DtCoreGlBufferCreator;
45  class DtIndirectModelInfoContainer;
46  class DtIndirectGeometryAggregator;
47  class DtIndirectGeometryRegistrar;
48  class DtIndirectAggregateHelper;
49  class DtIndirectModelSubGeometry;
50 
51  class DtIndirectModelInfo;
52 
54  {
57  osg::Matrix myMatrix;
58  };
59 
61  {
62  DtIndirectModelInfo* myModelInfo = nullptr;
63  std::vector<DtCopyModelSubGeomDataStructure> mySubGeomsToCopy;
64  };
65 
66 
69 
72 
74  template <>
75  inline const char* creatorTypeName<DtIndirectModelInfoContainer>(void) { return "DtIndirectModelInfoContainerCreator"; }
76 
78  {
80  bool myCreated = false;
81  };
82 
87  {
88  public:
91 
94 
95  protected:
98  private:
100  DtIndirectModelInfoContainer() = delete;
101 
104 
106  DtIndirectModelInfoContainer &operator=(const DtIndirectModelInfoContainer &other) = delete;
107 
108  public:
110  virtual void releaseGLObjects(osg::State* state) const;
111 
113  virtual void addModelGeometryToLoad(const DtCopyModelDataStructure & cds);
114 
116  virtual bool hasDataToAsyncLoad() const;
117 
119  virtual bool hasDataToCopy() const;
120 
122  virtual int isCopyingData() const;
123 
126  virtual bool isNotCopyingData();
127 
129  virtual int numModels(void) const;
130 
132  virtual int modelId(int index) const;
133 
135  virtual DtIndirectModelInfoCreationResult getOrCreateModelInfoFor(int modelId);
136 
138  virtual DtIndirectModelInfo* findModelInfoFor(int modelId);
139 
140 
142  virtual GLenum indicesType(void) const;
143 
145  virtual void copyDataQueue();
146 
147 
149  virtual int numTexCoordArrays(void) const;
150  protected:
152  virtual void copyData(DtCopyModelDataStructure & data);
153 
154  protected:
155 
156  typedef std::map<int, DtIndirectModelInfo *> MapModelsToModelInfo;
158 
159  // not sure if I need a mutex the way I'm using this
160  tbb::concurrent_queue<DtCopyModelDataStructure> myModelDataToCopy;
161 
162  tbb::atomic<int> myIsCopyingData;
163  boost::mutex myCopyDataMutex;
164 
167 
168  mutable boost::mutex myMutableMaxCoordsBindlessMutex;
170 
171  tbb::atomic<int> myCancelTask;
172 
175  };
176 
177 }
int myMaxCoordsBindless
Definition: DtIndirectModelInfoContainer.h:169
Contains makVrv::DtIndirectUvOffsetManager class.
Definition: DtIndirectModelInfoContainer.h:53
Contains makVrv::DtLightPointNode class.
DtMaterial class declaration.
#define DT_DLL_VRVOSG
Definition: vrvOsg.h:23
friend DtIndirectModelInfoContainerCreator
only creator can create
Definition: DtIndirectModelInfoContainer.h:90
std::vector< DtCopyModelSubGeomDataStructure > mySubGeomsToCopy
Definition: DtIndirectModelInfoContainer.h:63
DtDe & myDe
reference to De
Definition: DtIndirectModelInfoContainer.h:174
tbb::atomic< int > myIsCopyingData
Definition: DtIndirectModelInfoContainer.h:162
Definition: DtIndirectModelInfoContainer.h:60
DtIndirectModelInfo * myModelInfo
Definition: DtIndirectModelInfoContainer.h:79
bool myCreated
Definition: DtIndirectModelInfoContainer.h:80
Class that loads and contains a bunch of models registered with the registrar. It is owned by the Ind...
Definition: DtIndirectModelInfoContainer.h:86
osg::Matrix myMatrix
Definition: DtIndirectModelInfoContainer.h:57
boost::mutex myCopyDataMutex
Definition: DtIndirectModelInfoContainer.h:163
Variadic templated creator class for defining a DtVirtualBaseClass creator that is automatically regi...
Definition: DtVirtualBaseClassCreator.h:22
boost::mutex myMutableMaxCoordsBindlessMutex
Definition: DtIndirectModelInfoContainer.h:168
Contains makVrv::DtIndirectDofManager class.
std::map< int, DtIndirectModelInfo * > MapModelsToModelInfo
Definition: DtIndirectModelInfoContainer.h:156
This class represents the list of DtIndirectTexturePrototypes belonging to a particular sub-geometry...
Definition: DtIndirectGeometryTextures.h:38
const char * creatorTypeName< DtIndirectModelInfoContainer >(void)
template specialization for the creator (pass the class being created to the creatorTypeName template...
Definition: DtIndirectModelInfoContainer.h:75
DtVirtualBaseClassCreator< DtIndirectModelInfoContainer > DtIndirectModelInfoContainerCreator
creator
Definition: DtIndirectModelInfoContainer.h:68
boost::mutex myMutableMapModelsToModelInfoMutex
mutex needs to be used in const functions so must be mutable.
Definition: DtIndirectModelInfoContainer.h:166
Contains makVrv::DtIndirectSwitchManager class.
unsigned int GLenum
Definition: DtGlTextureBufferObject.h:19
DtIndirectGeometryTextures myTextureForThisGeometry
Definition: DtIndirectModelInfoContainer.h:56
Contains makVrv::DtIndirectLodManager class.
tbb::concurrent_queue< DtCopyModelDataStructure > myModelDataToCopy
Definition: DtIndirectModelInfoContainer.h:160
Contains DLL export macros.
Definition: DtIndirectModelInfoContainer.h:77
tbb::atomic< int > myCancelTask
Definition: DtIndirectModelInfoContainer.h:171
The DtDe is the core component of any VR-Vantage application. It owns a DtRenderer, DtDeCommunicator, as well as a DtDisplay and other things.
Definition: DtDe.h:72
Contains the DtIndirectGeometryTextures class declaration.
DtPerGeomInstance class declaration.
Contains the per Model info which the indirect module needs It is owned by the Indirect geometry regi...
Definition: DtIndirectModelInfo.h:55
osg::ref_ptr< const osg::Geometry > mySrcOsgGeometryForSubModel
Definition: DtIndirectModelInfoContainer.h:55
MapModelsToModelInfo myMapModelsToModelInfo
Definition: DtIndirectModelInfoContainer.h:157

Document ID: Generated on Tue Sep 24 19:28:17 EDT 2024 from SVN revision 269799
Copyright © 2005-2024 MAK Technologies. All Rights Reserved (www.mak.com)