È necessario creare un nuovo VertexBuffer3D & IndexBuffer3D per ciascun programma3d utilizzato?
-
29-10-2019 - |
Domanda
Se ne ho alcuni Program3D
oggetti (ognuno con il suo Vertex-Shader e Shader frammento responsabile del proprio compito di rendering), devo istanziare un nuovo VertexBuffer3D
e IndexBuffer3D
in modo che archiviano i dati solo pertinenti al formato dei dati vertici utilizzati dal loro corrispondente Program3D
?
Ad esempio, se avevo intenzione di definire i quad in diversi formati di dati di vertice, come ad esempio:
var vertexData:Vector.<Number>;
//Vertex-Format A:
vertexData = new <Number>[
//X, Y, U, V
-.5, -.5, 0, 0,
.5, -.5, 1, 0,
.5, .5, 1, 1,
-.5, .5, 0, 1
];
//Vertex-Format B:
vertexData = new <Number>[
//X, Y, U, V, Matrix-Constant ID, Color
-.5, -.5, 0, 0, 3, 0xff0000,
.5, -.5, 1, 0 , 3, 0x00ff00,
.5, .5, 1, 1, 3, 0x0000ff,
-.5, .5, 0, 1, 3, 0xffff00
];
//Vertex-Format C:
vertexData = new <Number>[
//X, Y, Matrix-Constant ID
-.5, -.5, 3,
.5, -.5, 3,
.5, .5, 3,
-.5, .5, 3
];
Avrei bisogno di crearne uno VertexBuffer3D
e IndexBuffer3D
immagazzinare formato a, un altro per formato b, e ancora un altro per formato c? O i vari formati possono essere miscelati all'interno dello stesso VertexBuffer3D
e poi fare un uso intelligente (o confuso!) Di un singolo IndexBuffer3D
per disegnare i triangoli?
Nessuna soluzione corretta