Package | flash.display3D |
Classe | public class VertexBuffer3D |
Héritage | VertexBuffer3D Object |
Version du langage: | ActionScript 3.0 |
Versions du moteur d’exécution: | Flash Player 11, AIR 3 |
Utilisez un objet VertexBuffer3D pour définir les données associées à chaque point d’un ensemble de sommets. Vous pouvez télécharger les données de sommet soit à partir d’un tableau de vecteurs soit à partir d’un objet ByteArray. (Une fois le téléchargement effectué, les données dans le tableau d’origine ne sont plus référencées ; la modification ou la suppression du tableau source ne modifie pas les données de sommet.)
Les données associées à chaque sommet sont au format défini dans l’application et sont utilisées comme entrée pour le programme de shaders de sommets. Identifiez les valeurs appartenant à telle ou telle entrée de programme de sommets à l’aide de la fonction setVertexBufferAt()
de Context3D. Un programme de sommets peut utiliser jusqu’à huit entrées (également appelées registres d’attributs de sommet). Chaque entrée peut nécessiter entre une et quatre valeurs de 32 bits. Par exemple, les coordonnées [x,y,z] d’un sommet peuvent être transmises à un programme de sommets sous la forme d’un vecteur contenant trois valeurs de 32 bits. La classe Context3DVertexBufferFormat définit des constantes pour les formats pris en charge des entrées de shader. Vous pouvez fournir jusqu’à soixante-quatre valeurs de 32 bits (256 octets) de données pour chaque point (mais un seul shader de sommets ne peut pas utiliser toutes les données contenues dans ce cas).
La fonction setVertexBufferAt()
identifie également le tampon de sommets à utiliser pour le rendu des prochains appels de drawTriangles()
. Pour effectuer le rendu des données à partir d’un autre tampon de sommets, appelez à nouveau setVertexBufferAt()
avec les arguments appropriés. (Vous pouvez stocker des données pour le même point dans plusieurs tampons de sommets, c’est-à-dire des données de position dans une mémoire tampon et les coordonnées de texture dans une autre, mais le rendu est généralement plus efficace si toutes les données d’un point proviennent d’un seul tampon.)
L’objet Index3DBuffer transmis à la méthode drawTriangles()
de Context3D organise les données de sommet dans des triangles. Chaque valeur du tampon d’index est l’index à un sommet dans le tampon de sommets. Un ensemble de trois index, dans l’ordre, définit un triangle.
Vous ne pouvez pas créer un objet VertexBuffer3D directement. Utilisez plutôt la méthode createVertexBuffer()
de Context3D.
Pour libérer les ressources du contexte de rendu associées à un tampon de sommets, appelez la méthode dispose()
de l’objet.
Eléments de l’API associés
Méthode | Défini par | ||
---|---|---|---|
Libérez toutes les ressources associées à cet objet. | VertexBuffer3D | ||
Indique si la propriété spécifiée d’un objet est définie. | Object | ||
Indique si une occurrence de la classe Object figure dans la chaîne de prototype de l’objet spécifié en tant que paramètre. | Object | ||
Indique si la propriété spécifiée existe et est énumérable. | Object | ||
Définit la disponibilité d’une propriété dynamique pour les opérations en boucle. | Object | ||
Renvoie la représentation de chaîne de cet objet, formatée selon les paramètres régionaux en vigueur. | Object | ||
Renvoie la représentation sous forme de chaîne de l’objet spécifié. | Object | ||
Télécharge les données d’un ensemble de points dans le contexte de rendu à partir d’un tableau d’octets. | VertexBuffer3D | ||
Télécharge les données d’un ensemble de points dans le contexte de rendu à partir d’un tableau de vecteurs. | VertexBuffer3D | ||
Renvoie la valeur primitive de l’objet spécifié. | Object |
dispose | () | méthode |
public function dispose():void
Version du langage: | ActionScript 3.0 |
Versions du moteur d’exécution: | Flash Player 11, AIR 3 |
Libérez toutes les ressources associées à cet objet. Après la suppression d’un tampon de sommets, l’appel de upload() et le rendu à l’aide cet objet échouent.
uploadFromByteArray | () | méthode |
public function uploadFromByteArray(data:ByteArray, byteArrayOffset:int, startVertex:int, numVertices:int):void
Version du langage: | ActionScript 3.0 |
Versions du moteur d’exécution: | Flash Player 11, AIR 3 |
Télécharge les données d’un ensemble de points dans le contexte de rendu à partir d’un tableau d’octets.
Paramètres
data:ByteArray — tableau d’octets contenant les données de sommet. Chaque valeur de données est de quatre octets. Le nombre de valeurs d’un sommet est spécifié lors de la création de la mémoire tampon à l’aide du paramètre data32PerVertex sur la méthode createVertexBuffer3D() de Context3D. La longueur des données, en octets, doit être byteArrayOffset , plus quatre fois le nombre de valeurs par sommet fois le nombre de sommets. L’objet ByteArray doit utiliser le format petit-boutiste.
| |
byteArrayOffset:int — nombre d’octets à ignorer à partir du début des données
| |
startVertex:int — Index du premier sommet à charger. Il est possible d’utiliser une valeur pour startVertex non égale à zéro pour charger une sous-région des données de sommet.
| |
numVertices:int — Nombre de sommets à charger à partir de data .
|
Valeur émise
TypeError — Erreur de pointeur nulle : lorsque data est null.
| |
RangeError — Taille d’entrée incorrecte : si byteArrayOffset est inférieur à 0, ou si byteArrayOffset est supérieur ou égal à la longueur de données , ou si ce n’est pas le cas. des éléments dans data - byteArrayOffset est inférieur à numVertices *data32pervertex *4 spécifié dans Context3D::createVertexBuffer() .
| |
Error — 3768 : l’API Stage3D ne peut pas être utilisée lors d’une exécution en arrière-plan.
|
uploadFromVector | () | méthode |
public function uploadFromVector(data:Vector.<Number>, startVertex:int, numVertices:int):void
Version du langage: | ActionScript 3.0 |
Versions du moteur d’exécution: | Flash Player 11, AIR 3 |
Télécharge les données d’un ensemble de points dans le contexte de rendu à partir d’un tableau de vecteurs.
Paramètres
data:Vector.<Number> — vecteur de valeurs à 32 bits. Un seul sommet est composé d’un nombre de valeurs stockées de manière séquentielle dans le vecteur. Le nombre de valeurs d’un sommet est spécifié lors de la création de la mémoire tampon à l’aide du paramètre data32PerVertex sur la méthode createVertexBuffer3D() de Context3D. La longueur du vecteur doit être le nombre de valeurs par sommet fois le nombre de sommets.
| |
startVertex:int — Index du premier sommet à charger. Il est possible d’utiliser une valeur pour startVertex non égale à zéro pour charger une sous-région des données de sommet.
| |
numVertices:int — Nombre de sommets représenté par data .
|
Valeur émise
TypeError — Erreur de pointeur nulle : lorsque data est null.
| |
RangeError — Taille d’entrée incorrecte : lorsque le nombre d’éléments dans data est inférieur à numVertices *data32PerVertex spécifié dans Context3D::createVertexBuffer () , ou lorsque startVertex + numVertices est supérieur à numVertices spécifié dans Context3D::createVertexBuffer () .
|
setVertexBufferAt()
pour spécifier que les trois premiers points de données sont transmis au programme de sommets en tant que 3 valeurs à virgule flottante dans va0 et que les trois points de données suivants sont transmis comme va1. Un programme de sommets peut avoir jusqu'à 8 entrées, également appelées registres d'attributs de sommets, définis de cette façon suivante.
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, 09:30 AM Z