# Class: Geometry

几何资源，用于定义渲染中的图元数据。

## Table of contents

### Constructors

- constructor

### Accessors

- boundBall
- boundBox
- indexBuffer
- indexData
- vertexBuffer
- vertexData
- vertexLayout

### Methods

- addSubMesh
- getIndiceLength
- getIndiceStart
- getMaterialIndex
- getSubMeshCount
- getVertexLayout
- modifySubMesh
- setBoundBall
- setBoundBox
- uploadIndexBuffer
- uploadVertexBuffer

## Constructors

### constructor

• **new Geometry**(`_scene`, `vertexLayout`, `vBuffer`, `iBuffer`, `indexType?`)

构造一个`Geometry`。

#### Parameters

| Name | Type |
| :------ | :------ |
| `_scene` | [`Scene`](Scene) |
| `vertexLayout` | `default` |
| `vBuffer` | `ArrayBufferView` |
| `iBuffer` | `ArrayBufferView` |
| `indexType` | [`EIndexType`](/miniprogram/dev/reference/xr-frame/api/enums/EIndexType) |

## Accessors

### boundBall

• `get` **boundBall**(): [`BoundBall`](BoundBall)

包围球，只读。

#### Returns

[`BoundBall`](BoundBall)

___

### boundBox

• `get` **boundBox**(): [`BoundBox`](BoundBox)

包围盒，只读。

#### Returns

[`BoundBox`](BoundBox)

___

### indexBuffer

• `get` **indexBuffer**(): `default`

获取IndexBuffer。

#### Returns

`default`

___

### indexData

• `get` **indexData**(): `default`

获取IndexData。
这种类型的索引数据用于合批，只对于开启了`dynamicBatch`的Renderer有效。
注意如果已经获取过`indexBuffer`，将无效。

#### Returns

`default`

___

### vertexBuffer

• `get` **vertexBuffer**(): `default`

获取VertexBuffer。

#### Returns

`default`

___

### vertexData

• `get` **vertexData**(): `default`

获取VertexData。
这种类型的顶点数据用于合批，只对于开启了`dynamicBatch`的Renderer有效。
注意如果已经获取过`vertexBuffer`，将无效。

#### Returns

`default`

___

### vertexLayout

• `get` **vertexLayout**(): `default`

获取VertexLayout。

#### Returns

`default`

## Methods

### addSubMesh

▸ **addSubMesh**(`length`, `offset`, `materialIndex?`): `void`

增加subMesh。

#### Parameters

| Name | Type | Description |
| :------ | :------ | :------ |
| `length` | `number` | 索引长度 |
| `offset` | `number` | 索引起始偏移 |
| `materialIndex?` | `number` | - |

#### Returns

`void`

___

### getIndiceLength

▸ **getIndiceLength**(`subMeshIndex`): `number`

获取指定序号的subMesh的索引长度

#### Parameters

| Name | Type |
| :------ | :------ |
| `subMeshIndex` | `number` |

#### Returns

`number`

索引长度，返回-1代表SubMesh不存在

___

### getIndiceStart

▸ **getIndiceStart**(`subMeshIndex`): `number`

获取指定序号的subMesh的索引起始点

#### Parameters

| Name | Type |
| :------ | :------ |
| `subMeshIndex` | `number` |

#### Returns

`number`

索引起始点,返回-1代表SubMesh不存在

___

### getMaterialIndex

▸ **getMaterialIndex**(`subMeshIndex`): `number`

获取指定序号的subMesh的材质序号

#### Parameters

| Name | Type |
| :------ | :------ |
| `subMeshIndex` | `number` |

#### Returns

`number`

材质序号，返回-1代表subMesh不存在

___

### getSubMeshCount

▸ **getSubMeshCount**(): `number`

获取当前mesh有多少subMesh

#### Returns

`number`

___

### getVertexLayout

▸ **getVertexLayout**(): `default`

获取VertexLayout。

#### Returns

`default`

___

### modifySubMesh

▸ **modifySubMesh**(`subMeshIndex`, `length`, `offset`): `boolean`

修改subMesh。

#### Parameters

| Name | Type | Description |
| :------ | :------ | :------ |
| `subMeshIndex` | `number` | - |
| `length` | `number` | 索引长度 |
| `offset` | `number` | 索引起始偏移 |

#### Returns

`boolean`

___

### setBoundBall

▸ **setBoundBall**(`center`, `radius`): `void`

 动态更新包围球。

#### Parameters

| Name | Type |
| :------ | :------ |
| `center` | [`Vector3`](Vector3) |
| `radius` | `number` |

#### Returns

`void`

___

### setBoundBox

▸ **setBoundBox**(`center`, `size`, `autoUpdateBall?`): `void`

 动态更新包围盒，默认会自动计算包围球。

#### Parameters

| Name | Type | Default value |
| :------ | :------ | :------ |
| `center` | [`Vector3`](Vector3) | `undefined` |
| `size` | [`Vector3`](Vector3) | `undefined` |
| `autoUpdateBall` | `boolean` | `true` |

#### Returns

`void`

___

### uploadIndexBuffer

▸ **uploadIndexBuffer**(`offset`, `buffer`): `void`

更新IndexBuffer。
仅在获取了`indexBuffer`后有效。

#### Parameters

| Name | Type |
| :------ | :------ |
| `offset` | `number` |
| `buffer` | `Uint16Array` \| `Uint32Array` |

#### Returns

`void`

___

### uploadVertexBuffer

▸ **uploadVertexBuffer**(`offset`, `buffer`): `void`

更新VertexBuffer。
仅在获取了`vertexBuffer`后有效。

#### Parameters

| Name | Type |
| :------ | :------ |
| `offset` | `number` |
| `buffer` | `ArrayBufferView` |

#### Returns

`void`
