GLBufferAttribute - Руководство по Вердж3Д - Софт Эйт Софт
Description: Узнайте как использовать GLBufferAttribute в интерактивных 3Д-веб-приложениях сделанных на Вердж3Д

# GLBufferAttribute

Этот класс не создает буфер VBO. Вместо этого он использует VBO, который передается в конструкторе и может быть изменен с помощью свойства `buffer`.

Вместе с VBO необходимо передать дополнительные параметры. К ним относятся: контекст GL, тип данных GL, количество компонентов на вершину, количество байт на компонент и количество вершин.

Наиболее распространенный случай использования этого класса — реализация GPGPU-вычислений.

## Конструктор

### GLBufferAttribute(buffer : WebGLBuffer, type : GLenum, itemSize : Integer, elementSize : Integer, count : Integer)

`buffer`
  Должен быть экземпляром WebGLBuffer.
`type`
  Одна из констант WebGL Data Types.
`itemSize`
  Количество значений массива, которые должны быть связаны с конкретной вершиной. Например, если этот атрибут хранит трехкомпонентный вектор (такой как позиция, нормаль или цвет), то `itemSize` должен быть равен `3`.
`elementSize`
  1, 2 или 4. Соответствующий размер (в байтах) для заданного параметра `type`.
  - gl.FLOAT: 4
  - gl.UNSIGNED_SHORT: 2
  - gl.SHORT: 2
  - gl.UNSIGNED_INT: 4
  - gl.INT: 4
  - gl.BYTE: 1
  - gl.UNSIGNED_BYTE: 1
`count`
  Ожидаемое количество вершин в VBO.

## Свойства

### # .buffer : WebGLBuffer

Текущий экземпляр WebGLBuffer.

### # .count : Integer

Ожидаемое количество вершин в VBO.

### # .itemSize : Integer

Сколько значений составляет каждый элемент (вершина).

### # .elementSize : Integer

Сохраняет соответствующий размер в байтах для текущего значения свойства type.

Список известных размеров типов смотрите выше (конструктор).

### # .type : GLenum

Тип данных WebGL Data Type описывающий базовое содержимое VBO.

Установите это свойство вместе с `elementSize`. Рекомендуемый способ — использовать метод `setType`.

### # .isGLBufferAttribute : Boolean

Только для чтения. Всегда `true`.

## Методы

### # .setBuffer(buffer) → this

Устанавливает свойство `buffer`.

### # .setType(type, elementSize) → this

Устанавливает свойства `type` и `elementSize`.

### # .setItemSize(itemSize) → this

Устанавливает свойство `itemSize`.

### # .setCount(count) → this

Устанавливает свойство `count`.

### # .version : Integer

Номер версии, увеличивающийся каждый раз, когда свойство .needsUpdate установлено в `true`.

### # .needsUpdate : Boolean

По умолчанию `false`. Установка этого значения в `true` увеличивает version.

## Исходный файл

О том как получить исходный код этого модуля читайте тут.