23 #include <osg/Geometry>
24 #include <osg/Texture>
25 #include <osg/Referenced>
27 #include <tbb/concurrent_queue.h>
29 #include <boost/signals.hpp>
34 #define INDIRECTGEOMETRYREGISTRAR_DEBUG 0
44 class DtIndirectGeometryRegistrar;
46 class DtIndirectTextureCollectionPolicy;
48 class DtAggregatedGeometry;
102 virtual void queueUpRegisterModelLod(
int modelId,
int lodId,
const DtLodInfo& lodInfo, osg::ref_ptr<const osg::Node> model,
const std::string& modelFileName);
105 virtual void rebuildIfNeeded(
unsigned int contextID);
108 virtual int numModels(
void)
const;
111 virtual int modelId(
int index)
const;
117 virtual bool hasVectorGeometryLocations(
int modelId)
const;
129 virtual void bindBuffers();
131 virtual void unbindBuffers();
140 virtual void releaseGLObjects(osg::State* state)
const;
143 static osgEarth::VirtualProgram * findCachedVirtualProgram(
const std::string & vp_hash);
144 static void cacheVirtualProgram(
const std::string & vp_hash, osgEarth::VirtualProgram * virtualProgram);
165 virtual void registerModelLod(
int modelId,
int lodId,
const DtLodInfo& lodInfo, osg::ref_ptr<const osg::Node> model,
const std::string& modelFileName,
VectorOsgTextures& newTexturesFound);
168 virtual void deleteGpuData()
const;
172 virtual void bindVAO();
173 virtual void unbindVAO();
179 virtual bool allTexturesReady(
const int modelId,
unsigned int contextID)
const;
181 #if INDIRECTGEOMETRYREGISTRAR_DEBUG
183 virtual void testDrawUsingDrawElements();
248 static const std::string& theClassName();