HDK
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
RE_RenderContext.h
Go to the documentation of this file.
1 /*
2  * PROPRIETARY INFORMATION. This software is proprietary to
3  * Side Effects Software Inc., and is not to be reproduced,
4  * transmitted, or disclosed in any way without written permission.
5  *
6  * NAME: RE_RenderContext.h ( RV Library, C++)
7  *
8  * COMMENTS:
9  * Temporary container for either a RV_Render or an RE_Render (not both)
10  */
11 #ifndef RE_RenderContext_h
12 #define RE_RenderContext_h
13 
14 class GR_Uniforms;
15 class RE_Render;
16 class RV_Render;
17 
18 #include <UT/UT_Assert.h>
19 
20 /// Temporary container for either a RV_Render and an RE_Render
22 {
23 public:
24  // GL only - No Vulkan
26  : myGLRender(r),
27  myVkRender(nullptr),
28  myUniforms(nullptr)
29  { }
30  // Both; eventually GL will be phased out and it'll only be vulkan.
31  RE_RenderContext(RE_Render *gl, RV_Render *vk, GR_Uniforms* u)
32  : myGLRender(gl),
33  myVkRender(vk),
34  myUniforms(u)
35  { }
36 
37  void operator=(RE_Render *r) { myGLRender = r; myVkRender=nullptr; }
38  void operator=(RV_Render *r) { myVkRender = r; myGLRender=nullptr; }
39 
40  operator RE_Render *() { UT_ASSERT(myGLRender); return myGLRender; }
41  operator RV_Render *() { UT_ASSERT(myVkRender); return myVkRender; }
42  operator const RE_Render *() const
43  { UT_ASSERT(myGLRender); return myGLRender; }
44 
45  RE_Render * operator*() { return myGLRender; }
46  RE_Render * operator->() { UT_ASSERT(myGLRender); return myGLRender; }
47 
48  RV_Render *vkRender() { return myVkRender; }
49  GR_Uniforms *uniforms() { return myUniforms; }
50 
51  bool isGL() const { return myGLRender!=nullptr; }
52  bool isVulkan() const { return myVkRender!=nullptr; }
53 
54 private:
55  RE_Render *myGLRender;
56  RV_Render *myVkRender;
57  GR_Uniforms *myUniforms;
58 };
59 
60 #endif
void operator=(RE_Render *r)
RV_Render * vkRender()
void operator=(RV_Render *r)
RE_RenderContext(RE_Render *gl, RV_Render *vk, GR_Uniforms *u)
bool isGL() const
Temporary container for either a RV_Render and an RE_Render.
RE_Render * operator*()
RE_Render * operator->()
RE_RenderContext(RE_Render *r)
GR_Uniforms * uniforms()
#define UT_ASSERT(ZZ)
Definition: UT_Assert.h:156
GLboolean r
Definition: glcorearb.h:1222
bool isVulkan() const