VTK  9.3.20240416
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
93 #ifndef vtkOpenGLTexture_h
94 #define vtkOpenGLTexture_h
95 
96 #include "vtkRenderingOpenGL2Module.h" // For export macro
97 #include "vtkTexture.h"
98 #include "vtkWeakPointer.h" // needed for vtkWeakPointer.
99 
100 VTK_ABI_NAMESPACE_BEGIN
101 class vtkRenderWindow;
102 class vtkTextureObject;
103 
104 class VTKRENDERINGOPENGL2_EXPORT vtkOpenGLTexture : public vtkTexture
105 {
106 public:
108  vtkTypeMacro(vtkOpenGLTexture, vtkTexture);
109  void PrintSelf(ostream& os, vtkIndent indent) override;
110 
116  void Render(vtkRenderer* ren) override;
117 
121  void Load(vtkRenderer*) override;
122 
123  // Descsription:
124  // Clean up after the rendering is complete.
125  void PostRender(vtkRenderer*) override;
126 
134 
138  void CopyTexImage(int x, int y, int width, int height);
139 
141 
144  vtkGetMacro(IsDepthTexture, int);
145  vtkSetMacro(IsDepthTexture, int);
147 
149 
152  vtkGetMacro(TextureType, int);
153  vtkSetMacro(TextureType, int);
155 
156  vtkGetObjectMacro(TextureObject, vtkTextureObject);
158 
162  int GetTextureUnit() override;
163 
170  int IsTranslucent() override;
171 
172 protected:
174  ~vtkOpenGLTexture() override;
175 
177  vtkWeakPointer<vtkRenderWindow> RenderWindow; // RenderWindow used for previous render
178 
181 
184  int PrevBlendParams[4];
185 
186  // used when the texture exceeds the GL limit
187  unsigned char* ResampleToPowerOfTwo(
188  int& xsize, int& ysize, unsigned char* dptr, int bpp, int maxDimGL);
189 
190 private:
191  vtkOpenGLTexture(const vtkOpenGLTexture&) = delete;
192  void operator=(const vtkOpenGLTexture&) = delete;
193 };
194 
195 VTK_ABI_NAMESPACE_END
196 #endif
a simple class to control print indentation
Definition: vtkIndent.h:108
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.
unsigned char * ResampleToPowerOfTwo(int &xsize, int &ysize, unsigned char *dptr, int bpp, int maxDimGL)
int IsTranslucent() override
Is this Texture Translucent? returns false (0) if the texture is either fully opaque or has only full...
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
static vtkOpenGLTexture * New()
create a window for renderers to draw into
abstract specification for renderers
Definition: vtkRenderer.h:172
abstracts an OpenGL texture object.
handles properties associated with a texture map
Definition: vtkTexture.h:167
record modification and/or execution time
Definition: vtkTimeStamp.h:44
window superclass for vtkRenderWindow
Definition: vtkWindow.h:48
@ height
Definition: vtkX3D.h:254