All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Macros Pages
GLHelpers.h
1 // Copyright eeGeo Ltd (2012-2014), All Rights Reserved
2 
3 #pragma once
4 
5 #include "Types.h"
6 #include "Graphics.h"
7 #include "TextureMinifyType.h"
8 #include "Rendering.h"
9 
10 namespace Eegeo
11 {
12  namespace Helpers
13  {
14  namespace GLHelpers
15  {
16  struct TextureInfo
17  {
18  TextureInfo()
19  : textureId(0)
20  , width(0)
21  , height(0)
22  {}
23 
24  u32 textureId;
25  int width;
26  int height;
27  };
28 
29  GLint GetMinifyParam(Rendering::TextureMinifyType minifyType);
30 
31  void SetUniformTextureSampler(Rendering::GLState& glState, int uniformSampler, int samplerIndex);
32 
33  void BindTexture2D(Rendering::GLState& glState, int samplerIndex, u32 textureId, Rendering::TextureMinifyType minifyType, bool repeat);
34 
35  void BindTextureCube(Rendering::GLState& glState, int samplerIndex, u32 textureId);
36 
38  #if defined(EEGEO_WIN)
39  void EnterGLContextGuard();
40  void ExitGLContextGuard();
41  #else
42  inline void EnterGLContextGuard() {}
43  inline void ExitGLContextGuard() {}
44  #endif
45 
46  //provides RAII locking for the GL context specifically
47  struct LockGL
48  {
49  LockGL()
50  {
51  EnterGLContextGuard();
52  }
53 
54  ~LockGL()
55  {
56  ExitGLContextGuard();
57  }
58  };
59 
62  inline void ClearBuffers()
63  {
64  Eegeo_GL(glColorMask(GL_TRUE, GL_TRUE, GL_TRUE, GL_TRUE));
65  Eegeo_GL(glDepthMask(GL_TRUE))
66  Eegeo_GL(glStencilMask(0xffffffff))
67  Eegeo_GL(glDisable(GL_SCISSOR_TEST));
68  #ifdef EEGEO_OSX
69  Eegeo_GL(glClearDepth(1));
70  #else
71  Eegeo_GL(glClearDepthf(1));
72  #endif
73  Eegeo_GL(glClearStencil(0));
74 
75  Eegeo_GL(glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT | GL_STENCIL_BUFFER_BIT));
76  }
77 
78  int GetTextureLoaderSamplerIndex();
79  }
80  }
81 }