Files
XCEngine/docs/api/resources/mesh/set-vertex-data.md

1.3 KiB

Mesh::SetVertexData

void SetVertexData(const void* data, size_t size, Core::uint32 vertexCount,
                   Core::uint32 vertexStride, VertexAttribute attributes);

设置网格的顶点数据。此方法会复制传入的数据到内部缓冲区。

参数:

  • data - 顶点数据指针,不能为 nullptr
  • size - 顶点数据总字节数
  • vertexCount - 顶点数量
  • vertexStride - 单个顶点的字节大小
  • attributes - 顶点属性标志,指定数据包含哪些顶点通道

返回:

异常:

线程安全:

复杂度: O(n) - n 为顶点数据大小

示例:

#include "XCEngine/Resources/Mesh.h"

using namespace XCEngine::Resources;

struct Vertex {
    float position[3];
    float normal[3];
    float uv[2];
};

Vertex vertices[4] = {
    {{-0.5f, -0.5f, 0.0f}, {0.0f, 0.0f, 1.0f}, {0.0f, 0.0f}},
    {{ 0.5f, -0.5f, 0.0f}, {0.0f, 0.0f, 1.0f}, {1.0f, 0.0f}},
    {{ 0.5f,  0.5f, 0.0f}, {0.0f, 0.0f, 1.0f}, {1.0f, 1.0f}},
    {{-0.5f,  0.5f, 0.0f}, {0.0f, 0.0f, 1.0f}, {0.0f, 1.0f}}
};

Mesh mesh;
mesh.SetVertexData(
    vertices,
    sizeof(vertices),
    4,
    sizeof(Vertex),
    VertexAttribute::Position | VertexAttribute::Normal | VertexAttribute::UV0
);

相关文档