OpenGL:使用单个数据块进行ARRAY_BUFFER和ELEMENT_ARRAY_BUFFER



我正在尝试绘制一个 glTF 模型,其中所有几何图形都被索引,例如:

"meshes": [
{
"name": "Plane.010",
"primitives": [
{
"attributes": {
"POSITION": 0,
"NORMAL": 1,
"COLOR_0": 2
},
"indices": 3, <-- here
"material": 0
}
]
},

但是只定义了一个缓冲区,并且没有缓冲区视图指定目标:

"buffers": [
{
"uri": "data.bin",
"byteLength": 4518576
}
]

因此,我使用对具有顶点数组绑定的glBufferData的单个调用将二进制数据发送到 GPU。现在我需要以某种方式使用glDrawElements绘制基元。有没有办法创建一个ELEMENT_ARRAY_BUFFER并将其指向已加载缓冲区的一部分?

没有办法创建一个ELEMENT_ARRAY_BUFFER并将其指向已加载缓冲区的一部分?

没有必要,因为 OpenGL 缓冲区对象根本不是类型化的。您可以同时将同一缓冲区绑定到不同的绑定目标,而不会出现任何问题,因此您只需将同一缓冲区绑定为ARRAY_BUFFERELEMENT_ARRAY_BUFFER即可。您只需要在glDrawElements调用中使用特定的字节偏移量。

最新更新