#ifndef MSP_GL_TEXTURE2DARRAY_H_
#define MSP_GL_TEXTURE2DARRAY_H_
-#include "texture3d.h"
+#include "texture2darray_backend.h"
namespace Msp {
namespace GL {
/**
-An array of two-dimensional textures. It's very much like a 3D texture, with
-two important differences: there's no filtering nor mipmapping along the third
-dimension.
+An array of two-dimensional textures. It behaves much like a 3D texture, but
+mipmapping and filtering is not applied on the third dimension. When sampling
+the texture, the third coordinate is not normalized and is rounded to the
+nearest integer to select the layer.
*/
-class Texture2DArray: public Texture3D
+class Texture2DArray: public Texture2DArrayBackend
{
public:
class Loader: public Msp::DataFile::DerivedObjectLoader<Texture2DArray, Texture3D::Loader>
void external_image(unsigned, const std::string &);
};
- Texture2DArray();
-
+ /** Replaces contents of a single layer. Allocated storage must exist. The
+ image data is interpreted according to the storage format and must have
+ width and height matching the selected mipmap level. */
void layer_image(unsigned, unsigned, const void *);
- DEPRECATED void layer_image(unsigned, unsigned, PixelComponents, DataType, const void *);
+
void layer_image(unsigned, unsigned, const Graphics::Image &);
unsigned get_layers() const { return get_depth(); }