ActionScript® 3.0 Referenzhandbuch für die Adobe® Flash®-Plattform
Home  |  Liste der Pakete und Klassen ausblenden |  Pakete  |  Klassen  |  Neue Funktionen  |  Stichwortverzeichnis  |  Anhänge  |  Warum auf Englisch?
Filter: Daten werden vom Server abgerufen...
Daten werden vom Server abgerufen...
flash.display3D 

VertexBuffer3D  - AS3

Paketflash.display3D
Klassepublic class VertexBuffer3D
VererbungVertexBuffer3D Inheritance Object

Sprachversion: ActionScript 3.0
Laufzeitversionen: Flash Player 11, AIR 3

Die VertexBuffer3D-Klasse stellt einen Satz von Vertexdaten dar, die in einen Renderkontext hochgeladen wurden.

Verwenden Sie ein VertexBuffer3D-Objekt, um die Daten zu definieren, die jedem Punkt in einem Satz von Vertizes zugeordnet sind. Sie können die Vertexdaten entweder von einem Vektorarray oder einem Bytearray hochladen. (Nach dem Hochladen wird nicht länger auf die Daten im Originalarray verwiesen; das Ändern oder Verwerfen des Ausgangsarrays ändert die Vertexdaten nicht.)

Die Daten, die jedem Vertex zugeordnet sind, liegen in einem von der Anwendung definierten Format vor und werden als Eingabe für das Vertexshaderprogramm verwendet. Bestimmen Sie mithilfe der Context3D-Funktion setVertexBufferAt(), welche Werte zu welcher Vertexprogrammeingabe gehören. Ein Vertexprogramm kann bis zu acht Eingabe (auch als Vertexattributregister bezeichnet) verwenden. Jede Eingabe kann ein bis vier 32-Bit-Werte erfordern. Die [x,y,z]-Positionskoordinaten eines Vertex können zum Beispiel als ein Vektor mit drei 32-Bit-Werten an ein Vertexprogramm übergeben werden. Die Context3DVertexBufferFormat-Klasse definiert Konstanten für die unterstützten Formate der Shadereingaben. Sie können bis zu 64 32-Bit-Werte (256 Bytes) für jeden Punkt bereitstellen (allerdings kann ein einzelner Vertexshader in diesem Fall nicht alle Daten verwenden).

Die setVertexBufferAt()-Funktion identifiziert auch, welcher Vertexpuffer zum Rendern aller nachfolgenden Aufrufe von drawTriangles() verwendet wird. Um Daten aus einem anderen Vertexpuffer zu rendern, rufen Sie setVertexBufferAt() mit den entsprechenden Argumenten erneut auf. (Sie können Daten für denselben Punkt in mehreren Vertexpuffern speichern, zum Beispiel Positionsdaten in einem und Texturkoordinaten in einem anderen; normalerweise ist das Rendern aber effizienter, wenn alle Daten für einen Punkt aus einem einzelnen Puffer stammen.)

Das Index3DBuffer-Objekt, das an die Context3D-Methode drawTriangles() übergeben wird, organisiert die Vertexdaten zu Dreiecken. Jeder Wert im Indexpuffer ist der Index für einen Vertex im Vertexpuffer. Eine Gruppe von drei Indizes in Folge definiert ein Dreieck.

Sie können ein VertexBuffer3D-Objekt nicht direkt erstellen. Verwenden Sie stattdessen die Context3D-Methode createVertexBuffer().

Um die Renderkontextressourcen freizugeben, die mit einem Vertexpuffer verknüpft sind, rufen Sie die dispose()-Methode des Objekts auf.

Beispiele anzeigen

Verwandte API-Elemente



Öffentliche Eigenschaften
 EigenschaftDefiniert von
 Inheritedconstructor : Object
Ein Verweis auf das Klassenobjekt oder die Konstruktorfunktion für eine angegebene Objektinstanz.
Object
Öffentliche Methoden
 MethodeDefiniert von
  
Gibt alle Ressourcen frei, die diesem Objekt zugeordnet sind.
VertexBuffer3D
 Inherited
Gibt an, ob für ein Objekt eine bestimmte Eigenschaft definiert wurde.
Object
 Inherited
Gibt an, ob eine Instanz der Object-Klasse in der Prototypkette des Objekts vorhanden ist, das als Parameter angegeben wurde.
Object
 Inherited
Gibt an, ob die angegebene Eigenschaft vorhanden ist und durchlaufen werden kann.
Object
 Inherited
Legt die Verfügbarkeit einer dynamischen Eigenschaft für Schleifenoperationen fest.
Object
 Inherited
Gibt die Stringdarstellung dieses Objekts zurück, formatiert entsprechend den Konventionen des Gebietsschemas.
Object
 Inherited
Gibt das angegebene Objekt als String zurück.
Object
  
uploadFromByteArray(data:ByteArray, byteArrayOffset:int, startVertex:int, numVertices:int):void
Lädt die Daten für einen Satz von Punkten aus einem Bytearray in den Renderkontext.
VertexBuffer3D
  
uploadFromVector(data:Vector.<Number>, startVertex:int, numVertices:int):void
Lädt die Daten für einen Satz von Punkten aus einem Vektorarray in den Renderkontext.
VertexBuffer3D
 Inherited
Gibt den Grundwert des angegebenen Objekts zurück.
Object
Methodendetails

dispose

()Methode
public function dispose():void

Sprachversion: ActionScript 3.0
Laufzeitversionen: Flash Player 11, AIR 3

Gibt alle Ressourcen frei, die diesem Objekt zugeordnet sind. Nachdem ein Vertexpuffer verworfen wurde, schlägt das Aufrufen von upload() und das Rendern für dieses Objekt fehl.

uploadFromByteArray

()Methode 
public function uploadFromByteArray(data:ByteArray, byteArrayOffset:int, startVertex:int, numVertices:int):void

Sprachversion: ActionScript 3.0
Laufzeitversionen: Flash Player 11, AIR 3

Lädt die Daten für einen Satz von Punkten aus einem Bytearray in den Renderkontext.

Parameter

data:ByteArray — ein Bytearray, das die Vertexdaten enthält. Jeder Datenwert ist vier Bytes lang. Die Anzahl der Werte in einem Vertex wird bei der Puffererstellung mit dem data32PerVertex-Parameter für die Context3D-Methode createVertexBuffer3D() angegeben. Die Länge der Daten in Bytes muss byteArrayOffset plus vier mal die Anzahl der Werte pro Vertex mal der Anzahl der Vertizes betragen. Das ByteArray-Objekt muss das Little-Endian-Format verwenden.
 
byteArrayOffset:int — Anzahl der Bytes, die ab dem Datenanfang übersprungen werden sollen
 
startVertex:int — Der Index des ersten zu ladenden Scheitelpunkts. Ein startVertex-Wert, der nicht null ist, kann zum Laden eines Teilbereichs der Vertexdaten verwendet werden.
 
numVertices:int — Die Anzahl der Scheitelpunkte, die aus data geladen werden.


Auslöser
TypeError — Nullzeigerfehler: wenn data den Wert null hat.
 
RangeError — Fehlerhafte Eingabegröße: Wenn byteArrayOffset kleiner als 0 ist, oder wenn byteArrayOffset größer oder gleich der Länge von data ist. von Elementen in data - byteArrayOffset kleiner als numVertices * data32pervertex *4, festgelegt in Context3D::createVertexBuffer ().
 
Error — 3768: DasStage3D -API darf nicht bei der Ausführung im Hintergrund verwendet werden.

uploadFromVector

()Methode 
public function uploadFromVector(data:Vector.<Number>, startVertex:int, numVertices:int):void

Sprachversion: ActionScript 3.0
Laufzeitversionen: Flash Player 11, AIR 3

Lädt die Daten für einen Satz von Punkten aus einem Vektorarray in den Renderkontext.

Parameter

data:Vector.<Number> — ein Vektor von 32-Bit-Werten. Ein einzelner Vertex besteht aus einer Anzahl von Werten, die nacheinander im Vektor gespeichert werden. Die Anzahl der Werte in einem Vertex wird bei der Puffererstellung mit dem data32PerVertex-Parameter für die Context3D-Methode createVertexBuffer3D() angegeben. Die Länge des Vektors muss der Anzahl der Werte pro Vertex mal Anzahl der Vertizes betragen.
 
startVertex:int — Der Index des ersten zu ladenden Scheitelpunkts. Ein startVertex-Wert, der nicht null ist, kann zum Laden eines Teilbereichs der Vertexdaten verwendet werden.
 
numVertices:int — Die Anzahl der Vertizes, die von data repräsentiert werden.


Auslöser
TypeError — Nullzeigerfehler: wenn data den Wert null hat.
 
RangeError — Fehlerhafte Eingabegröße: Wenn die Anzahl der Elemente in data kleiner als numVertices * data32PerVertex, die in Context3D::createVertexBuffer () festgelegt wurden, ist, oder wenn startVertex + numVertices größer als die numVertices, die in Context3D::createVertexBuffer() festgelegt wurden, ist.
Context3D_createVertex.as

Das folgende Beispiel veranschaulicht das Erstellen und Laden eines Vertexdatenpuffers. Der Puffer in diesem Beispiel enthält zwei Datentypen für jeden Vertex: die Position als Koordinaten x, y, z; und die Farbe als rgb-Komponenten. Nachdem der Vertexpuffer erstellt wurde, ruft der Beispielcode die setVertexBufferAt()-Methode auf, um festzulegen, dass die ersten drei Datenpunkte als 3 Gleitkommawerte in va0 und die zweiten drei Datenpunkte als va1 übergeben werden. Für ein Vertexprogramm können auf diese Weise bis zu 8 Eingaben, auch als Vertexattributregister bezeichnet, definiert werden.
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 ]Warum auf Englisch?
Inhalt des ActionScript 3.0-Referenzhandbuchs wird in englischer Sprache angezeigt

Nicht alle Teile des ActionScript 3.0-Referenzhandbuchs wurden in alle Sprachen übersetzt. Wenn der Text zu einem Sprachelement nicht übersetzt wurde, wird er auf Englisch angezeigt. Zum Beispiel wurden die Informationen zur ga.controls.HelpBox-Klasse nicht in andere Sprachen übersetzt. In der deutschen Version des Referenzhandbuchs erscheint der Abschnitt zur ga.controls.HelpBox-Klasse deshalb auf Englisch.