Un nouveau VertexBuffer3D et IndexBuffer3d devraient-ils être créés pour chaque programme3D utilisé?
-
29-10-2019 - |
Question
Si j'en ai quelques-uns Program3D
objets (chacun avec lui-même Vertex-shadder et Fragment-shadder Responsable de sa propre tâche de rendu), ai-je besoin d'instancier un nouveau VertexBuffer3D
et IndexBuffer3D
afin qu'ils stockent les données uniquement pertinentes pour le format de données vertex utilisées par leur correspondant Program3D
?
Par exemple, si je prévoyais de définir des quads dans différents formats de données de sommet, comme:
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
];
Aurais-je besoin d'en créer un VertexBuffer3D
et IndexBuffer3D
ranger format a, un autre pour format b, et encore un autre pour format c? Ou les différents formats peuvent-ils être mélangés à l'intérieur de la même VertexBuffer3D
puis faire une utilisation intelligente (ou déroutante!) IndexBuffer3D
pour dessiner les triangles?
Pas de solution correcte