VTK  9.1.0
vtkOpenGLUniforms.h
Go to the documentation of this file.
1/*=========================================================================
2
3 Program: Visualization Toolkit
4
5 Copyright (c) Ken Martin, Will Schroeder, Bill Lorensen
6 All rights reserved.
7 See Copyright.txt or http://www.kitware.com/Copyright.htm for details.
8
9 This software is distributed WITHOUT ANY WARRANTY; without even
10 the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
11 PURPOSE. See the above copyright notice for more information.
12
13=========================================================================*/
31#ifndef vtkOpenGLUniforms_h
32#define vtkOpenGLUniforms_h
33
34#include "vtkRenderingOpenGL2Module.h" // For export macro
35#include "vtkUniforms.h"
36#include <string> // For member functions
37
38class vtkUniformInternals;
40
41class VTKRENDERINGOPENGL2_EXPORT vtkOpenGLUniforms : public vtkUniforms
42{
43public:
46 void PrintSelf(ostream& os, vtkIndent indent) override;
47
51 std::string GetDeclarations();
52
57
64
66 void RemoveUniform(const char* name) override;
67
69 void RemoveAllUniforms() override;
70
72
76 void SetUniform(const char* name, vtkUniforms::TupleType tt, int nbComponents,
77 const std::vector<int>& value) override;
78 void SetUniform(const char* name, vtkUniforms::TupleType tt, int nbComponents,
79 const std::vector<float>& value) override;
80 bool GetUniform(const char* name, std::vector<int>& value) override;
81 bool GetUniform(const char* name, std::vector<float>& value) override;
83
85
86 void SetUniformi(const char* name, int v) override;
87 void SetUniformf(const char* name, float v) override;
88 void SetUniform2i(const char* name, const int v[2]) override;
89 void SetUniform2f(const char* name, const float v[2]) override;
90 void SetUniform3f(const char* name, const float v[3]) override;
91 void SetUniform4f(const char* name, const float v[4]) override;
92 void SetUniformMatrix3x3(const char* name, float* v) override;
93 void SetUniformMatrix4x4(const char* name, float* v) override;
95
97
98 void SetUniform1iv(const char* name, const int count, const int* f) override;
99 void SetUniform1fv(const char* name, const int count, const float* f) override;
100 void SetUniform2fv(const char* name, const int count, const float (*f)[2]) override;
101 void SetUniform3fv(const char* name, const int count, const float (*f)[3]) override;
102 void SetUniform4fv(const char* name, const int count, const float (*f)[4]) override;
103 void SetUniformMatrix4x4v(const char* name, const int count, float* v) override;
105
107
111 void SetUniform3f(const char* name, const double v[3]) override;
112 void SetUniform3uc(const char* name, const unsigned char v[3]) override; // maybe remove
113 void SetUniform4uc(const char* name, const unsigned char v[4]) override; // maybe remove
114 void SetUniformMatrix(const char* name, vtkMatrix3x3* v) override;
115 void SetUniformMatrix(const char* name, vtkMatrix4x4* v) override;
117
119
120 bool GetUniformi(const char* name, int& v) override;
121 bool GetUniformf(const char* name, float& v) override;
122 bool GetUniform2i(const char* name, int v[2]) override;
123 bool GetUniform2f(const char* name, float v[2]) override;
124 bool GetUniform3f(const char* name, float v[3]) override;
125 bool GetUniform4f(const char* name, float v[4]) override;
126 bool GetUniformMatrix3x3(const char* name, float* v) override;
127 bool GetUniformMatrix4x4(const char* name, float* v) override;
129
131
135 bool GetUniform3f(const char* name, double v[3]) override;
136 bool GetUniform3uc(const char* name, unsigned char v[3]) override;
137 bool GetUniform4uc(const char* name, unsigned char v[4]) override;
138 bool GetUniformMatrix(const char* name, vtkMatrix3x3* v) override;
139 bool GetUniformMatrix(const char* name, vtkMatrix4x4* v) override;
141
143
144 bool GetUniform1iv(const char* name, std::vector<int>& f) override;
145 bool GetUniform1fv(const char* name, std::vector<float>& f) override;
146 bool GetUniform2fv(const char* name, std::vector<float>& f) override;
147 bool GetUniform3fv(const char* name, std::vector<float>& f) override;
148 bool GetUniform4fv(const char* name, std::vector<float>& f) override;
149 bool GetUniformMatrix4x4v(const char* name, std::vector<float>& f) override;
151
153 int GetNumberOfUniforms() override;
154
157 const char* GetNthUniformName(vtkIdType uniformIndex) override;
158
160 int GetUniformScalarType(const char* name) override;
161
164 TupleType GetUniformTupleType(const char* name) override;
165
169 int GetUniformNumberOfComponents(const char* name) override;
170
173 int GetUniformNumberOfTuples(const char* name) override;
174
175protected:
178
179private:
180 vtkOpenGLUniforms(const vtkOpenGLUniforms&) = delete;
181 void operator=(const vtkOpenGLUniforms&) = delete;
182
183 vtkUniformInternals* Internals;
184};
185
186#endif
a simple class to control print indentation
Definition: vtkIndent.h:113
represent and manipulate 3x3 transformation matrices
Definition: vtkMatrix3x3.h:63
represent and manipulate 4x4 transformation matrices
Definition: vtkMatrix4x4.h:145
helper class to set custom uniform variables in GLSL shaders.
void SetUniform4f(const char *name, const float v[4]) override
Set the name uniform value to v.
bool GetUniform4uc(const char *name, unsigned char v[4]) override
Get the name uniform to v.
static vtkOpenGLUniforms * New()
bool GetUniformMatrix(const char *name, vtkMatrix4x4 *v) override
Get the name uniform to v.
bool GetUniformf(const char *name, float &v) override
Get the name uniform value.
void SetUniform2f(const char *name, const float v[2]) override
Set the name uniform value to v.
void SetUniform4uc(const char *name, const unsigned char v[4]) override
Set the name uniform to v.
bool GetUniformMatrix3x3(const char *name, float *v) override
Get the name uniform value.
bool GetUniform2f(const char *name, float v[2]) override
Get the name uniform value.
bool GetUniformMatrix4x4v(const char *name, std::vector< float > &f) override
Get the name uniform vector to f with.
bool GetUniform4fv(const char *name, std::vector< float > &f) override
Get the name uniform vector to f with.
bool GetUniform3f(const char *name, float v[3]) override
Get the name uniform value.
void SetUniform2fv(const char *name, const int count, const float(*f)[2]) override
Set the name uniform array to f with count elements.
bool GetUniform(const char *name, std::vector< int > &value) override
Generic setters and getter.
std::string GetDeclarations()
Build a string containing the GLSL declaration of all stored uniform variables.
void SetUniformMatrix4x4(const char *name, float *v) override
Set the name uniform value to v.
bool GetUniformMatrix4x4(const char *name, float *v) override
Get the name uniform value.
bool SetUniforms(vtkShaderProgram *p)
Set all the stored uniform variables values in the shader program p.
int GetUniformNumberOfComponents(const char *name) override
Get the number of components stored in each tuple of uniform name.
void SetUniform(const char *name, vtkUniforms::TupleType tt, int nbComponents, const std::vector< float > &value) override
Generic setters and getter.
bool GetUniformMatrix(const char *name, vtkMatrix3x3 *v) override
Get the name uniform to v.
bool GetUniform3f(const char *name, double v[3]) override
Get the name uniform to v.
void SetUniform2i(const char *name, const int v[2]) override
Set the name uniform value to v.
bool GetUniform3uc(const char *name, unsigned char v[3]) override
Get the name uniform to v.
void SetUniform3fv(const char *name, const int count, const float(*f)[3]) override
Set the name uniform array to f with count elements.
int GetNumberOfUniforms() override
Get number of all uniforms stored in this class.
bool GetUniform2fv(const char *name, std::vector< float > &f) override
Get the name uniform vector to f with.
void SetUniformf(const char *name, float v) override
Set the name uniform value to v.
bool GetUniform(const char *name, std::vector< float > &value) override
Generic setters and getter.
void SetUniformMatrix4x4v(const char *name, const int count, float *v) override
Set the name uniform array to f with count elements.
void SetUniform1iv(const char *name, const int count, const int *f) override
Set the name uniform array to f with count elements.
bool GetUniform1iv(const char *name, std::vector< int > &f) override
Get the name uniform vector to f with.
TupleType GetUniformTupleType(const char *name) override
Get the tuple type stored in uniform name.
void RemoveAllUniforms() override
Remove all uniform variables.
bool GetUniform2i(const char *name, int v[2]) override
Get the name uniform value.
void SetUniform3f(const char *name, const float v[3]) override
Set the name uniform value to v.
void SetUniformi(const char *name, int v) override
Set the name uniform value to v.
void RemoveUniform(const char *name) override
Remove uniform variable named name.
bool GetUniform4f(const char *name, float v[4]) override
Get the name uniform value.
~vtkOpenGLUniforms() override
int GetUniformScalarType(const char *name) override
Get type of scalars stored in uniform name.
void SetUniform4fv(const char *name, const int count, const float(*f)[4]) override
Set the name uniform array to f with count elements.
bool GetUniform1fv(const char *name, std::vector< float > &f) override
Get the name uniform vector to f with.
vtkMTimeType GetUniformListMTime() override
Get modified time of the list of uniform variables, which is typically used to check whether the shad...
void SetUniform(const char *name, vtkUniforms::TupleType tt, int nbComponents, const std::vector< int > &value) override
Generic setters and getter.
void SetUniform1fv(const char *name, const int count, const float *f) override
Set the name uniform array to f with count elements.
bool GetUniformi(const char *name, int &v) override
Get the name uniform value.
void SetUniformMatrix(const char *name, vtkMatrix4x4 *v) override
Set the name uniform to v.
bool GetUniform3fv(const char *name, std::vector< float > &f) override
Get the name uniform vector to f with.
int GetUniformNumberOfTuples(const char *name) override
Get length of a uniform name that contains a variable-size vector.
void SetUniform3f(const char *name, const double v[3]) override
Set the name uniform to v.
void PrintSelf(ostream &os, vtkIndent indent) override
Methods invoked by print to print information about the object including superclasses.
void SetUniformMatrix3x3(const char *name, float *v) override
Set the name uniform value to v.
const char * GetNthUniformName(vtkIdType uniformIndex) override
Get number of all uniforms stored in this class.
void SetUniformMatrix(const char *name, vtkMatrix3x3 *v) override
Set the name uniform to v.
void SetUniform3uc(const char *name, const unsigned char v[3]) override
Set the name uniform to v.
The ShaderProgram uses one or more Shader objects.
helper class to set custom uniform variables in GPU shaders.
Definition: vtkUniforms.h:43
TupleType
Types of tuples that can be stored : scalar, vector, matrix.
Definition: vtkUniforms.h:57
int vtkIdType
Definition: vtkType.h:332
vtkTypeUInt32 vtkMTimeType
Definition: vtkType.h:287