27 #include <osg/Geometry>
28 #include <osg/Texture>
29 #include <osg/Referenced>
31 #include <tbb/concurrent_queue.h>
37 #include <unordered_set>
39 #include <shared_mutex>
41 #define INDIRECTGEOMETRYREGISTRAR_DEBUG 0
55 class DtIndirectGeometryRegistrar;
57 class DtIndirectTextureCollectionPolicy;
58 class DtIndirectModelInfoContainer;
60 class DtOsgShaderManager;
62 class DtIndirectModelInfo;
120 ,
const std::string& textureCollectionPolicyName
141 virtual void setName(
const std::string& name);
152 virtual void processRegisterModelQueue();
155 virtual void processRegisterModelQueueAsync();
158 virtual bool beingProcessed();
161 virtual bool hasTasksEnqueued();
164 virtual unsigned int updateBuildNumber();
167 virtual unsigned int numModelsInQueue()
const;
170 virtual int numModels(
void)
const;
173 virtual int modelId(
int index)
const;
176 virtual int numGeometriesForModelID(
int modelId)
const;
179 virtual bool isModelUploaded(
int modelId)
const;
202 virtual GLenum indicesType(
void)
const;
207 virtual void releaseGLObjects(osg::State* state)
const;
211 virtual bool registeredModelsDirty()
const;
214 virtual void setPagerHandlesModelLoading(
bool value);
215 virtual bool pagerHandlesModelLoading();
218 virtual int numTexCoordArrays(
void)
const;
221 virtual std::shared_timed_mutex& addingModelsMutex();
224 virtual void findModelInfosThatUseThisImageFileForItsTextures(std::set<DtIndirectModelInfo*>& modelInfos,
const std::string& absoluteFileName)
const;
QueueRegisterModelOps myQueueRegisterModelOps
Definition: DtIndirectGeometryRegistrar.h:239
std::shared_timed_mutex myAddingModelsMutex
Definition: DtIndirectGeometryRegistrar.h:249
#define DT_DLL_VRVOSG
Definition: vrvOsg.h:23
Indirect geometry can have multiple models and their corresponding ids registered in it...
Definition: DtIndirectGeometryRegistrar.h:111
Class that loads and contains a bunch of models registered with the registrar. It is owned by the Ind...
Definition: DtIndirectModelInfoContainer.h:88
DtVirtualBaseClassCreator< DtIndirectGeometryRegistrar, const std::string &, const DtIndirectLimitTextureStrategy & > DtIndirectGeometryRegistrarCreator
creator
Definition: DtIndirectGeometryRegistrar.h:68
Abstract class to look in the stateset and collect textures specified via its template The effect tex...
Definition: DtIndirectTextureCollectionPolicy.h:43
The information required to register a model with the registrar.
Definition: DtIndirectModelRegistrationInfo.h:24
std::unordered_map< std::string, std::set< int > > myImagesToModelsThatAreUsingIt
map of absolute image file names to models that use it
Definition: DtIndirectGeometryRegistrar.h:261
Indirect rendering works because we are able to combine multiple geometries into a single 'aggregated...
Definition: DtIndirectGeometryAggregator.h:90
Variadic templated creator class for defining a DtVirtualBaseClass creator that is automatically regi...
Definition: DtVirtualBaseClassCreator.h:23
Contains the DtIndirectEffectTexturesTemplate class declaration.
DtIndirectEffectTexturesTemplate myEffectTexturesState
Definition: DtIndirectGeometryRegistrar.h:234
Simple state/glmodes class for handling setting up modes It can now handle generic state modes and at...
Definition: DtIndirectGeometryStateManager.h:31
DtIndirectGeometryAggregator * myAggregator
Definition: DtIndirectGeometryRegistrar.h:246
Contains the DtIndirectGeometryStateManager class declaration.
tbb::concurrent_queue< DtIndirectModelRegistrationInfo > QueueRegisterModelOps
Definition: DtIndirectGeometryRegistrar.h:238
std::atomic< bool > myBeingProcessed
Definition: DtIndirectGeometryRegistrar.h:247
DtDe & myDe
DtDe reference.
Definition: DtIndirectGeometryRegistrar.h:256
bool myPagerHandlesModelLoading
Definition: DtIndirectGeometryRegistrar.h:236
bool myRegisteredModelsDirty
Definition: DtIndirectGeometryRegistrar.h:243
std::atomic< int > myNumberOfTasksEnqueued
Definition: DtIndirectGeometryRegistrar.h:248
The indirect system uses this in conjunction with the system wide limits (for entity/terrain) to clam...
Definition: DtIndirectLimitTextureStrategy.h:65
Contains makVrv::DtIndirectSwitchManager class.
DtOsgShaderManager injects custom shaders into the scenes, and keeps their uniform parameters set to ...
Definition: DtOsgShaderManager.h:41
unsigned int GLenum
Definition: DtGlTextureBufferObject.h:19
unsigned int myCurrentBuildNumber
Definition: DtIndirectGeometryRegistrar.h:244
Contains makVrv::DtIndirectLodManager class.
DtIndirectGeometryStateManager myMutableStateContainer
mutable since it is needed to be used in drawImplementaion for the indirect geometry not private so i...
Definition: DtIndirectGeometryRegistrar.h:253
Contains DLL export macros.
Contains the DtIndirectModelRegistrationInfo class declaration.
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:76
Contains the DtIndirectGeometryAggregator class declaration.
DtIndirectTextureCollectionPolicy * myTextureCollectionPolicy
Definition: DtIndirectGeometryRegistrar.h:241
DtOsgShaderManager & myShaderManager
Definition: DtIndirectGeometryRegistrar.h:258
friend DtIndirectGeometryRegistrarCreator
friend class creator so that DtIndirectGeometryRegistrar can only be created by the creator ...
Definition: DtIndirectGeometryRegistrar.h:115
Class that allows you to abstractly register effect texture types the effect texture types are client...
Definition: DtIndirectEffectTexturesTemplate.h:40
DtIndirectModelInfoContainer * myModelInfoContainer
Definition: DtIndirectGeometryRegistrar.h:232
Contains the per Model info which the indirect module needs These objects are owned by the Indirect g...
Definition: DtIndirectModelInfo.h:67
const char * creatorTypeName< DtIndirectGeometryRegistrar >(void)
template specialization for the creator (pass the class being created to the creatorTypeName template...
Definition: DtIndirectGeometryRegistrar.h:75