Man Linux: Main Page and Category List

NAME

       SoVertexAttribute -

       A generic node for providing GL vertex attributes of various types.

SYNOPSIS

       #include <Inventor/nodes/SoVertexAttribute.h>

       Inherits SoNode.

       Inherited by SoAnyVertexAttribute< Type >.

   Public Member Functions
       virtual SoType getTypeId (void) const
       SoMField * getValuesField (void) const
       virtual void doAction (SoAction *action)
       virtual void GLRender (SoGLRenderAction *action)
       virtual void write (SoWriteAction *action)
       virtual void copyContents (const SoFieldContainer *from, SbBool
           copyconnections)
       virtual void notify (SoNotList *l)

   Static Public Member Functions
       static void initClass (void)
       static SoType getClassTypeId (void)

   Public Attributes
       SoSFName name
       SoSFName typeName

   Protected Member Functions
       virtual SbBool readInstance (SoInput *in, unsigned short flags)

Detailed Description

       A generic node for providing GL vertex attributes of various types.

       The SoVertexAttribute nodes is used with the SoShaderProgram node to
       send vertex attributes to the vertex shader.

         #Inventor V2.1 ascii

         Separator {
            ShaderProgram {
               shaderObject [
                             VertexShader {
                                sourceProgram "vertex.glsl"
                             }
                          ]
            }

            Coordinate3 {
               point [ 0 0 0, 1 0 0, 1 1 0 ]
            }

            VertexAttribute {
               typeName "SoMFVec3f"
               name "color"
               values [ 1.0 0.0 0.0,
                        0.0 1.0 0.0,
                        0.0 0.0 1.0 ]
            }

            IndexedFaceSet {
               coordIndex [ 0, 1, 2, -1 ]
            }
         }
         .fi

       The vertex shader (vertex.glsl)

         attribute vec3 color;

         void main(void)
         {
           gl_Position = ftransform();
           gl_FrontColor = vec4(color, 1.0);
         }

       See also:
           SoVertexAttributeBinding

       Be aware that this class is an extension for Coin, and it is not
       available in the original SGI Open Inventor v2.1 API.

       Since:
           Coin 3.0

Member Function Documentation

   void SoVertexAttribute::initClass (void) [static] Sets up initialization
       for data common to all instances of this class, like submitting
       necessary information to the Coin type system.
       Reimplemented from SoNode.

   SoType SoVertexAttribute::getClassTypeId (void) [static] This static method
       returns the SoType object associated with objects of this class.
       Reimplemented from SoNode.

   SoType SoVertexAttribute::getTypeId (void) const [virtual] Returns the type
       identification of an object derived from a class inheriting SoBase.
       This is used for run-time type checking anddownwardcasting.
       Usage example:

         void foo(SoNode * node)
         {
           if (node->getTypeId() == SoFile::getClassTypeId()) {
             SoFile * filenode = (SoFile *)node;  // safe downward cast, knows the type
           }
         }

       For application programmers wanting to extend the library with new
       nodes, engines, nodekits, draggers or others: this method needs to be
       overridden in all 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 Inventor/nodes/SoSubNode.h (SO_NODE_INIT_CLASS and
       SO_NODE_CONSTRUCTOR for node classes), Inventor/engines/SoSubEngine.h
       (for engine classes) and so on.

       For more information on writing Coin extensions, see the class
       documentation of the toplevel superclasses for the various class
       groups.

       Implements SoBase.

   void SoVertexAttribute::doAction (SoAction * action) [virtual] This
       function performs the typical operation of a node for any action.
       Reimplemented from SoNode.

   void SoVertexAttribute::GLRender (SoGLRenderAction * action) [virtual]
       Action method for the SoGLRenderAction.
       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.

       Reimplemented from SoNode.

   void SoVertexAttribute::write (SoWriteAction * action) [virtual] Action
       method for SoWriteAction.
       Writes out a node object, and any connected nodes, engines etc, if
       necessary.

       Reimplemented from SoNode.

   void SoVertexAttribute::copyContents (const SoFieldContainer * from, SbBool
       copyconnections) [virtual] Makes a deep copy of all data of from into
       this instance, except external scenegraph references if copyconnections
       is FALSE.
       This is the protected method that should be overridden by extension
       node / engine / dragger / whatever subclasses which needs to account
       for internal data that are not handled automatically.

       For copying nodes from application code, you should not invoke this
       function directly, but rather call the SoNode::copy() function:

         SoNode * mynewnode = templatenode->copy();

       The same also goes for engines.

       Make sure that when you override the copyContents() method in your
       extension class that you also make it call upwards to it’s parent
       superclass in the inheritance hierarchy, as copyContents() in for
       instance SoNode and SoFieldContainer does important work. It should go
       something like this:

         void
         MyCoinExtensionNode::copyContents(const SoFieldContainer * from,
                                           SbBool copyconnections)
         {
           // let parent superclasses do their thing (copy fields, copy
           // instance name, etc etc)
           SoNode::copyContents(from, copyconnections);

           // [..then copy internal data..]
         }

       Reimplemented from SoNode.

   void SoVertexAttribute::notify (SoNotList * l) [virtual] Notifies all
       auditors for this instance when changes are made.
       Reimplemented from SoNode.

   SbBool SoVertexAttribute::readInstance (SoInput * in, unsigned short flags)
       [protected, virtual] This method is mainly intended for internal use
       during file import operations.
       It reads a definition of an instance from the input stream in. The
       input stream state points to the start of a serialized / persistant
       representation of an instance of this class type.

       TRUE or FALSE is returned, depending on if the instantiation and
       configuration of the new object of this class type went ok or not. The
       import process should be robust and handle corrupted input streams by
       returning FALSE.

       flags is used internally during binary import when reading user
       extension nodes, group nodes or engines.

       Reimplemented from SoNode.

Author

       Generated automatically by Doxygen for Coin from the source code.