OpenGL:对 ARRAY_BUFFER 和 ELEMENT_ARRAY_BUFFER 使用单个数据块
OpenGL: using a single blob of data for ARRAY_BUFFER and 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
}
]
因此,我使用绑定了 VertexArray 的一次 glBufferData
调用将二进制数据发送到 GPU。现在我需要使用 glDrawElements
以某种方式绘制图元。有没有办法创建一个 ELEMENT_ARRAY_BUFFER
并将其指向已加载缓冲区的一部分?
Is there a way to create an ELEMENT_ARRAY_BUFFER
and point it to a part of an already loaded buffer?
没有必要,因为 OpenGL 缓冲区对象根本没有 typed。您可以同时将同一缓冲区绑定到不同的绑定目标,没有任何问题,因此您可以简单地将同一缓冲区绑定为 ARRAY_BUFFER
和 ELEMENT_ARRAY_BUFFER
。您只需要在 glDrawElements
调用中使用特定的字节偏移量。
我正在尝试绘制一个 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
}
]
因此,我使用绑定了 VertexArray 的一次 glBufferData
调用将二进制数据发送到 GPU。现在我需要使用 glDrawElements
以某种方式绘制图元。有没有办法创建一个 ELEMENT_ARRAY_BUFFER
并将其指向已加载缓冲区的一部分?
Is there a way to create an
ELEMENT_ARRAY_BUFFER
and point it to a part of an already loaded buffer?
没有必要,因为 OpenGL 缓冲区对象根本没有 typed。您可以同时将同一缓冲区绑定到不同的绑定目标,没有任何问题,因此您可以简单地将同一缓冲区绑定为 ARRAY_BUFFER
和 ELEMENT_ARRAY_BUFFER
。您只需要在 glDrawElements
调用中使用特定的字节偏移量。