VR-Forces 5.0.1 Developer's Guide
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
DtIndirectTextureCollectionPolicy.h
Go to the documentation of this file.
1 /******************************************************************************
2 ** Copyright (c) 2022 VT-MAK Technologies, Inc.
3 ** All rights reserved.
4 ******************************************************************************/
5 
9 
10 #pragma once
11 
12 #include <vrvOsg/vrvOsg.h>
13 
17 
19 
21 
22 #include <osg/Texture>
23 
24 #include <unordered_map>
25 #include <boost/thread.hpp>
26 
27 
28 namespace makVrv
29 {
30  class DtIndirectGeometryTextures;
31 
39  {
40  public:
43 
44 
47  protected:
50  public:
54  virtual void collectTextures(DtIndirectGeometryTextures* texturePointers, const osg::StateSet* stateSet, const std::string &modelName) const = 0;
55 
57  virtual const DtIndirectEffectTexturesTemplate& effectTexturesTemplate(void) const;
58 
67  virtual const std::string& glslTextureDeclarationHashDefine(const DtIndirectEffectTexturesTemplate& effectTexturesState, unsigned int numTexCoords) const = 0;
68  virtual void printHashDefineDetails(const DtIndirectEffectTexturesTemplate& effectTexturesState) const = 0;
70 
72  virtual std::string hashKey(const DtIndirectEffectTexturesTemplate& effectTexturesState, unsigned int textureCoordinateCount) const;
73 
74  protected:
75 
77 
78  mutable boost::mutex myMutex;
79 
80  typedef std::map<std::string, std::string> MapEffectTexturesStateToHashDefines;
81  //Cache for hash defines. It is used by the derived classes so it cannot be private
83 
85  };
86 
87 
90  {
91  public:
94 
97 
98  // pure abstract creation function
99  virtual DtIndirectTextureCollectionPolicy* create(DtDe& de) = 0;
100  };
101 
105  {
106  public:
109 
112 
115  static DtIndirectTextureCollectionPolicyFactory& instance(DtDe& de);
116 
118  static const std::string& theClassName();
119 
121  virtual void registerCreator(const std::string& name, DtIndirectTextureCollectionPolicyCreator* creator);
122 
124  virtual DtIndirectTextureCollectionPolicy* create(const std::string& name) const;
125  protected:
127 
128  typedef std::unordered_map<std::string, DtIndirectTextureCollectionPolicyCreator*> RegistrationMap;
129 
131  };
132 
133 }
Virtual base class. Allows for RTTI and proper virtual destruction. Used by Creators, Factories, Providers, Assemblers and User Interfaces.
Definition: DtVirtualBaseClass.h:19
DtIndirectEffectTexturesTemplate myEffectTexturesTemplate
Definition: DtIndirectTextureCollectionPolicy.h:76
#define DT_DLL_VRVOSG
Definition: vrvOsg.h:23
Abstract class to look in the stateset and collect textures specified via its template The effect tex...
Definition: DtIndirectTextureCollectionPolicy.h:38
Abstract class for creation of a particular texture collection policy.
Definition: DtIndirectTextureCollectionPolicy.h:89
std::map< std::string, std::string > MapEffectTexturesStateToHashDefines
Definition: DtIndirectTextureCollectionPolicy.h:80
RegistrationMap myCreators
Definition: DtIndirectTextureCollectionPolicy.h:130
DtDe & myDe
Definition: DtIndirectTextureCollectionPolicy.h:84
Contains the DtIndirectEffectTexturesTemplate class declaration.
Contains makVrv::DtVirtualBaseClass class.
boost::mutex myMutex
Definition: DtIndirectTextureCollectionPolicy.h:78
class to hold osg Textures (diffuse map texture + effect textures) basically just a list of osg textu...
Definition: DtIndirectGeometryTextures.h:26
Contains VirtualProgram execution priority constants.
Contains the DtIndirectEffectTextureShader class declaration.
DtDe & myDe
Definition: DtIndirectTextureCollectionPolicy.h:126
Factory for creating different collection policies.
Definition: DtIndirectTextureCollectionPolicy.h:104
Contains DLL export macros.
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:70
std::unordered_map< std::string, DtIndirectTextureCollectionPolicyCreator * > RegistrationMap
Definition: DtIndirectTextureCollectionPolicy.h:128
Class that allows you to abstractly register effect texture types the effect texture types are client...
Definition: DtIndirectEffectTexturesTemplate.h:40
MapEffectTexturesStateToHashDefines myMutableMapEffectTexturesStateToHashDefines
Definition: DtIndirectTextureCollectionPolicy.h:82

Document ID: Generated on Mon Jun 20 00:38:30 EDT 2022 from SVN revision 244029
Copyright © 2005-2021 MAK Technologies. All Rights Reserved (www.mak.com)