VR-Forces Developer's Guide
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
List of all members | Public Member Functions | Public Attributes | Protected Member Functions | Protected Attributes
makVrv::DtIndirectModelInfo Class Reference

Contains the per Model info which the indirect module needs It is owned by the Indirect geometry registrar.

Public Member Functions

 DtIndirectModelInfo (DtDe &de)
 
virtual ~DtIndirectModelInfo ()
 
 DtIndirectModelInfo (const DtIndirectModelInfo &)=delete
 
DtIndirectModelInfooperator= (const DtIndirectModelInfo &)=delete
 
virtual void unloadBuffers ()
 
virtual bool buffersLoaded () const
 
virtual void texturesSet (std::map< const DtIndirectTexturePrototype *, int > &texturesSet) const
 
virtual void addUser (const DtGpuCulling *user)
 
virtual void removeUser (const DtGpuCulling *user)
 
virtual void computeMaxTextureResolution (const DtIndirectLimitTextureStrategy &limitStrategy)
 
virtual void updateBuffersIfNecessary (bool &reloaded)
 
virtual const BindlessPtrNV & vertexBufferBindless (int index) const
 
virtual const BindlessPtrNV & additionalBufferBindless (int index) const
 
virtual const BindlessPtrNV & indexBufferBindless (int index) const
 
virtual int numSubGeometries () const
 
virtual int maxCoords (int index) const
 
virtual int numVertices (int index) const
 
virtual int numIndices (int index) const
 
virtual void addSubGeometry (DtIndirectModelSubGeometry *modelSubGeometry)
 
virtual
DtIndirectModelSubGeometry
subGeometry (int index)
 
virtual void promoteDataFromSubGeosToMe (void)
 

Public Attributes

std::string myModelName
 
std::string myModelDefName
 
int myModelID
 
bool myDownloaded
 
DtGeometrySpecVector myGeometrySpecifications
 
DtIndirectMaterialVector myMaterials
 
std::vector
< DtIndirectGeometryTextures
myTextures
 
DtPerGeomInstances myPerGeomInstancesTemplate
 
DtIndirectUvOffsetManager::AnnotationToUvOffsetMap myAnnotationToUvOffsetIdMap
 
DtIndirectUvOffsetManager::ScrollableUvOffsetIdsAndMultipliers myScrollableUvOffsetIdsAndMultipliers
 
DtIndirectSwitchManager::DequeNodeSwitchInfoPairsArray mySwitchPaths
 
DtIndirectLodManager::DequeIndirectLodInfoArray myLodStacks
 
DtIndirectDofManager::DequeNodeDofInfoPairs myDofPaths
 
int myNumLightSources
 
std::unordered_set< const
DtGpuCulling * > 
myUsers
 
boost::mutex myUserMutex
 
DtDemyDe
 
DtVector2< intmyMaxTextureResolutionInXandY
 
DtGlBuffermyVertexAndAttributesBuffer = nullptr
 
DtGlBuffermyIndexBuffer = nullptr
 
bool myBuffersUpdated = false
 
DtGlDeleteObjectManagermyGlDeleteObjectManager
 

Protected Member Functions

virtual bool isDefaultTexture (const DtIndirectTexturePrototype *texture) const
 
virtual void unload ()
 
virtual bool isLoaded () const
 
virtual void releaseGLObjects (osg::State *state)
 
virtual void createIndirectBuffers (void)
 
virtual void deleteIndirectBuffers (void)
 

Protected Attributes

std::vector< uint8_t > myVertexBufferData
 
std::vector< uint8_t > myIndexBufferData
 
std::vector
< DtIndirectModelSubGeoProps
mySubGeoPropsVec
 
std::vector
< DtIndirectSubGeoBindlessBuffers
mySubGeoBindlessBuffersVec
 
std::vector
< DtIndirectModelSubGeometry * > 
myVectorModelSubGeometries
 

Constructor & Destructor Documentation

makVrv::DtIndirectModelInfo::DtIndirectModelInfo ( DtDe de)

constructor

virtual makVrv::DtIndirectModelInfo::~DtIndirectModelInfo ( )
virtual

destructor

makVrv::DtIndirectModelInfo::DtIndirectModelInfo ( const DtIndirectModelInfo )
delete

not allowed

Member Function Documentation

DtIndirectModelInfo& makVrv::DtIndirectModelInfo::operator= ( const DtIndirectModelInfo )
delete

not allowed

virtual void makVrv::DtIndirectModelInfo::unloadBuffers ( )
virtual

unload the model information specifically, make gl buffers non-resident and add them to the delete manager

virtual bool makVrv::DtIndirectModelInfo::buffersLoaded ( ) const
virtual

are buffers loaded?

virtual void makVrv::DtIndirectModelInfo::texturesSet ( std::map< const DtIndirectTexturePrototype *, int > &  texturesSet) const
virtual

get the set of textures (diffuse + effect textures) that this model refers to

virtual void makVrv::DtIndirectModelInfo::addUser ( const DtGpuCulling user)
virtual

gpu culling is the only 'user' of the model info since it uses the bindless address of the buffers and textures of the model multiple gpu cullings (and hence indirect geometries) can refer to the same model info

virtual void makVrv::DtIndirectModelInfo::removeUser ( const DtGpuCulling user)
virtual

gpu culling is the only 'user' of the model info since it uses the bindless address of the buffers and textures of the model multiple gpu cullings (and hence indirect geometries) can refer to the same model info

virtual void makVrv::DtIndirectModelInfo::computeMaxTextureResolution ( const DtIndirectLimitTextureStrategy limitStrategy)
virtual

update the max texture resolution in x and y for all textures of a given model should be done when the model is finalized. Also, excludes the excluded textures from the max computation, per the specified strategy

virtual void makVrv::DtIndirectModelInfo::updateBuffersIfNecessary ( bool reloaded)
virtual

update from our shadow copy (myVertexBufferData, myIndexBufferData) also update the bindless pointers

virtual const BindlessPtrNV& makVrv::DtIndirectModelInfo::vertexBufferBindless ( int  index) const
virtual

bindless vertex buffer

virtual const BindlessPtrNV& makVrv::DtIndirectModelInfo::additionalBufferBindless ( int  index) const
virtual

bindless additional attributes buffer

virtual const BindlessPtrNV& makVrv::DtIndirectModelInfo::indexBufferBindless ( int  index) const
virtual

bindless index buffer

virtual int makVrv::DtIndirectModelInfo::numSubGeometries ( ) const
virtual

number of sub goes

virtual int makVrv::DtIndirectModelInfo::maxCoords ( int  index) const
virtual

The max texture coordinates unit/number of the texture coordinate sets.

virtual int makVrv::DtIndirectModelInfo::numVertices ( int  index) const
virtual

The num of vertices.

virtual int makVrv::DtIndirectModelInfo::numIndices ( int  index) const
virtual

The num of indices.

virtual void makVrv::DtIndirectModelInfo::addSubGeometry ( DtIndirectModelSubGeometry modelSubGeometry)
virtual

Don't use directly Added only by aggregator. This will transfer ownership of the sub geo/ (ie, the model info will handle the lifetime/deletion of this subgeo)

virtual DtIndirectModelSubGeometry* makVrv::DtIndirectModelInfo::subGeometry ( int  index)
virtual

Don't use directly. Used only by DtIndirectModelInfoContainer::copyData to copy data: sub geo <- osg.

virtual void makVrv::DtIndirectModelInfo::promoteDataFromSubGeosToMe ( void  )
virtual

Don't use directly. Used only by DtIndirectModelInfoContainer. Promote data from sub geos into me. The sub geos can then be deleted.

virtual bool makVrv::DtIndirectModelInfo::isDefaultTexture ( const DtIndirectTexturePrototype texture) const
protectedvirtual

whether a texture is the default white texture

virtual void makVrv::DtIndirectModelInfo::unload ( )
protectedvirtual

unload the model info specifically, for bindless make gl buffers non-resident and add them to the delete manager

virtual bool makVrv::DtIndirectModelInfo::isLoaded ( ) const
protectedvirtual

is loaded?

virtual void makVrv::DtIndirectModelInfo::releaseGLObjects ( osg::State *  state)
protectedvirtual

release gl objects

virtual void makVrv::DtIndirectModelInfo::createIndirectBuffers ( void  )
protectedvirtual

internal. create the indirect buffers

virtual void makVrv::DtIndirectModelInfo::deleteIndirectBuffers ( void  )
protectedvirtual

internal. delete the indirect buffers

Member Data Documentation

std::string makVrv::DtIndirectModelInfo::myModelName

the model name

std::string makVrv::DtIndirectModelInfo::myModelDefName
int makVrv::DtIndirectModelInfo::myModelID

the model id

bool makVrv::DtIndirectModelInfo::myDownloaded

is the model completely downloaded to the gpu

DtGeometrySpecVector makVrv::DtIndirectModelInfo::myGeometrySpecifications

the vector of all geometry specs

DtIndirectMaterialVector makVrv::DtIndirectModelInfo::myMaterials

vector of the materials in this model

std::vector<DtIndirectGeometryTextures> makVrv::DtIndirectModelInfo::myTextures

vector of the textures in this model

DtPerGeomInstances makVrv::DtIndirectModelInfo::myPerGeomInstancesTemplate

vector of the per geom instances

DtIndirectUvOffsetManager::AnnotationToUvOffsetMap makVrv::DtIndirectModelInfo::myAnnotationToUvOffsetIdMap

annotation to uv offset map

DtIndirectUvOffsetManager::ScrollableUvOffsetIdsAndMultipliers makVrv::DtIndirectModelInfo::myScrollableUvOffsetIdsAndMultipliers

uv offset ids and multipliers

DtIndirectSwitchManager::DequeNodeSwitchInfoPairsArray makVrv::DtIndirectModelInfo::mySwitchPaths

switch paths

DtIndirectLodManager::DequeIndirectLodInfoArray makVrv::DtIndirectModelInfo::myLodStacks

lod paths

DtIndirectDofManager::DequeNodeDofInfoPairs makVrv::DtIndirectModelInfo::myDofPaths
int makVrv::DtIndirectModelInfo::myNumLightSources

the number of light sources

std::unordered_set<const DtGpuCulling*> makVrv::DtIndirectModelInfo::myUsers
boost::mutex makVrv::DtIndirectModelInfo::myUserMutex
DtDe& makVrv::DtIndirectModelInfo::myDe
DtVector2<int> makVrv::DtIndirectModelInfo::myMaxTextureResolutionInXandY
DtGlBuffer* makVrv::DtIndirectModelInfo::myVertexAndAttributesBuffer = nullptr
DtGlBuffer* makVrv::DtIndirectModelInfo::myIndexBuffer = nullptr
bool makVrv::DtIndirectModelInfo::myBuffersUpdated = false
DtGlDeleteObjectManager& makVrv::DtIndirectModelInfo::myGlDeleteObjectManager
std::vector<uint8_t> makVrv::DtIndirectModelInfo::myVertexBufferData
protected
std::vector<uint8_t> makVrv::DtIndirectModelInfo::myIndexBufferData
protected
std::vector<DtIndirectModelSubGeoProps> makVrv::DtIndirectModelInfo::mySubGeoPropsVec
protected
std::vector<DtIndirectSubGeoBindlessBuffers> makVrv::DtIndirectModelInfo::mySubGeoBindlessBuffersVec
protected
std::vector<DtIndirectModelSubGeometry*> makVrv::DtIndirectModelInfo::myVectorModelSubGeometries
protected

the same size as the spec vector above 1 sub-geometry for each spec


The documentation for this class was generated from the following file:

Document ID: Generated on Wed Mar 27 22:49:11 EDT 2024 from SVN revision 264633
Copyright © 2005-2024 MAK Technologies. All Rights Reserved (www.mak.com)