| Pakiet | flash.display3D |
| Klasa | public class VertexBuffer3D |
| Dziedziczenie | VertexBuffer3D Object |
| Wersja języka: | ActionScript 3.0 |
| Wersje środowiska wykonawczego: | Flash Player 11, AIR 3 |
Obiekt VertexBuffer3D pozwala zdefiniować dane skojarzone z każdym punktem w zestawie wierzchołków. Dane wierzchołków można wysłać z tablicy obiektów Vector lub obiektu ByteArray. (Po wysłaniu kod nie odnosi się już do danych w oryginalnej tablicy. Zmiany lub usunięcie tablicy źródłowej nie mają wpływu na dane wierzchołków).
Dane skojarzone z poszczególnymi wierzchołkami są przechowywane w formacie zdefiniowanym przez aplikację i są stosowane jako parametry wejściowe programu modułu cieniującego wierzchołków. Metoda setVertexBufferAt() klasy Context3D pozwala określić, które wartości należą do których danych wejściowych programu wierzchołków. Program wierzchołków może korzystać z maksymalnie ośmiu wejść (określanych też jako rejestry atrybutów wierzchołków). Każde wejście może wymagać od jednej do czterech wartości 32-bitowych. Współrzędne położenia wierzchołka [x,y,z] mogą na przykład zostać przekazane do programu wierzchołków w formie wektora zawierającego trzy wartości 32-bitowe. Klasa Context3DVertexBufferFormat definiuje stałe dla obsługiwanych formatów danych wejściowych modułów cieniujących. Można podać maksymalnie 64 wartości 32-bitowe (256 bajtów) danych dla każdego punktu. W takiej sytuacji pojedynczy moduł cieniujący wierzchołków nie może użyć wszystkich danych.
Funkcja setVertexBufferAt() identyfikuje również bufor wierzchołków, który ma być używany przy renderowaniu wszystkich kolejnych wywołań metody drawTriangles(). Aby renderować dane z innego bufora wierzchołków, należy jeszcze raz wywołać metodę setVertexBufferAt() z odpowiednimi argumentami. (Dane dotyczące tego samego punktu można przechowywać w wielu buforach wierzchołków, umieszczając na przykład dane położenia w jednym buforze i współrzędne tekstury w innym. Zazwyczaj renderowanie jest jednak wydajniejsze, jeśli wszystkie dane punktu pochodzą z pojedynczego bufora).
Obiekt Index3DBuffer przekazany do metody drawTriangles() obiektu Context3D porządkuje dane wierzchołków w trójkąty. Każda wartość w buforze indeksów stanowi indeks wierzchołka w buforze wierzchołków. Zestaw trzech kolejnych indeksów definiuje trójkąt.
Nie można bezpośrednio utworzyć obiektu VertexBuffer3D. Zamiast tego należy użyć metody createVertexBuffer() Context3D.
Aby zwolnić zasoby kontekstu renderowania skojarzone z buforem wierzchołków, należy wywołać metodę dispose().
Powiązane elementy interfejsu API
| Metoda | Zdefiniowane przez | ||
|---|---|---|---|
Zwalnia wszystkie zasoby skojarzone z tym obiektem. | VertexBuffer3D | ||
![]() |
Wskazuje, czy dla obiektu zdefiniowano określoną właściwość. | Object | |
![]() |
Wskazuje, czy instancja klasy Object należy do łańcucha prototypów obiektu określonego jako parametr. | Object | |
![]() |
Wskazuje, czy określona właściwość istnieje i jest przeliczalna. | Object | |
![]() |
Ustawia dostępność właściwości dynamicznej używanej w pętlach. | Object | |
![]() |
Zwraca ciąg reprezentujący obiekt — sformatowany zgodnie z konwencjami właściwymi dla ustawień regionalnych. | Object | |
![]() |
Zwraca ciąg reprezentujący określony obiekt. | Object | |
Wysyła dane zestawu punktów z tablicy bajtów do kontekstu renderowania. | VertexBuffer3D | ||
Wysyła dane zestawu punktów z tablicy wektorów do kontekstu renderowania. | VertexBuffer3D | ||
![]() |
Zwraca pierwotną wartość dla określonego obiektu. | Object | |
dispose | () | metoda |
public function dispose():void| Wersja języka: | ActionScript 3.0 |
| Wersje środowiska wykonawczego: | Flash Player 11, AIR 3 |
Zwalnia wszystkie zasoby skojarzone z tym obiektem. Po zwolnieniu bufora wierzchołków wywołanie metody upload() i renderowanie przy użyciu tego obiektu nie powiedzie się.
uploadFromByteArray | () | metoda |
public function uploadFromByteArray(data:ByteArray, byteArrayOffset:int, startVertex:int, numVertices:int):void| Wersja języka: | ActionScript 3.0 |
| Wersje środowiska wykonawczego: | Flash Player 11, AIR 3 |
Wysyła dane zestawu punktów z tablicy bajtów do kontekstu renderowania.
Parametry
data:ByteArray — Tablica bajtów zawierająca dane wierzchołków. Każda wartość ma cztery bajty. Liczba wartości w wierzchołku jest określana w momencie tworzenia bufora za pomocą parametru data32PerVertex wywołania metody createVertexBuffer3D() klasy Context3D. Ilość danych w bajtach musi wynosić: byteArrayOffset + 4 x liczba wartości na wierzchołek x liczba wierzchołków. Obiekt ByteArray musi korzystać z formatu little endian.
| |
byteArrayOffset:int — Liczba bajtów do pominięcia, licząc od początku danych.
| |
startVertex:int — Indeks pierwszego wierzchołka do wczytania. W celu wczytania regionu podrzędnego danych wierzchołka można użyć wartości startVertex innej niż zero.
| |
numVertices:int — Liczba wierzchołków do wczytania z parametru data.
|
Zgłasza
TypeError — Błąd pustego wskaźnika: gdy właściwość data ma wartość null.
| |
RangeError — Nieprawidłowy rozmiar danych wejściowych: Jeśli wartość byteArrayOffset jest mniejsza niż 0, wartość byteArrayOffset jest nie mniejsza niż długość tablicy data lub liczba elementów w tablicy data – byteArrayOffset to mniej niż numVertices * data32pervertex * 4 z metody Context3D::createVertexBuffer().
| |
Error — Interfejs API Stage3D nie może być używany podczas wykonywania tła.
|
uploadFromVector | () | metoda |
public function uploadFromVector(data:Vector.<Number>, startVertex:int, numVertices:int):void| Wersja języka: | ActionScript 3.0 |
| Wersje środowiska wykonawczego: | Flash Player 11, AIR 3 |
Wysyła dane zestawu punktów z tablicy wektorów do kontekstu renderowania.
Parametry
data:Vector.<Number> — Wektor wartości 32-bitowych. Pojedynczy wierzchołek składa się z pewnej liczby wartości przechowywanych sekwencyjnie w wektorze. Liczba wartości w wierzchołku jest określana w momencie tworzenia bufora za pomocą parametru data32PerVertex wywołania metody createVertexBuffer3D() klasy Context3D. Długość wektora musi wynosić: liczba wartości na wierzchołek x liczba wierzchołków.
| |
startVertex:int — Indeks pierwszego wierzchołka do wczytania. W celu wczytania regionu podrzędnego danych wierzchołka można użyć wartości startVertex innej niż zero.
| |
numVertices:int — Liczba wierzchołków reprezentowanych przez parametr data.
|
Zgłasza
TypeError — Błąd pustego wskaźnika: gdy właściwość data ma wartość null.
| |
RangeError — Nieprawidłowy rozmiar danych wejściowych: Gdy liczba elementów w tablicy data to mniej niż numVertices * data32PerVertex z metody Context3D::createVertexBuffer() lub startVertex + numVertices to więcej niż wartość numVertices z metody Context3D::createVertexBuffer().
|
setVertexBufferAt() w celu wskazania, że pierwsze trzy punkty danych są przekazywane do programu wierzchołków jako 3 wartości zmiennoprzecinkowe w tablicy va0, a kolejne trzy punkty danych są przekazywane w tablicy va1. Dla programu wierzchołków można w ten sposób zdefiniować maksymalnie 8 parametrów wejściowych (tak zwanych rejestrów atrybutów wierzchołków).
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
Tue Jun 12 2018, 12:06 PM Z
Ukryj dziedziczone właściwości publiczne
Pokaż dziedziczone właściwości publiczne