Abstract base class for all uniform shader parameter nodes. More...
#include <Inventor/nodes/SoShaderParameter.h>
Public Types | |
enum | ShaderType { VERTEX, FRAGMENT } |
Public Member Functions | |
virtual SoType | getTypeId () const |
virtual bool | isEqual (const SoUniformShaderParameter *param) const =0 |
Static Public Member Functions | |
static SoType | getClassTypeId () |
Public Attributes | |
SoSFEnum SoDEPRECATED | shaderType |
This is the abstract class from which all the uniform shader parameter nodes, e.g. SoShaderParameter1i, are derived.
These nodes allow users to provide uniform parameters to a given shader object, e.g. SoFragmentShader.
Uniform shader parameter nodes are usually added to the shader object's parameter field to affect only that specific shader program. They can also be inserted in the scene graph after an SoShaderProgram. In this case they affect whatever shader program is in effect when a shape is rendered.
Each parameter is defined by the following properties:
See the base class SoShaderParameter to get information about how to specify the name and/or identifier of a parameter.
The following examples show how to set a parameter named "scale" in two different ways.
SoShaderParameter3f *parameterNode = new SoShaderParameter3f(); parameterNode->name = "scale"; parameterNode->value.setValue(2,2,2); SoVertexShader* vertexShader = new SoVertexShader(); vertexShader->sourceProgram = "filename.glsl"; vertexShader->parameter.set1Value( 0, parameterNode ); // Affects this shader SoShaderProgram* shaderProgram = new SoShaderProgram(); shaderProgram->shaderObject.set1Value( 0, vertexShader ); root->addChild(shaderProgram);
SoShaderParameter3f *parameterNode = new SoShaderParameter3f(); parameterNode->name = "scale"; parameterNode->value.setValue(2,2,2); root->addChild( parameterNode ); // Affects all subsequent shaders SoVertexShader* vertexShader = new SoVertexShader(); vertexShader->sourceProgram = "filename.glsl"; SoShaderProgram* shaderProgram = new SoShaderProgram(); shaderProgram->shaderObject.set1Value( 0, vertexShader ); root->addChild(shaderProgram);
SoShaderParameter, SoVertexShaderParameter, SoShaderParameter1f, SoShaderParameter1i, SoShaderParameter2f, SoShaderParameter2i, SoShaderParameter3f, SoShaderParameter3i, SoShaderParameter4f, SoShaderParameter4i, SoShaderParameterArray1f, SoShaderParameterArray1i, SoShaderParameterArray2f, SoShaderParameterArray2i, SoShaderParameterArray3f, SoShaderParameterArray3i, SoShaderParameterArray4f, SoShaderParameterArray4i, SoShaderParameterMatrix, SoShaderParameterMatrixArray, SoShaderStateMatrixParameter, SoShaderObject, SoShaderProgram.
Shader language.
static SoType SoUniformShaderParameter::getClassTypeId | ( | ) | [static] |
Returns the type identifier for this class.
Reimplemented from SoShaderParameter.
Reimplemented in SoShaderParameter1f, SoShaderParameter1i, SoShaderParameter2f, SoShaderParameter2i, SoShaderParameter3f, SoShaderParameter3i, SoShaderParameter4f, SoShaderParameter4i, SoShaderParameterArray1f, SoShaderParameterArray1i, SoShaderParameterArray2f, SoShaderParameterArray2i, SoShaderParameterArray3f, SoShaderParameterArray3i, SoShaderParameterArray4f, SoShaderParameterArray4i, SoShaderParameterMatrix, SoShaderParameterMatrixArray, SoShaderStateMatrixParameter, and SoShaderParameterStruct.
virtual SoType SoUniformShaderParameter::getTypeId | ( | ) | const [virtual] |
Returns the type identifier for this specific instance.
Reimplemented from SoShaderParameter.
Reimplemented in SoShaderParameter1f, SoShaderParameter1i, SoShaderParameter2f, SoShaderParameter2i, SoShaderParameter3f, SoShaderParameter3i, SoShaderParameter4f, SoShaderParameter4i, SoShaderParameterArray1f, SoShaderParameterArray1i, SoShaderParameterArray2f, SoShaderParameterArray2i, SoShaderParameterArray3f, SoShaderParameterArray3i, SoShaderParameterArray4f, SoShaderParameterArray4i, SoShaderParameterMatrix, SoShaderParameterMatrixArray, SoShaderStateMatrixParameter, and SoShaderParameterStruct.
virtual bool SoUniformShaderParameter::isEqual | ( | const SoUniformShaderParameter * | param | ) | const [pure virtual] |
SoSFEnum SoDEPRECATED SoUniformShaderParameter::shaderType |
ARB and CG shaders allow a vertex and a shader program to use the same name for a parameter.
When the SoShaderParameter is inserted in the scene graph, this field allows you to specify if this parameter applies to the vertex shader or the fragment shader. It has no effect on GLSL shaders. Use enum ShaderType. Default is VERTEX.
NOTE: field available since Open Inventor 6.0