15#ifndef MANAGEDTEXTURE3D_H_6014714286
16#define MANAGEDTEXTURE3D_H_6014714286
118 ,
const void* bufferPtr );
Defines LibCarna::base::GeometryFeature.
Contains forward-declarations.
Defines LibCarna::base::ManagedTexture3DInterface.
Represents an association.
Represents "components" that are aggregated by Geometry objects. Closer description is given here.
Interfaces the Texture<3> that a ManagedTexture3D represents.
Represents 3D OpenGL texture object whose lifetime is managed by instances of this class.
ManagedTexture3D(const math::Vector3ui &size, int internalFormat, int pixelFormat, int bufferType, const void *bufferPtr)
Instantiates.
virtual bool controlsSameVideoResource(const GeometryFeature &) const override
Tells whether this instance maintains the same video resources like other.
const int pixelFormat
Holds the format of the pixel data, e.g. GL_RED, GL_RGB or GL_RGBA.
static ManagedTexture3D & create(const math::Vector3ui &size, int internalFormat, int pixelFormat, int bufferType, const void *bufferPtr)
Instantiates. Invoke release when it isn't needed any longer.
const math::Vector3ui size
Tells the resolution of this texture.
std::unique_ptr< Texture< 3 > > textureObject
Holds the maintained OpenGL texture object.
const int bufferType
Specifies the data type of the pixel data to be uploaded to the texture.
const base::math::Matrix4f textureCoordinatesCorrection
Stretches texture coordinates s.t. the centers of the texels, that are located in the texture corners...
const int internalFormat
Holds the number of color components in the texture, e.g. GL_RGBA8UI or GL_INTENSITY16.
~ManagedTexture3D()
Deletes.
const void *const bufferPtr
Points to the pixel data that will be uploaded to the texture.
ManagedTexture3DInterface ManagedInterface
Defines the type to be used for interfacing the video resource.
virtual ManagedTexture3DInterface * acquireVideoResource() override
Acquires the video resources from this GeometryFeature by returning new instance of a class derived f...
Defines LibCarna::base::math namespace and LIBCARNA_FOR_VECTOR3UI.
Eigen::Matrix< float, 4, 4, Eigen::ColMajor > Matrix4f
Defines matrix.
Eigen::Matrix< unsigned int, 3, 1 > Vector3ui
Defines vector.
Defines LibCarna::base::noncopyable and NON_COPYABLE.
#define NON_COPYABLE
Marks the class that it is placed in as non-copyable.