24 #ifndef vtkTextureObject_h
25 #define vtkTextureObject_h
28 #include "vtkRenderingOpenGL2Module.h"
54 NumberOfDepthTextureCompareFunctions
59 #ifndef GL_ES_VERSION_3_0
60 enum { ClampToEdge = 0, Repeat, MirroredRepeat,
ClampToBorder, NumberOfWrapModes };
80 NumberOfMinificationModes
119 vtkGetMacro(Width,
unsigned int);
120 vtkGetMacro(Height,
unsigned int);
121 vtkGetMacro(Depth,
unsigned int);
122 vtkGetMacro(Samples,
unsigned int);
123 vtkGetMacro(Components,
int);
124 unsigned int GetTuples() {
return this->Width * this->Height * this->Depth; }
127 vtkGetMacro(NumberOfDimensions,
int);
130 vtkSetMacro(Samples,
unsigned int);
143 vtkGetMacro(Handle,
unsigned int);
194 vtkSetMacro(AutoParameters,
int);
195 vtkGetMacro(AutoParameters,
int);
196 vtkBooleanMacro(AutoParameters,
int);
204 unsigned int width,
unsigned int height,
int numComps,
int dataType,
void*
data);
212 unsigned int width,
unsigned int height,
int internalFormat,
int rawType,
void* raw);
227 unsigned int width,
unsigned int height,
int numComps,
int dataType,
void*
data[6]);
230 #ifndef GL_ES_VERSION_3_0
257 bool shaderSupportsTextureInt);
265 bool Create3D(
unsigned int width,
unsigned int height,
unsigned int depth,
int numComps,
273 int dataType,
void*
data);
282 unsigned int const depth,
int const numComps,
int const dataType);
314 bool Allocate1D(
unsigned int width,
int numComps,
int vtkType);
321 unsigned int width,
unsigned int height,
int numComps,
int vtkType,
int level = 0);
328 unsigned int width,
unsigned int height,
unsigned int depth,
int numComps,
int vtkType);
334 bool Create2D(
unsigned int width,
unsigned int height,
int numComps,
int vtktype,
bool)
336 return this->Allocate2D(width,
height, numComps, vtktype);
339 unsigned int width,
unsigned int height,
unsigned int depth,
int numComps,
int vtktype,
bool)
341 return this->Allocate3D(width,
height, depth, numComps, vtktype);
376 unsigned int GetFormat(
int vtktype,
int numComps,
bool shaderSupportsTextureInt);
404 vtkSetMacro(RequireDepthBufferFloat,
bool);
405 vtkGetMacro(RequireDepthBufferFloat,
bool);
406 vtkGetMacro(SupportsDepthBufferFloat,
bool);
416 vtkSetMacro(RequireTextureFloat,
bool);
417 vtkGetMacro(RequireTextureFloat,
bool);
418 vtkGetMacro(SupportsTextureFloat,
bool);
428 vtkSetMacro(RequireTextureInteger,
bool);
429 vtkGetMacro(RequireTextureInteger,
bool);
430 vtkGetMacro(SupportsTextureInteger,
bool);
444 vtkGetMacro(WrapS,
int);
445 vtkSetMacro(WrapS,
int);
459 vtkGetMacro(WrapT,
int);
460 vtkSetMacro(WrapT,
int);
474 vtkGetMacro(WrapR,
int);
475 vtkSetMacro(WrapR,
int);
492 vtkGetMacro(MinificationFilter,
int);
493 vtkSetMacro(MinificationFilter,
int);
504 vtkGetMacro(MagnificationFilter,
int);
505 vtkSetMacro(MagnificationFilter,
int);
522 vtkSetVector4Macro(BorderColor,
float);
523 vtkGetVector4Macro(BorderColor,
float);
531 vtkSetMacro(MinLOD,
float);
532 vtkGetMacro(MinLOD,
float);
540 vtkSetMacro(MaxLOD,
float);
541 vtkGetMacro(MaxLOD,
float);
550 vtkSetMacro(BaseLevel,
int);
551 vtkGetMacro(BaseLevel,
int);
560 vtkSetMacro(MaxLevel,
int);
561 vtkGetMacro(MaxLevel,
int);
575 vtkGetMacro(DepthTextureCompare,
bool);
576 vtkSetMacro(DepthTextureCompare,
bool);
600 vtkGetMacro(DepthTextureCompareFunction,
int);
601 vtkSetMacro(DepthTextureCompareFunction,
int);
610 vtkGetMacro(GenerateMipmap,
bool);
611 vtkSetMacro(GenerateMipmap,
bool);
620 vtkSetMacro(MaximumAnisotropicFiltering,
float);
621 vtkGetMacro(MaximumAnisotropicFiltering,
float);
670 int dstYmin,
int dstXmax,
int dstYmax,
int dstSizeX,
int dstSizeY,
vtkShaderProgram* program,
693 int srcXmin,
int srcYmin,
int dstXmin,
int dstYmin,
int width,
int height);
720 vtkGetMacro(UseSRGBColorSpace,
bool);
721 vtkSetMacro(UseSRGBColorSpace,
bool);
722 vtkBooleanMacro(UseSRGBColorSpace,
bool);
786 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.
unsigned int InternalFormat
bool AllocateDepth(unsigned int width, unsigned int height, int internalFormat)
Create a 2D depth texture but does not initialize its values.
static bool IsSupported(vtkOpenGLRenderWindow *, bool, bool, bool)
Returns if the context supports the required extensions.
void SetContext(vtkOpenGLRenderWindow *)
Get/Set the context.
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].
vtkOpenGLHelper * ShaderProgram
bool IsBound()
Tells if the texture object is bound to the active texture image unit.
void SetInternalFormat(unsigned int glInternalFormat)
int GetDefaultDataType(int vtk_scalar_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)
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 AllocateProxyTexture3D(unsigned int const width, unsigned int const height, unsigned int const depth, int const numComps, int const dataType)
Create a 3D texture using the GL_PROXY_TEXTURE_3D target.
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...
static vtkTextureObject * New()
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)
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)
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.
virtual void ReleaseGraphicsResources(vtkWindow *win)
Deactivate and UnBind the texture.
void SetDataType(unsigned int glType)
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)
~vtkTextureObject() override
unsigned int GetInternalFormat(int vtktype, int numComps, bool shaderSupportsTextureInt)
Get/Set internal format (OpenGL internal format) that should be used.
static bool IsSupported(vtkOpenGLRenderWindow *)
Check for feature support, without any optional features.
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)
static int GetMaximumTextureSize3D(vtkOpenGLRenderWindow *context)
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.
vtkPixelBufferObject * Download(unsigned int target, unsigned int level)
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()
vtkOpenGLRenderWindow * GetContext()
int GetMaximumTextureSize3D()
Overload which uses the internal context to query the maximum 3D texture size.
unsigned int GetDefaultInternalFormat(int vtktype, int numComps, bool shaderSupportsTextureInt)
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)
bool RequireDepthBufferFloat
vtkPixelBufferObject * Download()
This is used to download raw data from the texture into a pixel buffer.
record modification and/or execution time
window superclass for vtkRenderWindow
boost::graph_traits< vtkGraph * >::vertex_descriptor target(boost::graph_traits< vtkGraph * >::edge_descriptor e, vtkGraph *)