gpt4 book ai didi

javascript - 组合顶点缓冲区

转载 作者:行者123 更新时间:2023-12-02 23:18:29 25 4
gpt4 key购买 nike

我有一个问题,问题是顶点数组单独存储在对象文件中,所以它们看起来像这样(不是真正的数据):

positions: [
1, 0.5, 0.3,
3.0, 0.5, 0.3,
0.3, 0.5, 0.3,
-0.4, 0.5, 0.2
],
normals: [
0.5, 0.1, 0.3,
0.2, 0.5, 0.2,
0.3, 0.1, 0.3,
0.6, 0.3, 0.7
],
uv: [
0.3, 0.2,
0.1, 0.1,
0.7, 0.6,
0.4, 0.3
]

问题是我无法将它存储在单个顶点缓冲区中,所以我应该有这样的东西:

vertices: [
1, 0.5, 0.3, 0.5, 0.1, 0.3, 0.3, 0.2,
3.0, 0.5, 0.3, 0.2, 0.5, 0.2, 0.1, 0.1,
0.3, 0.5, 0.3, 0.3, 0.1, 0.3, 0.7, 0.6,
-0.4, 0.5, 0.2, 0.6, 0.3, 0.7, 0.4, 0.3
]
layout: [["float", 3], ["float", 3], ["float", 2]]

例如连接每个数组的每一行,以便我可以在顶点数组中使用它

是否有任何算法,或者至少,如何调用该过程来知道在哪里挖掘

最佳答案

以下应该有效:

function interleaveVertices(spec, sources) {
const vertices = [];
while (sources[0].length > 0) {
for (let i = 0; i < spec.length; i++) {
Array.prototype.push.apply(vertices, sources[i].splice(0, spec[i]));
}
}
return { vertices: vertices, layout: spec.map(s => ["float", s]) };
}

调用方式

interleaveVertices([3,3,2], [data.positions, data.normals, data.uv]);

关于javascript - 组合顶点缓冲区,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57053941/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com