Справочник по ActionScript® 3.0 для платформы Adobe® Flash®
Домашняя страница  |  Скрыть список пакетов и классов |  Пакеты  |  Классы  |  Что нового  |  Указатель  |  Приложения  |  Почему по-английски?
Фильтры: Получение данных с сервера...
Получение данных с сервера...
flash.display3D 

VertexBuffer3D  - AS3

Пакетflash.display3D
Классpublic class VertexBuffer3D
НаследованиеVertexBuffer3D Inheritance Object

Язык версии: ActionScript 3.0
Версии среды выполнения: Flash Player 11, AIR 3

Класс VertexBuffer3D представляет набор данных вершин, загруженных в контекст визуализации.

Используйте объект VertexBuffer3D для определения данных, связанных с каждой точкой в наборе вершин. Данные вершин можно загрузить из массива Vector или ByteArray. (После загрузки ссылки на данные в исходном массиве не сохраняются; изменение или удаление исходного массива не влечет за собой удаление данных вершин.)

Данные, связанные с каждой вершиной, имеют определенный приложением формат и используются в качестве входных данных для вершинной шейдерной программы. Определите данные, которые принадлежат определенным входным данной вершинной программы, с использованием функции setVertexBufferAt() экземпляра Context3D. Вершинная программа поддерживает использование до восьми наборов входных данных (также называются регистрами атрибутов вершин). В каждом входном наборе может требоваться от одного до четырех 32-разрядных значений. Например, координаты положения вершины [x,y,z] можно передать в вершинную программу в виде вектора, содержащего три 32-разрядных значения. В классе Context3DVertexBufferFormat определяются константы для поддерживаемых форматов входных данных шейдера. Можно указать до шестидесяти четырех 32-разрядных значений (256 байт) данных для каждой точки (но использование всех данных в одном вершинном шейдере в этом случае будет невозможно).

Функция setVertexBufferAt() также определяет, какой буфер вершин необходимо использовать для визуализации любых последующих вызовов drawTriangles(). Для визуализации данных из другого буфера вершин вызовите setVertexBufferAt() еще раз с подходящими аргументами. (Можно хранить данные для одной точки в нескольких буферах вершин (например, данные о положении в одном буфере, а координаты текстуры в другом), но, как правило, визуализация выполняется эффективнее, когда все данные для точки передаются из одного буфера.)

Объект Index3DBuffer, переданный в метод drawTriangles() экземпляра Context3D, упорядочивает данные вершин в треугольники. Каждое значение в буфере индексов является индексом для вершины в буфере вершин. Набор из трех последовательных индексов определяет треугольник.

Объект VertexBuffer3D нельзя создавать напрямую. Используйте для этого метод createVertexBuffer() экземпляра Context3D.

Чтобы освободить ресурсы контекста визуализации, связанные с буфером вершин, вызовите метод dispose() объекта.

Посмотреть примеры

Связанные элементы API



Общедоступные свойства
 СвойствоОпределено
 Inheritedconstructor : Object
Ссылка на объект класса или функцию конструктора для данного экземпляра объекта.
Object
Общедоступные методы
 МетодОпределено
  
Освобождает все ресурсы, связанные с этим объектом.
VertexBuffer3D
 Inherited
Показывает, определено ли заданное свойство для объекта.
Object
 Inherited
Показывает, есть ли экземпляр класса Object в цепи прототипов объекта, заданного в качестве параметра.
Object
 Inherited
Показывает наличие заданного свойства и его перечисляемость.
Object
 Inherited
Задает доступность динамического свойства для операций цикла.
Object
 Inherited
Возвращает строковое представление этого объекта, отформатированного в соответствии со стандартами, принятыми для данной локали.
Object
 Inherited
Возвращает строковое представление заданного объекта.
Object
  
uploadFromByteArray(data:ByteArray, byteArrayOffset:int, startVertex:int, numVertices:int):void
Загружает данные для набора точек в контекст визуализации из массива байтов.
VertexBuffer3D
  
uploadFromVector(data:Vector.<Number>, startVertex:int, numVertices:int):void
Загружает данные для набора точек в контекст визуализации из векторного массива.
VertexBuffer3D
 Inherited
Возвращает элементарное значение заданного объекта.
Object
Сведения о методе

dispose

()метод
public function dispose():void

Язык версии: ActionScript 3.0
Версии среды выполнения: Flash Player 11, AIR 3

Освобождает все ресурсы, связанные с этим объектом. После очистки буфера вершин происходит сбой вызова метода upload() и визуализации с использованием этого объекта.

uploadFromByteArray

()метод 
public function uploadFromByteArray(data:ByteArray, byteArrayOffset:int, startVertex:int, numVertices:int):void

Язык версии: ActionScript 3.0
Версии среды выполнения: Flash Player 11, AIR 3

Загружает данные для набора точек в контекст визуализации из массива байтов.

Параметры

data:ByteArray — массив байтов, содержащий данные вершин. Длина каждого значения данных равна четырем байтам. Количество значений в вершине определяется во время создания буфера с использованием параметра data32PerVertex для метода createVertexBuffer3D() экземпляра Context3D. Длина данных в байтах должна быть равна значению byteArrayOffset, к которому прибавлено умноженное на четыре число значений в вершине, умноженное на количество вершин. Для объекта ByteArray необходимо использовать формат с прямым порядком байтов.
 
byteArrayOffset:int — количество байтов для пропуска от начала данных.
 
startVertex:int — Индекс первой загружаемой вершины. Значение startVertex, не равное нулю, может использоваться для загрузки подрегиона данных вершины.
 
numVertices:int — Количество вершин для загрузки из объекта data.


Выдает
TypeError — Ошибка пустого указателя: когда data имеет значение null.
 
RangeError — Неверный размер ввода: если значение byteArrayOffset больше 0, или если значение byteArrayOffset больше или равно длине массива data, или если количество элементов в массиве data минус byteArrayOffset меньше значения numVertices*data32pervertex*4, переданного в Context3D::createVertexBuffer().
 
Error — 3768: API-интерфейс Stage3D не может использоваться во время выполнения в фоновом режиме.

uploadFromVector

()метод 
public function uploadFromVector(data:Vector.<Number>, startVertex:int, numVertices:int):void

Язык версии: ActionScript 3.0
Версии среды выполнения: Flash Player 11, AIR 3

Загружает данные для набора точек в контекст визуализации из векторного массива.

Параметры

data:Vector.<Number> — вектор 32-разрядных значений. Отдельная вершина состоит из количества значений, сохраняемых последовательно в векторе. Количество значений в вершине определяется во время создания буфера с использованием параметра data32PerVertex для метода createVertexBuffer3D() экземпляра Context3D. Длина вектора должна быть равна числу значений в каждой вершине, умноженному на число вершин.
 
startVertex:int — Индекс первой загружаемой вершины. Значение startVertex, не равное нулю, может использоваться для загрузки подобласти данных вершин.
 
numVertices:int — Число вершин, представленных значением data.


Выдает
TypeError — Ошибка пустого указателя: когда data имеет значение null.
 
RangeError — Неверный размер ввода: если количество элементов в массиве data меньше значения numVertices * data32PerVertex, переданного в Context3D::createVertexBuffer(), или если сумма startVertex + numVertices больше значения numVertices переданного в Context3D::createVertexBuffer().
Context3D_createVertex.as

Следующий пример демонстрирует создание и загрузку буфера данных вершин. Буфер в примере содержит два типа данных для каждой вершины: положение (в виде координат x, y, z) и цвет (в виде компонентов RGB). После создания буфера метод setVertexBufferAt() вызывается для указания того, что первые три точки данных передаются в вершинную программу в качестве 3 значений с плавающей точкой в va0 и вторые три точки данных передаются в качестве va1. Вершинная программа поддерживает до 8 определенных подобным образом входных значений, которые также называются регистрами атрибутов.
const dataPerVertex:int = 6;
var vertexData:Vector.<Number> = Vector.<Number>(
    [
      // x, y, z    r, g, b format
         0, 0, 0,   1, 1, 1,
        -1, 1, 0,   0, 0,.5,
         1, 1, 0,   0, 0, 1,
         1,-1, 0,  .5, 0, 0,
        -1,-1, 0,   1, 0, 0
    ]
);
var vertexes:VertexBuffer3D = renderContext.createVertexBuffer( vertexData.length/dataPerVertex, dataPerVertex );
vertexes.uploadFromVector( vertexData, 0, vertexData.length/dataPerVertex );
            
//Identify vertex data inputs for vertex program
renderContext.setVertexBufferAt( 0, vertexes, 0, Context3DVertexBufferFormat.FLOAT_3 ); //Defines shader input va0 as the position data
renderContext.setVertexBufferAt( 1, vertexes, 3, Context3DVertexBufferFormat.FLOAT_3 ); //Defines shader input va1 as the color data




[ X ]Почему по-английски?
Содержимое Справочника ActionScript 3.0 отображается на английском языке

Не все части Справочника ActionScript 3.0 переводятся на все языки. Если какой-то текстовый элемент не переведен, он отображается на английском языке. Например, компонент ga.controls.HelpBox не переведен ни на один из языков. Это значит, что в русской версии справки компонент ga.controls.HelpBox будет отображаться на английском языке.