VTK  9.3.0
vtkOpenGLTexture.h
Go to the documentation of this file.
1// SPDX-FileCopyrightText: Copyright (c) Ken Martin, Will Schroeder, Bill Lorensen
2// SPDX-License-Identifier: BSD-3-Clause
23#ifndef vtkOpenGLTexture_h
24#define vtkOpenGLTexture_h
25
26#include "vtkRenderingOpenGL2Module.h" // For export macro
27#include "vtkTexture.h"
28#include "vtkWeakPointer.h" // needed for vtkWeakPointer.
29
30VTK_ABI_NAMESPACE_BEGIN
31class vtkRenderWindow;
33
34class VTKRENDERINGOPENGL2_EXPORT vtkOpenGLTexture : public vtkTexture
35{
36public:
39 void PrintSelf(ostream& os, vtkIndent indent) override;
40
46 void Render(vtkRenderer* ren) override;
47
51 void Load(vtkRenderer*) override;
52
53 // Descsription:
54 // Clean up after the rendering is complete.
55 void PostRender(vtkRenderer*) override;
56
64
68 void CopyTexImage(int x, int y, int width, int height);
69
71
74 vtkGetMacro(IsDepthTexture, int);
75 vtkSetMacro(IsDepthTexture, int);
77
79
82 vtkGetMacro(TextureType, int);
83 vtkSetMacro(TextureType, int);
85
86 vtkGetObjectMacro(TextureObject, vtkTextureObject);
88
92 int GetTextureUnit() override;
93
100 int IsTranslucent() override;
101
102protected:
105
107 vtkWeakPointer<vtkRenderWindow> RenderWindow; // RenderWindow used for previous render
108
111
114 int PrevBlendParams[4];
115
116 // used when the texture exceeds the GL limit
117 unsigned char* ResampleToPowerOfTwo(
118 int& xsize, int& ysize, unsigned char* dptr, int bpp, int maxDimGL);
119
120private:
121 vtkOpenGLTexture(const vtkOpenGLTexture&) = delete;
122 void operator=(const vtkOpenGLTexture&) = delete;
123};
124
125VTK_ABI_NAMESPACE_END
126#endif
a simple class to control print indentation
Definition vtkIndent.h:38
OpenGL texture map.
void Load(vtkRenderer *) override
Implement base class method.
int GetTextureUnit() override
Return the texture unit used for this texture.
void CopyTexImage(int x, int y, int width, int height)
copy the renderers read buffer into this texture
void PrintSelf(ostream &os, vtkIndent indent) override
Methods invoked by print to print information about the object including superclasses.
void ReleaseGraphicsResources(vtkWindow *) override
Release any graphics resources that are being consumed by this texture.
int IsTranslucent() override
Is this Texture Translucent? returns false (0) if the texture is either fully opaque or has only full...
unsigned char * ResampleToPowerOfTwo(int &xsize, int &ysize, unsigned char *dptr, int bpp, int maxDimGL)
static vtkOpenGLTexture * New()
void PostRender(vtkRenderer *) override
Cleans up after the texture rendering to restore the state of the graphics context.
void SetTextureObject(vtkTextureObject *)
void Render(vtkRenderer *ren) override
Renders a texture map.
vtkWeakPointer< vtkRenderWindow > RenderWindow
~vtkOpenGLTexture() override
vtkTextureObject * TextureObject
vtkTimeStamp LoadTime
create a window for renderers to draw into
abstract specification for renderers
Definition vtkRenderer.h:68
abstracts an OpenGL texture object.
handles properties associated with a texture map
Definition vtkTexture.h:67
record modification and/or execution time
a weak reference to a vtkObject.
window superclass for vtkRenderWindow
Definition vtkWindow.h:34