#include <string>
#include <msp/linal/vector.h>
-#include "texture.h"
+#include "texture3d_backend.h"
namespace Msp {
namespace GL {
Three-dimensional texture. Consists of an array of texels in the shape of a
right cuboid. Texture coordinates have a principal range of [0, 1].
*/
-class Texture3D: public Texture
+class Texture3D: public Texture3DBackend
{
+ friend Texture3DBackend;
+
public:
class Loader: public Msp::DataFile::DerivedObjectLoader<Texture3D, Texture::Loader>
{
};
protected:
- unsigned width;
- unsigned height;
- unsigned depth;
- unsigned levels;
- unsigned allocated;
+ unsigned width = 0;
+ unsigned height = 0;
+ unsigned depth = 0;
+ unsigned levels = 0;
- Texture3D(GLenum);
+ Texture3D(unsigned);
public:
- Texture3D();
+ Texture3D() = default;
/** Defines storage structure for the texture. If lv is zero, the number
of mipmap levels is automatically determined from storage dimensions.
it can't be changed. */
void storage(PixelFormat fmt, unsigned wd, unsigned ht, unsigned dp, unsigned lv = 0);
- /** Allocates storage for the texture. The contents are initially
- undefined. If storage has already been allocated, does nothing. */
- void allocate(unsigned level);
-
/** Updates the contents of the entire texture. Storage must be defined
beforehand. The image data must have dimensions and format matching the
defined storage. */