VR-Forces 4.10 Class Documentation
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
DtIndirectTextureResidencyManager.h
Go to the documentation of this file.
1 /******************************************************************************
2 ** Copyright (c) 2021 VT-MAK Technologies, Inc.
3 ** All rights reserved.
4 ******************************************************************************/
5 
9 
10 #pragma once
11 #include <vrvOsg/vrvOsg.h>
12 
14 
16 
18 
19 #include <osg/Texture>
20 
21 #include <set>
22 #include <unordered_map>
23 
24 namespace osg
25 {
26  class GraphicsContext;
27  class State;
28  class RenderInfo;
29 }
30 
31 namespace makVrv
32 {
33  class DtWindow;
34 
35  // forward declare for the creator below
36  class DtIndirectTextureResidencyManager;
37 
39 
41 
42  template <>
43  inline const char* creatorTypeName<DtIndirectTextureResidencyManager>(void) { return "DtIndirectTextureResidencyManagerCreator"; }
44 
49  {
50  public:
53 
55  protected:
56  // only creator cdan create
58  private:
65  public:
66 
69  virtual bool inTextureToGCMap(const osg::GraphicsContext* graphicsContext, osg::Texture::TextureObject* textureObject) const;
70 
72  virtual void addTextureToGCMapIfNecessary(const osg::RenderInfo& renderInfo, osg::Texture::TextureObject* textureObject) const;
73 
75  virtual void makeTexturesResidentIfNeeded(const osg::RenderInfo& renderInfo) const;
76 
78  virtual void releaseGLObjects(osg::State* state) const;
79 
81  virtual void slot_windowToBeDestroyed(DtWindow* window);
82 
83  protected:
85  virtual void addTextureToGCMap(const osg::GraphicsContext* graphicsContext, osg::Texture::TextureObject* textureObject) const;
86 
88  virtual void collectNewTexturesAcrosssNonSharedContextIds(const osg::GraphicsContext* graphicsContext, osg::Texture::TextureObject* textureObject) const;
89 
91  virtual void makeNewTexturesAcrosssNonSharedContextIdsResident(const osg::GraphicsContext* graphicsContext) const;
92 
93  protected:
94 
95  typedef std::set<unsigned int> SetNonSharedContextIds;
96  typedef std::map<unsigned int, SetNonSharedContextIds> MapContextIdsToNonSharedContextIds;
99 
100  // Set since each object should have 1 copy of each texture
101  typedef std::set<osg::ref_ptr<osg::Texture::TextureObject> > TexturesSet;
102 
103  typedef std::unordered_map<const osg::GraphicsContext*, TexturesSet> MapNonSharedContextIdsToNewTexturesArray;
106 
107  typedef std::map<const osg::GraphicsContext*, TexturesSet> MapGCToTexSet;
110 
113 
116 
119 
121  };
122 }
TexturesSet myMutableAllSeenTextures
Texture ids for all textures that we have seen so far in all contexts.
Definition: DtIndirectTextureResidencyManager.h:112
Manager to delete GLBuffer in the main thread.
Definition: DtGlDeleteObjectManager.h:33
Abstract Base class.
Definition: DtWindow.h:25
DtSignalConnectionManager myConnections
for handling window destroyed event
Definition: DtIndirectTextureResidencyManager.h:118
#define DT_DLL_VRVOSG
Definition: vrvOsg.h:23
std::set< osg::ref_ptr< osg::Texture::TextureObject > > TexturesSet
Definition: DtIndirectTextureResidencyManager.h:101
Manager class that handles texture objects and texture residency, as contexts get created and destroy...
Definition: DtIndirectTextureResidencyManager.h:48
MapGCToTexSet myMutableMapGraphicsContextToTexturesSet
Which textures have we seen in what contexts.
Definition: DtIndirectTextureResidencyManager.h:109
OpenThreads::Mutex myMutableTextureResidencyMutex
Definition: DtIndirectTextureResidencyManager.h:98
DtDe & myDe
Definition: DtIndirectTextureResidencyManager.h:120
Variadic templated creator class for defining a DtVirtualBaseClass creator that is automatically regi...
Definition: DtVirtualBaseClassCreator.h:22
DtVirtualBaseClassCreator< DtIndirectTextureResidencyManager > DtIndirectTextureResidencyManagerCreator
Definition: DtIndirectTextureResidencyManager.h:38
std::map< unsigned int, SetNonSharedContextIds > MapContextIdsToNonSharedContextIds
Definition: DtIndirectTextureResidencyManager.h:96
std::map< const osg::GraphicsContext *, TexturesSet > MapGCToTexSet
Definition: DtIndirectTextureResidencyManager.h:107
MapNonSharedContextIdsToNewTexturesArray myMutableMapNonSharedContextIdsToNewTexturesSet
The next textures that have been seen in this context.
Definition: DtIndirectTextureResidencyManager.h:105
Class to manage disconnection of boost connections on deletion.
Definition: DtSignalConnectionManager.h:20
DtGLDeleteObjectManager & myGlDeleteObjectManager
hold an instance to the delete manager
Definition: DtIndirectTextureResidencyManager.h:115
OpenThreads::Mutex Mutex
Definition: DtOsgThreadingUtils.h:12
const char * creatorTypeName< DtIndirectTextureResidencyManager >(void)
Definition: DtIndirectTextureResidencyManager.h:43
std::set< unsigned int > SetNonSharedContextIds
Definition: DtIndirectTextureResidencyManager.h:95
Base class to provide boost signal/slot management.
Contains DLL export macros.
friend DtIndirectTextureResidencyManagerCreator
only creator can create
Definition: DtIndirectTextureResidencyManager.h:52
The DtDe is the core component of any VR-Vantage application.
Definition: DtDe.h:69
std::unordered_map< const osg::GraphicsContext *, TexturesSet > MapNonSharedContextIdsToNewTexturesArray
Definition: DtIndirectTextureResidencyManager.h:103
MapContextIdsToNonSharedContextIds myMutableMapContextIdsToNonSharedContextIds
Definition: DtIndirectTextureResidencyManager.h:97

Document ID: Generated on Tue Sep 21 17:42:52 EDT 2021 from SVN revision 234861
Copyright © 2005-2021 MAK Technologies. All Rights Reserved (www.mak.com)