Browse Source

BufferedTexture is now privately based on AbstractTexture.

Don't duplicate the functionality when it is not necessarily needed.
vectorfields
Vladimír Vondruš 14 years ago
parent
commit
676f89127f
  1. 46
      src/BufferedTexture.h

46
src/BufferedTexture.h

@ -19,6 +19,7 @@
* @brief Class Magnum::BufferedTexture * @brief Class Magnum::BufferedTexture
*/ */
#include "AbstractTexture.h"
#include "Buffer.h" #include "Buffer.h"
namespace Magnum { namespace Magnum {
@ -39,7 +40,7 @@ data using integer coordinates in `texelFetch()`.
@requires_gl @requires_gl
@requires_gl31 Extension @extension{ARB,texture_buffer_object} @requires_gl31 Extension @extension{ARB,texture_buffer_object}
*/ */
class BufferedTexture { class BufferedTexture: private AbstractTexture {
BufferedTexture(const BufferedTexture& other) = delete; BufferedTexture(const BufferedTexture& other) = delete;
BufferedTexture(BufferedTexture&& other) = delete; BufferedTexture(BufferedTexture&& other) = delete;
BufferedTexture& operator=(const BufferedTexture& other) = delete; BufferedTexture& operator=(const BufferedTexture& other) = delete;
@ -116,38 +117,10 @@ class BufferedTexture {
/*@}*/ /*@}*/
/** inline BufferedTexture(): AbstractTexture(GL_TEXTURE_BUFFER) {}
* @brief Constructor
*
* Creates one OpenGL texture.
* @see @fn_gl{GenTextures}
*/
inline BufferedTexture() {
glGenTextures(1, &_id);
}
/** /** @copydoc AbstractTexture::bind() */
* @brief Destructor inline void bind(GLint layer) { AbstractTexture::bind(layer); }
*
* Deletes assigned OpenGL texture.
* @see @fn_gl{DeleteTextures}
*/
inline virtual ~BufferedTexture() {
glDeleteTextures(1, &_id);
}
/**
* @brief Bind texture for rendering
*
* Sets current texture as active in given layer. The layer must be
* between 0 and maxSupportedLayerCount(). Note that only one texture
* can be bound to given layer.
* @see @fn_gl{ActiveTexture}, @fn_gl{BindTexture}
*/
inline void bind(GLint layer) {
glActiveTexture(GL_TEXTURE0 + layer);
bind();
}
/** /**
* @brief Set texture buffer * @brief Set texture buffer
@ -160,16 +133,9 @@ class BufferedTexture {
* @see @fn_gl{BindTexture}, @fn_gl{TexBuffer} * @see @fn_gl{BindTexture}, @fn_gl{TexBuffer}
*/ */
void setBuffer(InternalFormat internalFormat, Buffer* buffer) { void setBuffer(InternalFormat internalFormat, Buffer* buffer) {
bind(); AbstractTexture::bind();
glTexBuffer(GL_TEXTURE_BUFFER, internalFormat, buffer->id()); glTexBuffer(GL_TEXTURE_BUFFER, internalFormat, buffer->id());
} }
private:
GLuint _id;
inline void bind() {
glBindTexture(GL_TEXTURE_BUFFER, _id);
}
}; };
/** @relates BufferedTexture /** @relates BufferedTexture

Loading…
Cancel
Save