VR-Forces 4.10 Class Documentation
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
DtIndirectTextureProcessor.h
Go to the documentation of this file.
1 /******************************************************************************
2 ** Copyright (c) 2020 VT-MAK Technologies, Inc.
3 ** All rights reserved.
4 ******************************************************************************/
5 
9 
10 #pragma once
11 #include <vrvOsg/vrvOsg.h>
12 
15 #include <vrvOsg/DtMeifConverter.h>
16 
18 
19 #include <tbb/atomic.h>
20 
21 #include <boost/thread/condition_variable.hpp>
22 
23 #include <string>
24 
25 namespace makVrv
26 {
27  class DtOsgCullVisitor;
28  class DtOsgRenderer;
29  class DtIndirectTextureResidencyManager;
30  class DtWindow;
32 
34 
36  template <>
37  inline const char* creatorTypeName<DtIndirectTextureProcessor>(void) { return "DtIndirectTextureProcessorCreator"; }
38 
40  class DT_DLL_VRVOSG DtIndirectTextureProcessor : public osg::Referenced
41  {
42  public:
43  // Inner class for creating a job that runs in the main thread.
44  class LoadingJob : public osg::Operation
45  {
46  public:
49  virtual ~LoadingJob();
50 
52  virtual void operator () (osg::Object * sv);
53 
55  virtual void release();
56 
57  protected:
59  };
60 
61 
64 
66  virtual ~DtIndirectTextureProcessor();
67 
68  protected:
69 
72 
73  private:
75  DtIndirectTextureProcessor() = delete;
80 
81  public:
82 
84  virtual void launchTextureLoadsIfNecessary(DtOsgRenderer* renderer);
85 
87  virtual void ts_addTexturesToLoad(int beforeTextureIndex, int afterTextureIndex, OsgTexturesArray& textures);
88 
90  virtual void ts_addTextureToLoad(osg::Texture* texture);
91 
93  virtual unsigned int streamTexturesToGpu(const osg::RenderInfo& renderInfo);
94 
96  virtual unsigned int texturesUpdatedFrameNum() const;
97 
99  virtual int numTexturesRemaining() const;
100 
102  virtual void releaseGLObjects(osg::State* state) const;
103 
105  virtual bool ts_setCompressionDisabledHint(osg::Image* image, bool val) const;
106 
108  virtual bool ts_compressionDisabledHint(osg::Image* image) const;
109 
111  virtual void stopWork();
112 
115  virtual int numTexturesToLoad() const;
116 
119  virtual int numTexturesLoading() const;
120 
122  virtual bool texureFailed(osg::Texture* texture) const;
123 
125  virtual bool inJobQueue() const;
126 
128  virtual boost::condition_variable& waitCondition();
129 
132  virtual bool inTextureToGCMap(const osg::GraphicsContext* graphicsContext, osg::Texture::TextureObject* textureObject) const;
133 
135  virtual void makeTexturesResidentIfNeeded(const osg::RenderInfo& renderInfo) const;
136 
138  virtual void setTextureLoadTimeSlicePeriod(float period);
145  virtual float textureLoadTimeSlicePeriod(void) const;
147 
148  protected:
149 
150  // internal
152  virtual void addTexturesToLoad(const DtIndirectGeometryTextures* osgGeometryTextures);
153 
155  virtual void addTextureToLoad(osg::Texture* texture);
156 
158  virtual osg::Operation * createJob();
159 
162  virtual void printStats(void) const;
163  protected:
164 
165  typedef std::set<osg::ref_ptr<osg::Texture> > SetTextures;
166 
171 
174 
175  tbb::atomic<bool> myInJobQueue;
176 
177  mutable unsigned int myTexturesUpdatedFrameNum;
178  unsigned int myLastFrameNumber;
182  boost::condition_variable myWaitCondition;
183 
186 
188  };
189 
190 
191 }
Diagonal crossing liens.
Definition: DtTacticalGraphicUtilities.h:93
The DtOsgRenderer is the component responsible for rendering 3D images onto the screen via OpenSceneG...
Definition: DtOsgRenderer.h:90
DtMeifConverter myImageCompressor
Definition: DtIndirectTextureProcessor.h:179
OpenThreads::Mutex myWorkMutex
Definition: DtIndirectTextureProcessor.h:181
#define DT_DLL_VRVOSG
Definition: vrvOsg.h:23
Class responsible for converting images into MAK encrypted image files.
Definition: DtMeifConverter.h:25
unsigned int myTexturesUpdatedFrameNum
Definition: DtIndirectTextureProcessor.h:177
Definition: featureContext.h:37
DtVirtualBaseClassCreator< DtIndirectTextureProcessor > DtIndirectTextureProcessorCreator
Definition: DtIndirectTextureProcessor.h:31
Definition: DtIndirectTextureProcessor.h:44
Manager class that handles texture objects and texture residency, as contexts get created and destroy...
Definition: DtIndirectTextureResidencyManager.h:48
SetTextures myMutableTexturesToLoad
Definition: DtIndirectTextureProcessor.h:167
float myTextureLoadTimeSlicePeriod
time slice period to load textures
Definition: DtIndirectTextureProcessor.h:173
tbb::atomic< bool > myInJobQueue
Definition: DtIndirectTextureProcessor.h:175
const char * creatorTypeName< DtIndirectTextureProcessor >(void)
template specialization for the creator (pass the class being created to the creatorTypeName template...
Definition: DtIndirectTextureProcessor.h:37
Variadic templated creator class for defining a DtVirtualBaseClass creator that is automatically regi...
Definition: DtVirtualBaseClassCreator.h:22
bool myStopWork
Definition: DtIndirectTextureProcessor.h:180
std::vector< DtIndirectGeometryTexturesRefPtr > OsgTexturesArray
Definition: DtIndirectGeometryTextures.h:138
IMGUI_API void Image(ImTextureID user_texture_id, const ImVec2 &size, const ImVec2 &uv0=ImVec2(0, 0), const ImVec2 &uv1=ImVec2(1, 1), const ImVec4 &tint_col=ImVec4(1, 1, 1, 1), const ImVec4 &border_col=ImVec4(0, 0, 0, 0))
class to hold osg Textures (diffuse map texture + effect textures) basically just a list of osg textu...
Definition: DtIndirectGeometryTextures.h:26
DtIndirectTextureResidencyManager * myTextureResidencyManager
handle residency, textures as contexts get created/destroyed
Definition: DtIndirectTextureProcessor.h:185
std::set< osg::ref_ptr< osg::Texture > > SetTextures
Definition: DtIndirectTextureProcessor.h:165
osg::ref_ptr< DtIndirectTextureProcessor > myTextureProcessor
Definition: DtIndirectTextureProcessor.h:58
OpenThreads::Mutex Mutex
Definition: DtOsgThreadingUtils.h:12
Definition: DtIndirectTextureProcessor.h:40
boost::condition_variable myWaitCondition
Definition: DtIndirectTextureProcessor.h:182
Contains makVrv::DtMeifConverter class.
SetTextures myMutableTexturesLoaded
Definition: DtIndirectTextureProcessor.h:169
SetTextures myMutableTexturesLoading
Definition: DtIndirectTextureProcessor.h:168
SetTextures myMutableTexturesFailed
Definition: DtIndirectTextureProcessor.h:170
Contains DLL export macros.
The DtDe is the core component of any VR-Vantage application.
Definition: DtDe.h:69
DtDe & myDe
Definition: DtIndirectTextureProcessor.h:187
Contains the DtIndirectGeometryTextures class declaration.
friend DtIndirectTextureProcessorCreator
The creator class needs to be a friend so it can create this class.
Definition: DtIndirectTextureProcessor.h:63
unsigned int myLastFrameNumber
Definition: DtIndirectTextureProcessor.h:178

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)