21 #ifndef vtkShaderProgram_h 22 #define vtkShaderProgram_h 24 #include "vtkRenderingOpenGL2Module.h" 34 class VertexArrayObject;
55 vtkGetObjectMacro(VertexShader,
vtkShader);
63 vtkGetObjectMacro(FragmentShader,
vtkShader);
71 vtkGetObjectMacro(GeometryShader,
vtkShader);
87 vtkGetMacro(Compiled,
bool);
124 void ReleaseGraphicsResources(
vtkWindow *win);
136 bool EnableAttributeArray(
const char *
name);
142 bool DisableAttributeArray(
const char *name);
159 bool UseAttributeArray(
const char *name,
int offset,
size_t stride,
160 int elementType,
int elementTupleSize,
181 bool SetAttributeArray(
const char *name,
const T &array,
185 bool SetUniformi(
const char *name,
int v);
186 bool SetUniformf(
const char *name,
float v);
187 bool SetUniform2i(
const char *name,
const int v[2]);
188 bool SetUniform2f(
const char *name,
const float v[2]);
189 bool SetUniform3f(
const char *name,
const float v[3]);
190 bool SetUniform4f(
const char *name,
const float v[4]);
191 bool SetUniform3uc(
const char *name,
const unsigned char v[3]);
192 bool SetUniform4uc(
const char *name,
const unsigned char v[4]);
193 bool SetUniformMatrix(
const char *name,
vtkMatrix3x3 *v);
194 bool SetUniformMatrix(
const char *name,
vtkMatrix4x4 *v);
195 bool SetUniformMatrix3x3(
const char *name,
float *v);
196 bool SetUniformMatrix4x4(
const char *name,
float *v);
199 bool SetUniform1iv(
const char *name,
const int count,
const int *f);
200 bool SetUniform1fv(
const char *name,
const int count,
const float *f);
201 bool SetUniform2fv(
const char *name,
const int count,
const float (*f)[2]);
202 bool SetUniform3fv(
const char *name,
const int count,
const float (*f)[3]);
203 bool SetUniform4fv(
const char *name,
const int count,
const float (*f)[4]);
204 bool SetUniformMatrix4x4v(
const char *name,
const int count,
float *v);
215 static bool Substitute(
226 bool IsUniformUsed(
const char *);
232 bool IsAttributeUsed(
const char *name);
244 return strcmp(a, b) < 0;
266 bool AttachShader(
const vtkShader *shader);
273 bool DetachShader(
const vtkShader *shader);
278 virtual int CompileShader();
306 bool SetAttributeArrayInternal(
const char *name,
void *buffer,
307 int type,
int tupleSize,
332 friend class VertexArrayObject;
335 int FindAttributeArray(
const char *name);
336 int FindUniform(
const char *name);
abstract base class for most VTK objects
represent and manipulate 4x4 transformation matrices
void PrintSelf(ostream &os, vtkIndent indent) override
Methods invoked by print to print information about the object including superclasses.
vtkTransformFeedback * TransformFeedback
bool isBound() const
Check if the program is currently bound, or not.
unsigned int NumberOfOutputs
manage Shader Programs within a context
The values range across the limits of the numeric type.
std::map< const char *, int, cmp_str > UniformLocs
int GetHandle() const
Get the handle of the shader program.
std::string replace(std::string source, const std::string &search, const std::string &replace, bool all)
void SetMD5Hash(const std::string &hash)
window superclass for vtkRenderWindow
a simple class to control print indentation
vtkShader * GeometryShader
bool operator()(const char *a, const char *b) const
std::string GetMD5Hash() const
Set/Get the md5 hash of this program.
vtkShader * FragmentShader
std::string GetError() const
Get the error message (empty if none) for the shader program.
vtkSetMacro(IgnoreDriverBugs, bool)
When set known driver bugs are ignored during driver feature detection.
NormalizeOption
Options for attribute normalization.
boost::graph_traits< vtkGraph *>::vertex_descriptor source(boost::graph_traits< vtkGraph * >::edge_descriptor e, vtkGraph *)
Vertex or Fragment shader, combined into a ShaderProgram.
std::map< const char *, int, cmp_str > AttributeLocs
vtkBooleanMacro(IgnoreDriverBugs, bool)
When set known driver bugs are ignored during driver feature detection.
static vtkObject * New()
Create an object with Debug turned off, modified time initialized to zero, and reference counting on...
represent and manipulate 3x3 transformation matrices
The ShaderProgram uses one or more Shader objects.