Paquete | flash.display3D |
Clase | public class VertexBuffer3D |
Herencia | VertexBuffer3D Object |
Versión del lenguaje: | ActionScript 3.0 |
Versiones de motor de ejecución: | Flash Player 11, AIR 3 |
Utilice un objeto VertexBuffer3D para definir los datos asociados con cada punto de un conjunto de vértices. Puede cargar los datos de vértices desde un conjunto de vectores o de bytes. (Una vez cargado el archivo, los datos en el conjunto original pierden la referencia; cambiar o descartar el conjunto original no cambia los datos de vértices).
Los datos asociados a cada vértice están en un formato definido por la aplicación y se utilizan como entrada para el programa de sombreado de vértices. Identifique qué valores pertenecen a cada entrada de programa de vértices mediante la función setVertexBufferAt()
Context3D. Un programa de vértices puede utilizar hasta ocho entradas (también conocidas como registros de atributos de vértice). Cada entrada puede requerir entre uno y cuatro valores de 32 bits. Por ejemplo, las coordenadas de posición [x,y,z] de un vértice pueden transferirse a un programa de vértices como un vector que contiene tres valores de 32 bits. La clase Context3DVertexBufferFormat define constantes para los formatos compatibles para entradas de sombreado. Es posible suministrar hasta sesenta y cuatro valores de 32 bits (256 bytes) de datos para cada punto (pero un solo sombreador de vértices no puede utilizar todos los datos en este caso).
La función setVertexBufferAt()
también identifica qué búfer de vértices se usará para el procesamiento de las futuras llamadas a drawTriangles()
. Para procesar datos desde otro búfer de vértices, llame de nuevo a setVertexBufferAt()
con los argumentos apropiados. (Puede almacenar datos para el mismo punto en varios búfer de vértices, por ejemplo, datos de posición en un búfer y coordenadas de textura en otro, pero normalmente la representación es más eficiente si todos los datos de un punto provienen de un solo búfer.)
El objeto Index3DBuffer transferido al método drawTriangles()
Context3D organiza los datos de vértice en triángulos. Cada valor en el búfer de índices es el índice de un vértice en el búfer de vértices. Un conjunto de tres índices en una secuencia define un triángulo.
No es posible crear un objeto VertexBuffer3D directamente. Utilice en su lugar el método createVertexBuffer()
Context3D.
Para liberar recursos del contexto de procesamiento asociados con un búfer de vértices, llame al método dispose()
del objeto.
Elementos de API relacionados
Método | Definido por | ||
---|---|---|---|
Libera todos los recursos asociados a este objeto. | VertexBuffer3D | ||
Indica si un objeto tiene definida una propiedad especificada. | Object | ||
Indica si hay una instancia de la clase Object en la cadena de prototipo del objeto especificado como parámetro. | Object | ||
Indica si existe la propiedad especificada y si es enumerable. | Object | ||
Establece la disponibilidad de una propiedad dinámica para operaciones de bucle. | Object | ||
Devuelve la representación de cadena de este objeto, con formato según las convenciones específicas de configuración regional. | Object | ||
Devuelve la representación de cadena del objeto especificado. | Object | ||
Carga los datos desde un conjunto de puntos en el contexto de procesamiento desde un conjunto de bytes. | VertexBuffer3D | ||
Carga los datos desde un conjunto de puntos en el contexto de procesamiento desde un conjunto de vectores. | VertexBuffer3D | ||
Devuelve el valor simple del objeto especificado. | Object |
dispose | () | método |
public function dispose():void
Versión del lenguaje: | ActionScript 3.0 |
Versiones de motor de ejecución: | Flash Player 11, AIR 3 |
Libera todos los recursos asociados a este objeto. Tras eliminar un búfer de vértices, llamar a upload() y realizar el procesamiento con este objeto fallará.
uploadFromByteArray | () | método |
public function uploadFromByteArray(data:ByteArray, byteArrayOffset:int, startVertex:int, numVertices:int):void
Versión del lenguaje: | ActionScript 3.0 |
Versiones de motor de ejecución: | Flash Player 11, AIR 3 |
Carga los datos desde un conjunto de puntos en el contexto de procesamiento desde un conjunto de bytes.
Parámetros
data:ByteArray — conjunto de bytes que contiene los datos de vértices. Cada valor de datos tiene cuatro bytes de longitud. El número de valores de un vértice se especifica en la creación del búfer con el parámetro data32PerVertex en el método Context3D createVertexBuffer3D() . La longitud de los datos en bytes debe ser byteArrayOffset más cuatro veces el número de valores por vértice multiplicado por el número de vértices. El objeto ByteArray debe utilizar el formato little-endian.
| |
byteArrayOffset:int — número de bytes que se saltan desde el comienzo de los datos
| |
startVertex:int — El índice del primer vértice que se va a cargar. Se puede usar un valor para startVertex distinto de cero para cargar una subregión de datos del vértice.
| |
numVertices:int — El número de vértices que se va a cargar desde data .
|
Emite
TypeError — Error de puntero nulo: cuando data es null.
| |
RangeError — Tamaño de entrada incorrecto: si byteArrayOffset es inferior a 0, o si byteArrayOffset es mayor o igual que la longitud de data o si no lo es. de elementos de data - byteArrayOffset es menor que numVertices *data32pervertex * 4 dado en Context3D::createVertexBuffer() .
| |
Error — 3768: la API Stage3D no se puede usar durante la ejecución en segundo plano.
|
uploadFromVector | () | método |
public function uploadFromVector(data:Vector.<Number>, startVertex:int, numVertices:int):void
Versión del lenguaje: | ActionScript 3.0 |
Versiones de motor de ejecución: | Flash Player 11, AIR 3 |
Carga los datos desde un conjunto de puntos en el contexto de procesamiento desde un conjunto de vectores.
Parámetros
data:Vector.<Number> — un vector de valores de 32 bits. Un solo vértice está formado por un número de valores almacenados secuencialmente en el vector. El número de valores de un vértice se especifica en la creación del búfer con el parámetro data32PerVertex en el método Context3D createVertexBuffer3D() . La longitud del vector debe ser el número de valores por vértice multiplicado por el número de vértices.
| |
startVertex:int — El índice del primer vértice que se va a cargar. Se puede usar un valor para startVertex distinto de cero para cargar una subregión de datos del vértice.
| |
numVertices:int — El número de vértices representado por data .
|
Emite
TypeError — Error de puntero nulo: cuando data es null.
| |
RangeError — Tamaño de entrada incorrecto: cuando el número de elementos de data es menos que numVertices * data32PerVertex dado en Context3D::createVertexBuffer() , o cuandostartVertex + numVertices es mayor que numVertices dado en Context3D::createVertexBuffer() .
|
setVertexBufferAt()
para especificar que los tres primeros puntos de datos se transfieren al programa de vértices como 3 valores de coma flotante en va0 y que los segundos tres puntos de datos se transfieren como va1. Un programa de vértices puede tener hasta 8 entradas, también conocidas como registros de atributos de vértices, definidas del modo siguiente.
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, 02:12 PM Z