15#ifndef vtkTextureObject_h
16#define vtkTextureObject_h
19#include "vtkRenderingOpenGL2Module.h"
23VTK_ABI_NAMESPACE_BEGIN
47 NumberOfDepthTextureCompareFunctions
69 NumberOfMinificationModes
108 vtkGetMacro(Width,
unsigned int);
109 vtkGetMacro(Height,
unsigned int);
110 vtkGetMacro(Depth,
unsigned int);
111 vtkGetMacro(Samples,
unsigned int);
112 vtkGetMacro(Components,
int);
113 unsigned int GetTuples() {
return this->Width * this->Height * this->Depth; }
116 vtkGetMacro(NumberOfDimensions,
int);
119 vtkSetMacro(Samples,
unsigned int);
125 vtkGetMacro(Target,
unsigned int);
132 vtkGetMacro(Handle,
unsigned int);
183 vtkSetMacro(AutoParameters,
int);
184 vtkGetMacro(AutoParameters,
int);
185 vtkBooleanMacro(AutoParameters,
int);
193 unsigned int width,
unsigned int height,
int numComps,
int dataType,
void* data);
202 unsigned int width,
unsigned int height,
int numComps,
int dataType,
int nbLayers,
void* data);
210 unsigned int width,
unsigned int height,
int internalFormat,
int rawType,
void* raw);
234 unsigned int width,
unsigned int height,
int numComps,
int dataType,
void* data[6]);
260 bool shaderSupportsTextureInt);
268 bool Create3D(
unsigned int width,
unsigned int height,
unsigned int depth,
int numComps,
275 bool Create3DFromRaw(
unsigned int width,
unsigned int height,
unsigned int depth,
int numComps,
276 int dataType,
void* data);
285 unsigned int width,
unsigned int height,
unsigned int depth,
int numComps,
int dataType);
306 bool AllocateDepth(
unsigned int width,
unsigned int height,
int internalFormat);
317 bool Allocate1D(
unsigned int width,
int numComps,
int vtkType);
324 unsigned int width,
unsigned int height,
int numComps,
int vtkType,
int level = 0);
331 unsigned int width,
unsigned int height,
unsigned int depth,
int numComps,
int vtkType);
337 bool Create2D(
unsigned int width,
unsigned int height,
int numComps,
int vtktype,
bool)
339 return this->Allocate2D(width, height, numComps, vtktype);
342 unsigned int width,
unsigned int height,
unsigned int depth,
int numComps,
int vtktype,
bool)
344 return this->Allocate3D(width, height, depth, numComps, vtktype);
379 unsigned int GetFormat(
int vtktype,
int numComps,
bool shaderSupportsTextureInt);
407 vtkSetMacro(RequireDepthBufferFloat,
bool);
408 vtkGetMacro(RequireDepthBufferFloat,
bool);
409 vtkGetMacro(SupportsDepthBufferFloat,
bool);
419 vtkSetMacro(RequireTextureFloat,
bool);
420 vtkGetMacro(RequireTextureFloat,
bool);
421 vtkGetMacro(SupportsTextureFloat,
bool);
431 vtkSetMacro(RequireTextureInteger,
bool);
432 vtkGetMacro(RequireTextureInteger,
bool);
433 vtkGetMacro(SupportsTextureInteger,
bool);
447 vtkGetMacro(WrapS,
int);
448 vtkSetMacro(WrapS,
int);
462 vtkGetMacro(WrapT,
int);
463 vtkSetMacro(WrapT,
int);
477 vtkGetMacro(WrapR,
int);
478 vtkSetMacro(WrapR,
int);
495 vtkGetMacro(MinificationFilter,
int);
496 vtkSetMacro(MinificationFilter,
int);
507 vtkGetMacro(MagnificationFilter,
int);
508 vtkSetMacro(MagnificationFilter,
int);
525 vtkSetVector4Macro(BorderColor,
float);
526 vtkGetVector4Macro(BorderColor,
float);
534 vtkSetMacro(MinLOD,
float);
535 vtkGetMacro(MinLOD,
float);
543 vtkSetMacro(MaxLOD,
float);
544 vtkGetMacro(MaxLOD,
float);
553 vtkSetMacro(BaseLevel,
int);
554 vtkGetMacro(BaseLevel,
int);
563 vtkSetMacro(MaxLevel,
int);
564 vtkGetMacro(MaxLevel,
int);
578 vtkGetMacro(DepthTextureCompare,
bool);
579 vtkSetMacro(DepthTextureCompare,
bool);
603 vtkGetMacro(DepthTextureCompareFunction,
int);
604 vtkSetMacro(DepthTextureCompareFunction,
int);
613 vtkGetMacro(GenerateMipmap,
bool);
614 vtkSetMacro(GenerateMipmap,
bool);
623 vtkSetMacro(MaximumAnisotropicFiltering,
float);
624 vtkGetMacro(MaximumAnisotropicFiltering,
float);
654 bool requireDepthFloat,
bool requireTexInt);
673 int dstYmin,
int dstXmax,
int dstYmax,
int dstSizeX,
int dstSizeY,
vtkShaderProgram* program,
696 int srcXmin,
int srcYmin,
int dstXmin,
int dstYmin,
int width,
int height);
714 void Resize(
unsigned int width,
unsigned int height);
723 vtkGetMacro(UseSRGBColorSpace,
bool);
724 vtkSetMacro(UseSRGBColorSpace,
bool);
725 vtkBooleanMacro(UseSRGBColorSpace,
bool);
794 float BorderColor[4];
a simple class to control print indentation
abstract base class for most VTK objects
The VertexArrayObject class uses, or emulates, vertex array objects.
abstracts an OpenGL pixel buffer object.
The ShaderProgram uses one or more Shader objects.
abstracts an OpenGL texture object.
static bool IsSupported(vtkOpenGLRenderWindow *renWin, bool requireTexFloat, bool requireDepthFloat, bool requireTexInt)
Returns if the context supports the required extensions.
unsigned int InternalFormat
bool AllocateDepth(unsigned int width, unsigned int height, int internalFormat)
Create a 2D depth texture but does not initialize its values.
void SetContext(vtkOpenGLRenderWindow *)
Get/Set the context.
bool AllocateProxyTexture3D(unsigned int width, unsigned int height, unsigned int depth, int numComps, int dataType)
Create a 3D texture using the GL_PROXY_TEXTURE_3D target.
bool EmulateTextureBufferWith2DTextures(unsigned int numValues, int numComps, int dataType, vtkOpenGLBufferObject *bo)
Emulates a texture buffer with 2D texture.
bool AllocateDepthStencil(unsigned int width, unsigned int height)
Create a 2D septh stencil texture but does not initialize its values.
float MaximumAnisotropicFiltering
bool Create2DFromRaw(unsigned int width, unsigned int height, int numComps, int dataType, void *data)
Create a 2D texture from client memory numComps must be in [1-4].
vtkOpenGLRenderWindow * GetContext()
Get/Set the context.
bool Create2DArrayFromRaw(unsigned int width, unsigned int height, int numComps, int dataType, int nbLayers, void *data)
Create a 2D texture array from client memory data contains a pointer to the layers of the texture arr...
vtkOpenGLHelper * ShaderProgram
bool IsBound()
Tells if the texture object is bound to the active texture image unit.
void SetInternalFormat(unsigned int glInternalFormat)
Get/Set internal format (OpenGL internal format) that should be used.
int GetDefaultDataType(int vtk_scalar_type)
Get the data type for the texture as GLenum type.
void Resize(unsigned int width, unsigned int height)
bool Allocate1D(unsigned int width, int numComps, int vtkType)
Create a 1D color texture but does not initialize its values.
virtual void Activate()
Activate and Bind the texture.
unsigned int GetWrapTMode(int vtktype)
bool Create1D(int numComps, vtkPixelBufferObject *pbo, bool shaderSupportsTextureInt)
Create a 1D texture using the PBO.
void CopyToFrameBuffer(vtkShaderProgram *program, vtkOpenGLVertexArrayObject *vao)
Copy the texture (src) in the current framebuffer.
void CopyToFrameBuffer(int srcXmin, int srcYmin, int srcXmax, int srcYmax, int dstXmin, int dstYmin, int dstXmax, int dstYmax, int dstSizeX, int dstSizeY, vtkShaderProgram *program, vtkOpenGLVertexArrayObject *vao)
Copy the texture (src) in the current framebuffer.
int GetVTKDataType()
Get the data type for the texture as a vtk type int i.e.
void GetShiftAndScale(float &shift, float &scale)
Get the shift and scale required in the shader to return the texture values to their original range.
unsigned int GetFormat(int vtktype, int numComps, bool shaderSupportsTextureInt)
Get/Set format (OpenGL internal format) that should be used.
void DestroyTexture()
Destroy the texture.
void SetLinearMagnification(bool val)
Tells if the magnification mode is linear (true) or nearest (false).
bool SupportsTextureInteger
vtkTimeStamp SendParametersTime
unsigned int GetMinificationFilterMode(int vtktype)
int GetTextureUnit()
Return the texture unit used for this texture.
void ResetFormatAndType()
Reset format, internal format, and type of the texture.
bool CreateTextureBuffer(unsigned int numValues, int numComps, int dataType, vtkOpenGLBufferObject *bo)
Create a texture buffer basically a 1D texture that can be very large for passing data into the fragm...
vtkGenericOpenGLResourceFreeCallback * ResourceCallback
void AssignToExistingTexture(unsigned int handle, unsigned int target)
Assign the TextureObject to a externally provided Handle and Target.
void CreateTexture()
Creates a texture handle if not already created.
static int GetMaximumTextureSize(vtkOpenGLRenderWindow *context)
Query and return maximum texture size (dimension) supported by the OpenGL driver for a particular con...
vtkOpenGLBufferObject * BufferObject
unsigned int GetWrapRMode(int vtktype)
bool SupportsDepthBufferFloat
bool Create3D(unsigned int width, unsigned int height, unsigned int depth, int numComps, int vtktype, bool)
Create texture without uploading any data.
bool CreateCubeFromRaw(unsigned int width, unsigned int height, int numComps, int dataType, void *data[6])
Create a cube texture from 6 buffers from client memory.
bool RequireTextureInteger
unsigned int GetWrapSMode(int vtktype)
void CopyToFrameBuffer(float *tcoords, float *verts, vtkShaderProgram *program, vtkOpenGLVertexArrayObject *vao)
Copy the texture (src) in the current framebuffer.
bool Create3D(unsigned int width, unsigned int height, unsigned int depth, int numComps, vtkPixelBufferObject *pbo, bool shaderSupportsTextureInt)
Create a 3D texture using the PBO.
bool Create2D(unsigned int width, unsigned int height, int numComps, int vtktype, bool)
Create texture without uploading any data.
static bool IsSupported(vtkOpenGLRenderWindow *renWin)
Check for feature support, without any optional features.
virtual void ReleaseGraphicsResources(vtkWindow *win)
Deactivate and UnBind the texture.
void SetDataType(unsigned int glType)
Get the data type for the texture as GLenum type.
void Deactivate()
Deactivate and UnBind the texture.
vtkWeakPointer< vtkOpenGLRenderWindow > Context
bool CreateDepthFromRaw(unsigned int width, unsigned int height, int internalFormat, int rawType, void *raw)
Create a 2D depth texture using a raw pointer.
void SetFormat(unsigned int glFormat)
Get/Set format (OpenGL internal format) that should be used.
~vtkTextureObject() override
unsigned int GetInternalFormat(int vtktype, int numComps, bool shaderSupportsTextureInt)
Get/Set internal format (OpenGL internal format) that should be used.
unsigned int GetTuples()
Get the texture dimensions.
bool SupportsTextureFloat
void PrintSelf(ostream &os, vtkIndent indent) override
Methods invoked by print to print information about the object including superclasses.
unsigned int GetMagnificationFilterMode(int vtktype)
bool Create3DFromRaw(unsigned int width, unsigned int height, unsigned int depth, int numComps, int dataType, void *data)
Create a 3D texture from client memory numComps must be in [1-4].
bool Create2D(unsigned int width, unsigned int height, int numComps, vtkPixelBufferObject *pbo, bool shaderSupportsTextureInt)
Create a 2D texture using the PBO.
int DepthTextureCompareFunction
int GetDataType(int vtk_scalar_type)
Get the data type for the texture as GLenum type.
bool Allocate3D(unsigned int width, unsigned int height, unsigned int depth, int numComps, int vtkType)
Create a 3D color texture but does not initialize its values.
unsigned int GetDefaultFormat(int vtktype, int numComps, bool shaderSupportsTextureInt)
Get/Set format (OpenGL internal format) that should be used.
static int GetMaximumTextureSize3D(vtkOpenGLRenderWindow *context)
Query and return maximum texture size (dimension) supported by the OpenGL driver for a particular con...
bool CreateDepth(unsigned int width, unsigned int height, int internalFormat, vtkPixelBufferObject *pbo)
Create a 2D depth texture using a PBO.
bool Allocate2D(unsigned int width, unsigned int height, int numComps, int vtkType, int level=0)
Create a 2D color texture but does not initialize its values.
static vtkTextureObject * New()
void CopyFromFrameBuffer(int srcXmin, int srcYmin, int dstXmin, int dstYmin, int width, int height)
Copy a sub-part of a logical buffer of the framebuffer (color or depth) to the texture object.
bool GetLinearMagnification()
bool LoadRequiredExtensions(vtkOpenGLRenderWindow *renWin)
Load all necessary extensions.
int GetMaximumTextureSize3D()
Overload which uses the internal context to query the maximum 3D texture size.
unsigned int GetDefaultInternalFormat(int vtktype, int numComps, bool shaderSupportsTextureInt)
Get/Set internal format (OpenGL internal format) that should be used.
void SendParameters()
Send all the texture object parameters to the hardware if not done yet.
void Bind()
Bind the texture, must have been created using Create().
bool Create1DFromRaw(unsigned int width, int numComps, int dataType, void *data)
Create 1D texture from client memory.
void CopyToFrameBuffer(int srcXmin, int srcYmin, int srcXmax, int srcYmax, int dstXmin, int dstYmin, int dstSizeX, int dstSizeY, vtkShaderProgram *program, vtkOpenGLVertexArrayObject *vao)
Copy the texture (src) in the current framebuffer.
vtkPixelBufferObject * Download()
This is used to download raw data from the texture into a pixel buffer.
vtkPixelBufferObject * Download(unsigned int target, unsigned int level)
bool RequireDepthBufferFloat
record modification and/or execution time
a weak reference to a vtkObject.
window superclass for vtkRenderWindow
boost::graph_traits< vtkGraph * >::vertex_descriptor target(boost::graph_traits< vtkGraph * >::edge_descriptor e, vtkGraph *)