Files
XCEngine/docs/api/rhi/opengl/buffer/set-data.md
2026-03-20 02:35:45 +08:00

896 B
Raw Blame History

OpenGLBuffer::SetData

void SetData(const void* data, size_t size, size_t offset = 0) override;

设置缓冲区数据。支持部分更新:当 offset == 0size 等于缓冲区大小时,使用 glBufferData 替换整个缓冲区;否则使用 glBufferSubData 进行部分更新。

参数:

  • data - 要写入的数据指针
  • size - 数据大小(字节)
  • offset - 缓冲区内的偏移量(默认 0

示例:

// 更新整个缓冲区
buffer.SetData(vertices, sizeof(vertices));

// 部分更新
buffer.SetData(newVertices, sizeof(newVertices), sizeof(vertices));

注意: 动态缓冲区使用 GL_DYNAMIC_DRAW,静态缓冲区使用 GL_STATIC_DRAW

相关文档