Если у меня есть несколько Program3D
объектов (каждый с его собственным Vertex-шейдеры и Фрагмент-Shader ответственности за его собственную задачу рендеринга), мне нужно, чтобы создать экземпляр нового VertexBuffer3D
и IndexBuffer3D
так, что они хранят данные только относящиеся к формату вершинных данных, используемому их соответствующими Program3D
?Должен ли создаваться новый VertexBuffer3D & IndexBuffer3D для каждого используемого Program3D?
Например, если я планировал определить Обучение танцев в различных форматах вершинных данных, такие как:
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
];
мне нужно создать один VertexBuffer3D
и IndexBuffer3D
для хранения формата А, другие один для формат B, и еще один для формат C? Или различные форматы могут быть смешаны внутри одного и того же VertexBuffer3D
, а затем сделать некоторые умные (или запутывающие!) Использование одного IndexBuffer3D
для рисования треугольников?