## javax.media.j3d
Class ShaderAttributeObject

    java.lang.Object
      javax.media.j3d.SceneGraphObject
          javax.media.j3d.NodeComponent
              javax.media.j3d.ShaderAttribute
                  javax.media.j3d.ShaderAttributeObject

Direct Known Subclasses:
  ShaderAttributeArray, ShaderAttributeValue

    public abstract class ShaderAttributeObject

extends ShaderAttribute

The ShaderAttributeObject class is an abstract class that encapsulates a uniform shader attribute whose value is specified explicitly. This class has concrete subclasses for single-value attributes (ShaderAttributeValue) and array attributes (ShaderAttributeArray). The shader variable `attrName` is explicitly set to the specified `value` during rendering. `attrName` must be the name of a valid uniform attribute in the shader in which it is used. Otherwise, the attribute name will be ignored and a runtime error may be generated. The `value` must be an instance of one of the allowed classes or an array of one the allowed classes. The allowed classes are: `Integer`, `Float`, `Tuple{2,3,4}{i,f}`, `Matrix{3,4}f`. A ClassCastException will be thrown if a specified `value` object is not one of the allowed types. Further, the type of the value is immutable once a ShaderAttributeObject is constructed. Subsequent setValue operations must be called with an object of the same type as the one that was used to construct the ShaderAttributeObject. Finally, the type of the `value` object must match the type of the corresponding `attrName` variable in the shader in which it is used. Otherwise, the shader will not be able to use the attribute and a runtime error may be generated.

Since:
  Java 3D 1.4
See Also:
  `ShaderAttributeSet`, `ShaderProgram`

Field Summary
`static int` `ALLOW_VALUE_READ` Specifies that this ShaderAttributeObject allows reading its value.
`static int` `ALLOW_VALUE_WRITE` Specifies that this ShaderAttributeObject allows writing its value.

Method Summary
`abstract java.lang.Object` `getValue()` Retrieves the value of this shader attribute.
`java.lang.Class` `getValueClass()` Retrieves the base class of the value of this shader attribute.
`abstract void` `setValue(java.lang.Object value)` Sets the value of this shader attribute to the specified value.

Methods inherited from class javax.media.j3d.ShaderAttribute
`getAttributeName`

Methods inherited from class javax.media.j3d.NodeComponent
`cloneNodeComponent, cloneNodeComponent, duplicateNodeComponent, duplicateNodeComponent, getDuplicateOnCloneTree, setDuplicateOnCloneTree`

Methods inherited from class javax.media.j3d.SceneGraphObject
`clearCapability, clearCapabilityIsFrequent, duplicateSceneGraphObject, getCapability, getCapabilityIsFrequent, getName, getUserData, isCompiled, isLive, setCapability, setCapabilityIsFrequent, setName, setUserData, toString, updateNodeReferences`

Methods inherited from class java.lang.Object
`clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait`

Field Detail

### ALLOW_VALUE_READ

    public static final int ALLOW_VALUE_READ

  Specifies that this ShaderAttributeObject allows reading its value.

  See Also:
    Constant Field Values

### ALLOW_VALUE_WRITE

    public static final int ALLOW_VALUE_WRITE

  Specifies that this ShaderAttributeObject allows writing its value.

  See Also:
    Constant Field Values

Method Detail

### getValue

    public abstract java.lang.Object getValue()

  Retrieves the value of this shader attribute. A copy of the object is returned.

  Returns:
    a copy of the value of this shader attribute
  Throws:
    `CapabilityNotSetException` - if appropriate capability is not set and this object is part of live or compiled scene graph

### setValue

    public abstract void setValue(java.lang.Object value)

  Sets the value of this shader attribute to the specified value. A copy of the object is stored.

  Parameters:
    `value` - the new value of the shader attribute
  Throws:
    `java.lang.NullPointerException` - if value is null
    `java.lang.ClassCastException` - if value is not an instance of the same base class as the object used to construct this shader attribute object.
    `CapabilityNotSetException` - if appropriate capability is not set and this object is part of live or compiled scene graph

### getValueClass

    public java.lang.Class getValueClass()

  Retrieves the base class of the value of this shader attribute. This class will always be one of the allowable classes, even if a subclass was used to construct this shader attribute object. For example, if this shader attribute object was constructed with an instance of `javax.vecmath.Point3f`, the returned class would be `javax.vecmath.Tuple3f`.

  Returns:
    the base class of the value of this shader attribute
  Throws:
    `CapabilityNotSetException` - if appropriate capability is not set and this object is part of live or compiled scene graph

Copyright 1996-2008 Sun Microsystems, Inc. All Rights Reserved. Use is subject to license terms.