zMol
A viewer for molecular data using OpenGL and ambient occlusion
texture.hpp
1 /****************************************************************************
2 
3 Copyright (c) 2012 Carlos Rafael Giani ( email: dv xxx AT pseudoterminal xxx DOT xxx org , remove the xxx )
4 
5 This software is provided 'as-is', without any express or implied
6 warranty. In no event will the authors be held liable for any damages
7 arising from the use of this software.
8 
9 Permission is granted to anyone to use this software for any purpose,
10 including commercial applications, and to alter it and redistribute it
11 freely, subject to the following restrictions:
12 
13  1. The origin of this software must not be misrepresented; you must not
14  claim that you wrote the original software. If you use this software
15  in a product, an acknowledgment in the product documentation would be
16  appreciated but is not required.
17 
18  2. Altered source versions must be plainly marked as such, and must not be
19  misrepresented as being the original software.
20 
21  3. This notice may not be removed or altered from any source
22  distribution.
23 
24 ****************************************************************************/
25 
26 
27 
28 #ifndef ZMOL_TEXTURE_HPP
29 #define ZMOL_TEXTURE_HPP
30 
31 #include "opengl3.hpp"
32 #include "noncopyable.hpp"
33 
34 
35 namespace zmol
36 {
37 
38 
49 class texture:
50  private noncopyable
51 {
52 public:
53  enum { target = GL_TEXTURE_2D };
54 
68  explicit texture(GLsizei const p_width, GLsizei const p_height, GLint const p_internal_format, GLenum const p_format, GLenum const p_type);
69 
73  ~texture();
74 
78  inline GLsizei get_width() const { return m_width; }
82  inline GLsizei get_height() const { return m_height; }
86  inline GLuint get_name() const { return m_name; }
87 
92  void bind(GLuint const p_unit);
97  static void unbind(GLuint const p_unit);
98 
109  void upload_pixels(void const *p_pixels, unsigned int const p_num_pixel_bytes, GLenum const p_pixel_data_format, GLenum const p_pixel_data_type);
110 
111 protected:
112  GLsizei m_width, m_height;
113  GLint m_internal_format;
114  GLuint m_name;
115 };
116 
117 
118 }
119 
120 
121 #endif
122