# GeometryAttribute

#### new Cesium.GeometryAttribute(options)
Core/GeometryAttribute.js 47

  Values and type information for geometry attributes. A `Geometry` generally contains one or more attributes. All attributes together form the geometry's vertices.

  Name | Type | Description
  --- | --- | ---

  `options`

  Object

  optional Object with the following properties:

  Name | Type | Default | Description
  --- | --- | --- | ---
  `componentDatatype` | ComponentDatatype |  | optional The datatype of each component in the attribute, e.g., individual elements in values.
  `componentsPerAttribute` | Number |  | optional A number between 1 and 4 that defines the number of components in an attributes.
  `normalize` | Boolean | `false` | optional When `true` and `componentDatatype` is an integer format, indicate that the components should be mapped to the range [0, 1] (unsigned) or [-1, 1] (signed) when they are accessed as floating-point for rendering.
  `values` | TypedArray |  | optional The values for the attributes stored in a typed array.

  ##### Throws:

  - DeveloperError : options.componentsPerAttribute must be between 1 and 4.

  ##### Example:

      var geometry = new Cesium.Geometry({
        attributes : {
          position : new Cesium.GeometryAttribute({
            componentDatatype : Cesium.ComponentDatatype.FLOAT,
            componentsPerAttribute : 3,
            values : new Float32Array([
              0.0, 0.0, 0.0,
              7500000.0, 0.0, 0.0,
              0.0, 7500000.0, 0.0
            ])
          })
        },
        primitiveType : Cesium.PrimitiveType.LINE_LOOP
      });

  ##### See:

  - Geometry

### Members

#### componentDatatype : ComponentDatatype
Core/GeometryAttribute.js 73

  The datatype of each component in the attribute, e.g., individual elements in `GeometryAttribute#values`.
  Default Value: `undefined`

#### componentsPerAttribute : Number
Core/GeometryAttribute.js 93

  A number between 1 and 4 that defines the number of components in an attributes. For example, a position attribute with x, y, and z components would have 3 as shown in the code example.
  Default Value: `undefined`

  ##### Example:

      attribute.componentDatatype = Cesium.ComponentDatatype.FLOAT;
      attribute.componentsPerAttribute = 3;
      attribute.values = new Float32Array([
        0.0, 0.0, 0.0,
        7500000.0, 0.0, 0.0,
        0.0, 7500000.0, 0.0
      ]);

#### normalize : Boolean
Core/GeometryAttribute.js 118

  When `true` and `componentDatatype` is an integer format, indicate that the components should be mapped to the range [0, 1] (unsigned) or [-1, 1] (signed) when they are accessed as floating-point for rendering.

  This is commonly used when storing colors using `ComponentDatatype.UNSIGNED_BYTE`.

  Default Value: `false`

  ##### Example:

      attribute.componentDatatype = Cesium.ComponentDatatype.UNSIGNED_BYTE;
      attribute.componentsPerAttribute = 4;
      attribute.normalize = true;
      attribute.values = new Uint8Array([
        Cesium.Color.floatToByte(color.red),
        Cesium.Color.floatToByte(color.green),
        Cesium.Color.floatToByte(color.blue),
        Cesium.Color.floatToByte(color.alpha)
      ]);

#### values : TypedArray
Core/GeometryAttribute.js 138

  The values for the attributes stored in a typed array. In the code example, every three elements in `values` defines one attributes since `componentsPerAttribute` is 3.
  Default Value: `undefined`

  ##### Example:

      attribute.componentDatatype = Cesium.ComponentDatatype.FLOAT;
      attribute.componentsPerAttribute = 3;
      attribute.values = new Float32Array([
        0.0, 0.0, 0.0,
        7500000.0, 0.0, 0.0,
        0.0, 7500000.0, 0.0
      ]);