我正在尝试使用 Unity 编写一个计算着色器,为体素地形生成网格数据(顶点、法线、UV)。因此,我有一个自定义结构定义如下:
[StructLayout(LayoutKind.Sequential, Pack = 0)]
private struct VertexData
{
public Vector3 position;
public Vector3 normal;
public Vector2 uv;
}
然后,我正在为 ComputeShader 创建一个 ComputeBuffer,如下所示:
vecterDataCBuf = new ComputeBuffer(ChunkSize * ChunkSize * ChunkSize, sizeof(VertexData));
我收到 CS0233 错误,表明我无法在自定义结构上使用 sizeof 运算符来提供计算缓冲区的步幅,尽管我添加了打包属性。
所以我的问题是,如何在没有硬编码的情况下获得结构的大小?谢谢你。
Cats萌萌
慕标5832272
相关分类