我根据microsoft提供的基本效果示例开始了一个项目。然后我附加了键输入来移动相机。最后一步是从 DXF 文件加载测试 3d 数据。我自己编写了 DXF 导入,只是代表 3d 三角形的简单 3dface 对象。我调整了基本效果示例中的代码以读取变体顶点数。但是我得到一个错误 Normal0 丢失 - 即使顶点声明和顶点缓冲区在正确设置顶点的情况下也是如此。我认为问题出在顶点声明中。原始样本只有 12 个三角形,我的第一个样本 DXF 大约有一千个。我认为问题出在这里:
private void CreateVertexBuffer()
{
vertexDeclaration = new VertexDeclaration(new VertexElement[]
{
new VertexElement(0, VertexElementFormat.Vector3, VertexElementUsage.Position, 0),
new VertexElement(12, VertexElementFormat.Vector3, VertexElementUsage.Normal, 0),
new VertexElement(24, VertexElementFormat.Vector2, VertexElementUsage.TextureCoordinate, 0)
}
);
vertexBuffer = new VertexBuffer(
graphics.GraphicsDevice,
vertexDeclaration,
number_of_vertices,
BufferUsage.None
);
Vertices = new VertexPositionNormalTexture[number_of_vertices];
InitializeVerts();
vertexBuffer.SetData<VertexPositionNormalTexture>(Vertices);
graphics.GraphicsDevice.SetVertexBuffer(vertexBuffer);
}
顶点元素 12 ... 顶点元素 24 ... 这些是问题区域吗?