Pakket | flash.display3D |
Klasse | public class VertexBuffer3D |
Overerving | VertexBuffer3D Object |
Taalversie: | ActionScript 3.0 |
Runtimeversies: | Flash Player 11, AIR 3 |
Gebruik een VertexBuffer3D-object om de gegevens te definiëren die aan elk punt in een set hoekpunten zijn gekoppeld. U kunt de hoekpuntgegevens uploaden uit een vectorarray of uit een ByteArray. (Na het uploaden wordt niet langer verwezen naar de gegevens in de oorspronkelijke array; wanneer de bronarray wordt gewijzigd of verwijderd, veranderen de hoekpuntgegevens niet.)
De aan elk hoekpunt gekoppelde gegevens hebben een door de toepassing bepaalde indeling en worden gebruikt als invoer voor de hoekpuntshader. Gebruik de Context3D-functie setVertexBufferAt()
om te bepalen welke waarden tot welke hoekpuntprogramma-invoer behoren. Een hoekpuntprogramma kan maximaal acht invoerwaarden gebruiken (deze worden ook wel de registers met hoekpuntkenmerken genoemd). Elke invoerwaarde kan tussen één en vier 32-bits waarden vereisen. De [x,y,z]-positiecoördinaten van een hoekpunt kunnen als een vector met drie 32-bits waarden bijvoorbeeld worden doorgegeven aan een hoekpuntprogramma. De klasse Context3DVertexBufferFormat definieert constanten voor de ondersteunde indelingen voor shaderinvoer. U kunt maximaal 64 32-bits waarden (256 bytes) met gegevens verschaffen voor elk punt (maar één hoekpuntshader kan in dit geval niet alle gegevens gebruiken).
De functie setVertexBufferAt()
identificeert bovendien welke hoekpuntbuffer moet worden gebruikt voor de rendering van alle volgende drawTriangles()
-aanroepen. Als u gegevens uit een andere hoekpuntbuffer wilt renderen, roept u setVertexBufferAt()
nogmaals aan met de desbetreffende argumenten. (U kunt gegevens voor hetzelfde punt in meerdere hoekpuntbuffers opslaan, zoals positiegegevens in de ene buffer en structuurcoördinaten in een andere, maar doorgaans verloopt de rendering efficiënter als alle gegevens voor een punt uit dezelfde buffer komen.)
Het Index3DBuffer-object dat is doorgegeven aan de Context3D-methode drawTriangles()
organiseert de hoekpuntgegevens in driehoeken. Elke waarde in de indexbuffer is de index naar een hoekpunt in de hoekpuntbuffer. Een set van drie opeenvolgende indices definieert een driehoek.
Het is niet mogelijk rechtstreeks een VertexBuffer3D-object te maken. Gebruik in plaats daarvan de Context3D-methode createVertexBuffer()
.
Roep de methode dispose()
van het object aan als u de aan de hoekpuntbuffer gekoppelde renderingcontextbronnen wilt ontlasten.
Verwante API-elementen
Methode | Gedefinieerd door | ||
---|---|---|---|
Ontlast alle aan dit object gekoppelde bronnen. | VertexBuffer3D | ||
Geeft aan of voor een object een opgegeven eigenschap is gedefinieerd. | Object | ||
Geeft aan of een instantie van de klasse Object zich in de prototypeketen van het object bevindt dat als parameter is opgegeven. | Object | ||
Geeft aan of de opgegeven eigenschap bestaat en kan worden opgesomd. | Object | ||
Stelt de beschikbaarheid van een dynamische eigenschap voor lusbewerkingen in. | Object | ||
Geeft de tekenreeksweergave van dit object weer, geformatteerd volgens de locatiespecifieke conventies. | Object | ||
Retourneert een tekenreeksrepresentatie van het opgegeven object. | Object | ||
Uploadt de gegevens voor een set punten uit een bytearray naar de renderingcontext. | VertexBuffer3D | ||
Uploadt de gegevens voor een set punten uit een vectorarray naar de renderingcontext. | VertexBuffer3D | ||
Retourneert de primitieve waarde van het opgegeven object. | Object |
dispose | () | methode |
public function dispose():void
Taalversie: | ActionScript 3.0 |
Runtimeversies: | Flash Player 11, AIR 3 |
Ontlast alle aan dit object gekoppelde bronnen. Na verwijdering van een hoekpuntbuffer, mislukt het aanroepen van upload() en rendering met gebruik van dit object.
uploadFromByteArray | () | methode |
public function uploadFromByteArray(data:ByteArray, byteArrayOffset:int, startVertex:int, numVertices:int):void
Taalversie: | ActionScript 3.0 |
Runtimeversies: | Flash Player 11, AIR 3 |
Uploadt de gegevens voor een set punten uit een bytearray naar de renderingcontext.
Parameters
data:ByteArray — Een bytearray met de hoekpuntgegevens. Elke gegevenswaarde is vier bytes lang. Het aantal waarden in een hoekpunt wordt opgegeven bij het maken van de buffer met behulp van de data32PerVertex -parameter voor de Context3D-methode createVertexBuffer3D() . De lengte van de gegevens in bytes moet gelijk zijn aan de byteArrayOffset plus vier keer het aantal waarden per hoekpunt maal het aantal hoekpunten. Het ByteArray-object dient gebruik te maken van de little endian-indeling.
| |
byteArrayOffset:int — Het aantal bytes dat vanaf het begin van de gegevens moet worden overgeslagen.
| |
startVertex:int — De index van het eerste hoekpunt dat moet worden geladen. Een waarde voor startVertex die niet gelijk is aan nul, kan worden gebruikt om een subgebied van de hoekpuntgegevens te laden.
| |
numVertices:int — Het aantal hoekpunten dat moet worden geladen vanaf data .
|
Gegenereerde uitzondering
TypeError — Null-aanwijzerfout: wanneer data de waarde null heeft.
| |
RangeError — Onjuiste invoergrootte: als byteArrayOffset kleiner is dan 0 of als byteArrayOffset groter is dan of gelijk is aan de lengte van data , of als het aantal elementen in data - byteArrayOffset kleiner is dan numVertices *data32pervertex *4 in Context3D::createVertexBuffer() .
| |
Error — 3768: De Stage3D -API kan niet worden gebruikt tijdens uitvoering op de achtergrond.
|
uploadFromVector | () | methode |
public function uploadFromVector(data:Vector.<Number>, startVertex:int, numVertices:int):void
Taalversie: | ActionScript 3.0 |
Runtimeversies: | Flash Player 11, AIR 3 |
Uploadt de gegevens voor een set punten uit een vectorarray naar de renderingcontext.
Parameters
data:Vector.<Number> — Een vector met 32-bits waarden. Eén hoekpunt bestaat uit een aantal waarden die opeenvolgend in de vector zijn opgeslagen. Het aantal waarden in een hoekpunt wordt opgegeven bij het maken van de buffer met behulp van de data32PerVertex -parameter voor de Context3D-methode createVertexBuffer3D() . De lengte van de vector moet gelijk zijn aan het aantal waarden per hoekpunt maal het aantal hoekpunten.
| |
startVertex:int — De index van het eerste hoekpunt dat moet worden geladen. Een waarde voor startVertex die niet gelijk is aan nul, kan worden gebruikt om een subgebied van de hoekpuntgegevens te laden.
| |
numVertices:int — Het aantal hoekpunten dat wordt aangegeven door data .
|
Gegenereerde uitzondering
TypeError — Null-aanwijzerfout: wanneer data de waarde null heeft.
| |
RangeError — Onjuiste invoergrootte: wanneer het aantal elementen in data kleiner is dan numVertices * data32PerVertex in Context3D::createVertexBuffer() , of wanneer startVertex + numVertices groter is dan numVertices in Context3D::createVertexBuffer() .
|
setVertexBufferAt()
aan om op te geven dat de eerste drie gegevenspunten als drie zwevende-kommawaarden in va0 worden doorgegeven aan het hoekpuntprogramma en dat de tweede set van drie gegevenspunten worden doorgegeven als va1. Er kunnen op deze manier maximaal 8 invoerwaarden, ook wel registers voor hoekpuntkenmerken genoemd, worden gedefinieerd voor een hoekpuntprogramma.
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
Wed Jun 13 2018, 11:42 AM Z