VR-Forces 5.0.2 Developer's Guide
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
DtGlProgram.h
Go to the documentation of this file.
1 /*****************************************************************************
2  * Copyright (c) 2021 MAK Technologies, Inc.
3  * All rights reserved.
4  *****************************************************************************/
5 
9 #pragma once
10 
13 
14 #include <vector>
15 #include <unordered_map>
16 
17 namespace makVrv
18 {
19  class DtGlShader;
20  class DtGlTexture;
21  class DtGlBuffer;
22 
26  {
27  public:
29  DtGlUbo();
30 
32  DtGlUbo(const std::string& name, int size, int binding);
33 
35  virtual ~DtGlUbo();
36 
38  DtGlUbo(const DtGlUbo& rhs);
39 
41  DtGlUbo& operator=(const DtGlUbo& rhs);
42 
44  virtual bool valid(void) const;
45 
47  const std::string& name(void) const;
48 
50  int size(void) const;
51 
53  int bindingPoint(void) const;
54 
55  protected:
56  std::string myName;
57  int mySize;
58  int myBinding;
59  };
60 
62  typedef std::vector<DtGlShader*> DtShaderVector;
63 
66  {
67  public:
69  DtGlProgram(const std::string& name, const DtShaderVector& shaders, bool multiview = false);
70 
73  DtGlProgram(const std::string& name, unsigned int programId);
74 
76  virtual ~DtGlProgram();
77  private:
79  DtGlProgram() = delete;
80 
82  DtGlProgram(const DtGlProgram&) = delete;
83 
85  DtGlProgram& operator=(const DtGlProgram&) = delete;
86  public:
87 
89  virtual void bind();
90 
92  virtual void unbind();
93 
95  virtual bool isValid() const;
96 
98  virtual unsigned int id() const;
99 
101  virtual int uboSize(const std::string& name) const;
102 
104  virtual int uboBinding(const std::string& name) const;
105 
107  virtual int uniformOffset(const std::string& uniformName) const;
108 
110  virtual int uniformLocation(const std::string& uniformName) const;
111 
113  virtual const DtGlUbo* ubo(const std::string& uboName) const;
114 
115  public:
116 
121  virtual void runComputeShader(unsigned int workSizeX, unsigned int workSizeY, bool bind);
122 
128  virtual void runComputeShader(unsigned int workSizeX, unsigned int workSizeY, unsigned int workSizeZ, bool bind);
129 
134  virtual void runComputeShader(const DtGlTexture* renderTexture, bool bind);
135 
136  public:
138  static void printGLSLInfoLog(unsigned int shader);
139 
140  protected:
142  virtual void introspect(void) const;
143 
145  virtual bool createProgram(const std::string& name, const VectorUnsignedInts& shaders);
146 
147  protected:
148  unsigned myProgramID;
149  bool myIsValid;
150 
151  mutable bool myMutableIntrospected;
152 
153  mutable std::unordered_map<std::string, DtGlUbo*> myMutableUbos;
154 
155  const bool myOwns;
156 
157  const bool myIsMultiview;
158  };
159 }
Dll export defines.
std::unordered_map< std::string, DtGlUbo * > myMutableUbos
Definition: DtGlProgram.h:153
std::string myName
Definition: DtGlProgram.h:56
int myBinding
Definition: DtGlProgram.h:58
class to hold information about an UBO within a program
Definition: DtGlProgram.h:25
const bool myIsMultiview
Definition: DtGlProgram.h:157
voidpf void uLong size
Definition: ioapi.h:39
bool myMutableIntrospected
Definition: DtGlProgram.h:151
A convenience class to represent an OpenGL Shader Program.
Definition: DtGlProgram.h:65
std::vector< DtGlShader * > DtShaderVector
a list of shaders
Definition: DtGlProgram.h:62
binderNoArgs< _Fn > bind(const _Fn &_Func, const _Ty &_Left)
Definition: DtSTLUtilities.h:76
const bool myOwns
Definition: DtGlProgram.h:155
unsigned myProgramID
Definition: DtGlProgram.h:148
#define DT_DLL_VRVGRAPHICSUTILS
Definition: vrvGraphicsUtils.h:18
std::vector< unsigned int > VectorUnsignedInts
Definition: DtCommonTypes.h:19
A helper classes for creating a RTT target, optionally including depth buffer.
Definition: DtGlTexture.h:20
bool myIsValid
Definition: DtGlProgram.h:149
int mySize
Definition: DtGlProgram.h:57

Document ID: Generated on Sun Dec 4 20:22:03 EST 2022 from SVN revision 249613
Copyright © 2005-2021 MAK Technologies. All Rights Reserved (www.mak.com)