# VertexFormat

#### new Cesium.VertexFormat(options)
Core/VertexFormat.js 25

A vertex format defines what attributes make up a vertex. A VertexFormat can be provided to a `Geometry` to request that certain properties be computed, e.g., just position, position and normal, etc.

Name | Type | Description
--- | --- | ---
`options` | Object | optional An object with boolean properties corresponding to VertexFormat properties as shown in the code example.

##### Example:

    // Create a vertex format with position and 2D texture coordinate attributes.
    var format = new Cesium.VertexFormat({
      position : true,
      st : true
    });

##### See:

- Geometry#attributes
- Packable

### Members

#### static constant Cesium.VertexFormat.ALL : VertexFormat
Core/VertexFormat.js 197

An immutable vertex format with well-known attributes: position, normal, st, tangent, and bitangent.

##### See:

- VertexFormat#position
- VertexFormat#normal
- VertexFormat#st
- VertexFormat#tangent
- VertexFormat#bitangent

#### static constant Cesium.VertexFormat.DEFAULT : VertexFormat
Core/VertexFormat.js 219

An immutable vertex format with position, normal, and st attributes. This is compatible with most appearances and materials; however normal and st attributes are not always required. When this is known in advance, another `VertexFormat` should be used.

##### See:

- VertexFormat#position
- VertexFormat#normal

#### static Cesium.VertexFormat.packedLength : Number
Core/VertexFormat.js 225

The number of elements used to pack the object into an array.

#### static constant Cesium.VertexFormat.POSITION_AND_COLOR : VertexFormat
Core/VertexFormat.js 178

An immutable vertex format with position and color attributes.

##### See:

- VertexFormat#position
- VertexFormat#color

#### static constant Cesium.VertexFormat.POSITION_AND_NORMAL : VertexFormat
Core/VertexFormat.js 125

An immutable vertex format with position and normal attributes. This is compatible with per-instance color appearances like `PerInstanceColorAppearance`.

##### See:

- VertexFormat#position
- VertexFormat#normal

#### static constant Cesium.VertexFormat.POSITION_AND_ST : VertexFormat
Core/VertexFormat.js 162

An immutable vertex format with position and st attributes. This is compatible with `EllipsoidSurfaceAppearance`.

##### See:

- VertexFormat#position
- VertexFormat#st

#### static constant Cesium.VertexFormat.POSITION_NORMAL_AND_ST : VertexFormat
Core/VertexFormat.js 144

An immutable vertex format with position, normal, and st attributes. This is compatible with `MaterialAppearance` when `MaterialAppearance#materialSupport` is `TEXTURED/code>.`

##### See:

- VertexFormat#position
- VertexFormat#normal
- VertexFormat#st

#### static constant Cesium.VertexFormat.POSITION_ONLY : VertexFormat
Core/VertexFormat.js 109

An immutable vertex format with only a position attribute.

##### See:

- VertexFormat#position

#### bitangent : Boolean
Core/VertexFormat.js 74

When `true`, the vertex has a bitangent attribute (normalized), which is used for tangent-space effects like bump mapping.

32-bit floating-point. 3 components per attribute.

Default Value: `false`

#### color : Boolean
Core/VertexFormat.js 98

When `true`, the vertex has an RGB color attribute.

8-bit unsigned byte. 3 components per attribute.

Default Value: `false`

#### normal : Boolean
Core/VertexFormat.js 50

When `true`, the vertex has a normal attribute (normalized), which is commonly used for lighting.

32-bit floating-point. 3 components per attribute.

Default Value: `false`

#### position : Boolean
Core/VertexFormat.js 38

When `true`, the vertex has a 3D position attribute.

64-bit floating-point (for precision). 3 components per attribute.

Default Value: `false`

#### st : Boolean
Core/VertexFormat.js 62

When `true`, the vertex has a 2D texture coordinate attribute.

32-bit floating-point. 2 components per attribute

Default Value: `false`

#### tangent : Boolean
Core/VertexFormat.js 86

When `true`, the vertex has a tangent attribute (normalized), which is used for tangent-space effects like bump mapping.

32-bit floating-point. 3 components per attribute.

Default Value: `false`

### Methods

#### static Cesium.VertexFormat.clone(vertexFormat, result) → VertexFormat
Core/VertexFormat.js 295

Duplicates a VertexFormat instance.

Name | Type | Description
--- | --- | ---
`vertexFormat` | VertexFormat | The vertex format to duplicate.
`result` | VertexFormat | optional The object onto which to store the result.

##### Returns:

The modified result parameter or a new VertexFormat instance if one was not provided. (Returns undefined if vertexFormat is undefined)

#### static Cesium.VertexFormat.pack(value, array, startingIndex) → Array.<Number>
Core/VertexFormat.js 236

Stores the provided instance into the provided array.

Name | Type | Default | Description
--- | --- | --- | ---
`value` | VertexFormat |  | The value to pack.
`array` | Array.<Number> |  | The array to pack into.
`startingIndex` | Number | `0` | optional The index into the array at which to start packing the elements.

##### Returns:

The array that was packed into

#### static Cesium.VertexFormat.unpack(array, startingIndex, result) → VertexFormat
Core/VertexFormat.js 266

Retrieves an instance from a packed array.

Name | Type | Default | Description
--- | --- | --- | ---
`array` | Array.<Number> |  | The packed array.
`startingIndex` | Number | `0` | optional The starting index of the element to be unpacked.
`result` | VertexFormat |  | optional The object into which to store the result.

##### Returns:

The modified result parameter or a new VertexFormat instance if one was not provided.