Pacote | flash.display3D |
Classe | public class VertexBuffer3D |
Herança | VertexBuffer3D Object |
Versão da linguagem: | ActionScript 3.0 |
Versões de runtime: | Flash Player 11, AIR 3 |
Utilize um objeto VertexBuffer3D para definir os dados associados a cada ponto no conjunto de vértices. É possível carregar os dados de vértice de uma matriz de Vetor ou de um ByteArray. (Uma vez carregado, os dados na matriz original já não servirão como referência; a alteração ou o descarte da matriz de origem não alteram os dados de vértice.)
Os dados associados a cada vértice estão em um formato definido pelo aplicativo e são utilizados como entrada do programa sombreador de vértice. Identifique que valores pertencem a qual entrada de programa de vértice utilizando a função setVertexBufferAt ()
de Context3D. Um programa de vértice poderá utilizar até oito entradas (também conhecido como registros de atributo de vértice). Cada entrada poderá necessitar entre um e quatro valores de 32 bits. Por exemplo, as coordenadas de posição [x, y, z] de um vértice poderão ser transmitidas a um programa de vértice como um vetor que contém três valores de 32 bits. A classe Context3DVertexBufferFormat define constantes para os formatos suportados nas entradas de sombreador. Você poderá fornecer até sessenta e quatro valores de 32 bits (256 bytes) de dados para cada ponto (mas, nesse caso, um único sombreador de vértice não poderá utilizar todos os dados).
A função setVertexBufferAt ()
também identifica que buffers de vértice deverão ser utilizados para a renderização de quaisquer chamadas drawTriangles()
. Para renderizar dados de um buffer de vértice diferente, realize a chamada de setVertexBufferAt ()
novamente com os argumentos apropriados. (É possível armazenar dados para o mesmo ponto em múltiplos buffers de vértice, como dados de posição em um buffer e coordenadas de textura no outro, mas normalmente renderizar será mais eficiente se todo os dados de um ponto vierem de um único buffer.)
O objeto Index3DBuffer transmitido ao métodoContext3D drawTriangles ()
organiza os dados de vértice em triângulos. Cada valor no buffer de índice é o índice em um vértice no buffer de vértice. Um conjunto de três índices, na sequência, define um triângulo.
Não é possível criar um objeto VertexBuffer3D diretamente. Em vez disso, utilize o método createVertexBuffer ()
de Context3D.
Para libertar os recursos de contexto de renderização associado a um buffer de vértice, realize a chamada do métododispose()
do objeto.
Elementos da API relacionados
Método | Definido por | ||
---|---|---|---|
Liberta todos os recursos associados a esse objeto. | VertexBuffer3D | ||
Indica se um objeto tem uma propriedade especificada definida. | Object | ||
Indica se uma ocorrência da classe Object está na cadeia de protótipos do objeto especificado como o parâmetro. | Object | ||
Indica se a propriedade especificada existe e é enumerável. | Object | ||
Define a disponibilidade de uma propriedade dinâmica para operações de repetição. | Object | ||
Retorna a representação da string deste objeto, formatado segundo as convenções específicas para a localidade. | Object | ||
Retorna a representação de string do objeto especificado. | Object | ||
Carrega os dados do conjunto de pontos ao contexto de renderização de uma matriz de bytes. | VertexBuffer3D | ||
Carrega os dados do conjunto de pontos ao contexto de renderização de um vetor de bytes. | VertexBuffer3D | ||
Retorna o valor primitivo do objeto especificado. | Object |
dispose | () | método |
public function dispose():void
Versão da linguagem: | ActionScript 3.0 |
Versões de runtime: | Flash Player 11, AIR 3 |
Liberta todos os recursos associados a esse objeto. Após o descarte de um buffer de vértice, ocorrerá uma falha na chamada upload() e de renderização utilizando este objeto.
uploadFromByteArray | () | método |
public function uploadFromByteArray(data:ByteArray, byteArrayOffset:int, startVertex:int, numVertices:int):void
Versão da linguagem: | ActionScript 3.0 |
Versões de runtime: | Flash Player 11, AIR 3 |
Carrega os dados do conjunto de pontos ao contexto de renderização de uma matriz de bytes.
Parâmetros
data:ByteArray — uma matriz de bytes que contém os dados de vértice. Cada valor de dados é quatro bytes de longitude. O número de valores em um vértice é especificado no momento da criação de buffers que utilizem o parâmetro data32PerVertex para o método createVertexBuffer3D() de Context3D. O comprimento dos dados em bytes deve ser byteArrayOffset mais quatro vezes o número de valores por vértice multiplicado pelo número de vértices. O objeto ByteArray deverá utilizar o pequeno formato endiano.
| |
byteArrayOffset:int — número de bytes para omitir o início dos dados
| |
startVertex:int — O índice do primeiro vértice a ser carregado. Um valor de startVertex diferente de zero pode ser usado para carregar uma subregião dos dados de vértice.
| |
numVertices:int — O número de vértices a ser carregados a partir de data .
|
Lança
TypeError — Erro de Ponteiro Nulo: quando data é null.
| |
RangeError — Tamanho de entrada incorreto: se byteArrayOffset for menor que 0, ou se byteArrayOffset for maior que ou igual ao comprimento de data ou não. dos elementos em data - byteArrayOffset é menor que numVertices *data32pervertex *4 em Context3D::createVertexBuffer() .
| |
Error — 3768: a API do Stage3D não pode ser usada durante a execução de fundo.
|
uploadFromVector | () | método |
public function uploadFromVector(data:Vector.<Number>, startVertex:int, numVertices:int):void
Versão da linguagem: | ActionScript 3.0 |
Versões de runtime: | Flash Player 11, AIR 3 |
Carrega os dados do conjunto de pontos ao contexto de renderização de um vetor de bytes.
Parâmetros
data:Vector.<Number> — um vetor de valores de 32 bits. Um vértice único é composto por um número de valores guardados em sequência no vetor. O número de valores em um vértice é especificado no momento da criação de buffers que utilizem o parâmetro data32PerVertex para o método createVertexBuffer3D() de Context3D. O comprimento do vetor deve ser o número de valores por vértice multiplicado pelo número de vértices.
| |
startVertex:int — O índice do primeiro vértice a ser carregado. Um valor de startVertex não diferente de zero pode ser utilizado para carregar uma subregião dos dados de vértice.
| |
numVertices:int — O número de vértices representados por data .
|
Lança
TypeError — Erro de Ponteiro Nulo: quando data é null.
| |
RangeError — Tamanho de entrada incorreto: quando o número de elementos em data for menor que numVertices * data32PerVertex em Context3D::createVertexBuffer() , ou quando startVertex + numVertices for maior que numVertices em Context3D::createVertexBuffer() .
|
setVertexBufferAt()
para especificar que os três primeiros pontos de dados são passados para o programa de vértice como valores de ponto flutuante 3 em va0 e que os três segundos pontos de dados são passados como va1. Um programa de vértice pode ter até oito entradas, também conhecidas como registros de atributo de vértice, definidas deste modo.
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:10 AM Z