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_BUFFERELEMENT_ARRAY_BUFFER。您只需要在 glDrawElements 调用中使用特定的字节偏移量。