.TH "SoVertexAttributeBinding" 3 "Thu May 29 2014" "Version 4.0.0a" "Coin" \" -*- nroff -*- .ad l .nh .SH NAME SoVertexAttributeBinding \- .PP The \fBSoVertexAttributeBinding\fP class is a node for setting up how vertex attributes are mapped to shapes\&. .SH SYNOPSIS .br .PP .PP \fC#include \fP .PP Inherits \fBSoNode\fP\&. .SS "Public Types" .in +1c .ti -1c .RI "enum \fBBinding\fP { \fBOVERALL\fP = SoVertexAttributeBindingElement::OVERALL, \fBPER_VERTEX\fP = SoVertexAttributeBindingElement::PER_VERTEX, \fBPER_VERTEX_INDEXED\fP = SoVertexAttributeBindingElement::PER_VERTEX_INDEXED, \fBDEFAULT\fP = PER_VERTEX_INDEXED }" .br .in -1c .SS "Public Member Functions" .in +1c .ti -1c .RI "virtual \fBSoType\fP \fBgetTypeId\fP (void) const " .br .RI "\fIReturns the type identification of an object derived from a class inheriting \fBSoBase\fP\&. This is used for run-time type checking and 'downward' casting\&. \fP" .ti -1c .RI "\fBSoVertexAttributeBinding\fP (void)" .br .ti -1c .RI "virtual void \fBdoAction\fP (\fBSoAction\fP *action)" .br .ti -1c .RI "virtual void \fBGLRender\fP (\fBSoGLRenderAction\fP *action)" .br .ti -1c .RI "virtual void \fBcallback\fP (\fBSoCallbackAction\fP *action)" .br .ti -1c .RI "virtual void \fBpick\fP (\fBSoPickAction\fP *action)" .br .ti -1c .RI "virtual void \fBgetPrimitiveCount\fP (\fBSoGetPrimitiveCountAction\fP *action)" .br .in -1c .SS "Static Public Member Functions" .in +1c .ti -1c .RI "static \fBSoType\fP \fBgetClassTypeId\fP (void)" .br .ti -1c .RI "static void \fBinitClass\fP (void)" .br .in -1c .SS "Public Attributes" .in +1c .ti -1c .RI "\fBSoSFEnum\fP \fBvalue\fP" .br .in -1c .SS "Protected Member Functions" .in +1c .ti -1c .RI "virtual const \fBSoFieldData\fP * \fBgetFieldData\fP (void) const " .br .ti -1c .RI "virtual \fB~SoVertexAttributeBinding\fP ()" .br .in -1c .SS "Static Protected Member Functions" .in +1c .ti -1c .RI "static const \fBSoFieldData\fP ** \fBgetFieldDataPtr\fP (void)" .br .in -1c .SS "Additional Inherited Members" .SH "Detailed Description" .PP The \fBSoVertexAttributeBinding\fP class is a node for setting up how vertex attributes are mapped to shapes\&. .PP \fBSee also:\fP .RS 4 \fBSoVertexAttribute\fP .RE .PP The material binding specified in nodes of this type decides how the vertex attribute values of \fBSoVertexAttribute\fP nodes are mapped on the builtin geometry shape nodes\&. .PP Here is a simple usage example: .PP .PP .nf #Inventor V2.1 ascii ShaderProgram { shaderObject [ VertexShader { sourceProgram "vertex.glsl" } ] } Coordinate3 { point [ 0 0 0, 1 0 0, 1 1 0 ] } VertexAttributeBinding { value OVERALL } VertexAttribute { typeName "SoMFVec3f" name "color" values [ 1.0 0.0 0.0 ] } IndexedFaceSet { coordIndex [ 0, 1, 2, -1 ] } .fi .PP .PP The vertex shader (vertex\&.glsl): .PP .nf attribute vec3 color; void main(void) { gl_Position = ftransform(); fragcolor = color; } .fi .PP .PP With \fBSoVertexAttributeBinding::value\fP set to \fCPER_VERTEX_INDEXED\fP above, the attribute indices will be taken from the \fBSoIndexedFaceSet::coordIndex\fP field when rendering\&. .PP If \fBSoVertexAttributeBinding::value\fP is set to \fCPER_VERTEX\fP, attributes will be fetched in a monotonically increasing manner from the SoVertexAttribute::value field, starting at index 0\&. .PP If \fBSoVertexAttributeBinding::value\fP is set to \fCOVERALL\fP, the first attribute value from SoVertexAttribute::value will be sent to OpenGL before rendering\&. .PP \fBFILE FORMAT/DEFAULTS:\fP .PP .nf VertexAttributeBinding { value PER_VERTEX_INDEXED } .fi .PP .PP \fBSee also:\fP .RS 4 \fBSoVertexAttribute\fP Be aware that this class is an extension for Coin, and it is not available in the original SGI Open Inventor v2\&.1 API\&. .RE .PP \fBSince:\fP .RS 4 Coin 3\&.0 .RE .PP .SH "Member Enumeration Documentation" .PP .SS "enum \fBSoVertexAttributeBinding::Binding\fP" Enumeration of available types of material binding\&. .PP \fBEnumerator\fP .in +1c .TP \fB\fIOVERALL \fP\fP Apply the same material to the complete shape\&. .TP \fB\fIPER_VERTEX \fP\fP Get a new material from the pool of material values for each polygon, line or point \fIvertex\fP of the shape\&. .PP Attributes are fetched from index 0 and onwards, incrementing the index into the attribute pool by 1 for each new vertex of the shape node\&. .TP \fB\fIPER_VERTEX_INDEXED \fP\fP Get a new attribute from the pool of attribute values for each polygon, line or point \fIvertex\fP of the shape\&. .PP Attributes are fetched by the index value settings of the shape\&. .SH "Constructor & Destructor Documentation" .PP .SS "SoVertexAttributeBinding::SoVertexAttributeBinding (void)" Constructor\&. .SS "SoVertexAttributeBinding::~SoVertexAttributeBinding ()\fC [protected]\fP, \fC [virtual]\fP" Destructor\&. .SH "Member Function Documentation" .PP .SS "\fBSoType\fP SoVertexAttributeBinding::getTypeId (void) const\fC [virtual]\fP" .PP Returns the type identification of an object derived from a class inheriting \fBSoBase\fP\&. This is used for run-time type checking and 'downward' casting\&. Usage example: .PP .PP .nf void foo(SoNode * node) { if (node->getTypeId() == SoFile::getClassTypeId()) { SoFile * filenode = (SoFile *)node; // safe downward cast, knows the type } } .fi .PP .PP For application programmers wanting to extend the library with new nodes, engines, nodekits, draggers or others: this method needs to be overridden in \fIall\fP subclasses\&. This is typically done as part of setting up the full type system for extension classes, which is usually accomplished by using the pre-defined macros available through for instance \fBInventor/nodes/SoSubNode\&.h\fP (SO_NODE_INIT_CLASS and SO_NODE_CONSTRUCTOR for node classes), Inventor/engines/SoSubEngine\&.h (for engine classes) and so on\&. .PP For more information on writing Coin extensions, see the class documentation of the toplevel superclasses for the various class groups\&. .PP Implements \fBSoBase\fP\&. .SS "const \fBSoFieldData\fP * SoVertexAttributeBinding::getFieldData (void) const\fC [protected]\fP, \fC [virtual]\fP" Returns a pointer to the class-wide field data storage object for this instance\&. If no fields are present, returns \fCNULL\fP\&. .PP Reimplemented from \fBSoFieldContainer\fP\&. .SS "void SoVertexAttributeBinding::doAction (\fBSoAction\fP *action)\fC [virtual]\fP" This function performs the typical operation of a node for any action\&. .PP Reimplemented from \fBSoNode\fP\&. .SS "void SoVertexAttributeBinding::GLRender (\fBSoGLRenderAction\fP *action)\fC [virtual]\fP" Action method for the \fBSoGLRenderAction\fP\&. .PP This is called during rendering traversals\&. Nodes influencing the rendering state in any way or who wants to throw geometry primitives at OpenGL overrides this method\&. .PP Reimplemented from \fBSoNode\fP\&. .SS "void SoVertexAttributeBinding::callback (\fBSoCallbackAction\fP *action)\fC [virtual]\fP" Action method for \fBSoCallbackAction\fP\&. .PP Simply updates the state according to how the node behaves for the render action, so the application programmer can use the \fBSoCallbackAction\fP for extracting information about the scene graph\&. .PP Reimplemented from \fBSoNode\fP\&. .SS "void SoVertexAttributeBinding::pick (\fBSoPickAction\fP *action)\fC [virtual]\fP" Action method for \fBSoPickAction\fP\&. .PP Does common processing for \fBSoPickAction\fP \fIaction\fP instances\&. .PP Reimplemented from \fBSoNode\fP\&. .SS "void SoVertexAttributeBinding::getPrimitiveCount (\fBSoGetPrimitiveCountAction\fP *action)\fC [virtual]\fP" Action method for the \fBSoGetPrimitiveCountAction\fP\&. .PP Calculates the number of triangle, line segment and point primitives for the node and adds these to the counters of the \fIaction\fP\&. .PP Nodes influencing how geometry nodes calculates their primitive count also overrides this method to change the relevant state variables\&. .PP Reimplemented from \fBSoNode\fP\&. .SH "Member Data Documentation" .PP .SS "\fBSoSFEnum\fP SoVertexAttributeBinding::value" The attribute binding to use for subsequent shape nodes in the scene graph\&. The default binding is \fBSoVertexAttributeBinding::PER_VERTEX_INDEXED\fP .SH "Author" .PP Generated automatically by Doxygen for Coin from the source code\&.