VolViz
A volume visualization tool
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups
Textures.h
Go to the documentation of this file.
1 #ifndef VolViz_Texture_h
2 #define VolViz_Texture_h
3 
4 #include "GLdefs.h"
5 
6 #include <array>
7 
8 namespace VolViz {
9 namespace Private_ {
10 namespace GL {
11 
13 template <std::size_t N> struct Textures {
14 
15  inline Textures(int) noexcept {
16  for (std::size_t i = 0; i < N; ++i) names[i] = 0;
17  }
18 
19  inline Textures() noexcept { glGenTextures(N, names.data()); }
20 
21  inline Textures(Textures &&rhs) noexcept {
22  using std::swap;
23  swap(names, rhs.names);
24  }
25 
26  inline ~Textures() { glDeleteTextures(N, names.data()); }
27 
28  inline Textures &operator=(Textures &&rhs) noexcept {
29  using std::swap;
30  swap(names, rhs.names);
31  return *this;
32  }
33 
34  std::array<GLuint, N> names;
35 };
36 
37 } // namespace GL
38 } // namespace Private_
39 } // namespace VolViz
40 
41 #endif // VolViz_Texture_h
Textures(int) noexcept
Definition: Textures.h:15
~Textures()
Definition: Textures.h:26
Textures() noexcept
Definition: Textures.h:19
GLuint GLuint * names
Definition: glad.h:7476
Textures(Textures &&rhs) noexcept
Definition: Textures.h:21
#define glGenTextures
Definition: glad.h:2265
#define glDeleteTextures
Definition: glad.h:2262
RAII wrapper for arrays of OpenGL texture objects.
Definition: Textures.h:13
Textures & operator=(Textures &&rhs) noexcept
Definition: Textures.h:28
std::array< GLuint, N > names
Definition: Textures.h:34