Unity中用于通过GraphicsDevice.DrawUserPrimitives绘制XNA VertexPositionNormalTexture的等效API是什么

时间:2018-09-23 12:08:01

标签: c# unity3d xna

我正在将一个大型XNA项目移植到Unity项目中。我没有编写XNA项目,也没有任何背景知识。移植进行得很顺利,直到我遇到了用于绘制几何图形的零件。如下图所示:

using (VertexDeclaration vertexdecl = 
new VertexDeclaration(GraphicsDevice,                                    
VertexPositionNormalTexture.
VertexElements))
{
    GraphicsDevice.VertexDeclaration = vertexdecl;
    GraphicsDevice.DrawUserPrimitives(PrimitiveType.TriangleList, verticesArray, 0, 2);
}

它试图绘制的verticesArray变量以VertexPositionNormalTexture结构表示,并初始化如下:

VertexPositionNormalTexture[] verticesArray;

private void InitGeometry()
{
    verticesArray = new VertexPositionNormalTexture[6];
    verticesArray[0] = new VertexPositionNormalTexture( new Vector3(-20,0,0),
                                                  -Vector3.UnitZ,
                                                   new Vector2(0,0));
    verticesArray[1] = new VertexPositionNormalTexture( new Vector3(20,10,0),
                                                   -Vector3.UnitZ,
                                                   new Vector2(13,12));
    verticesArray[2] = new VertexPositionNormalTexture( new Vector3(-5, 20, 0),
                                                   -Vector3.UnitZ,
                                                   new Vector2(0, 1));

    verticesArray[3] = verticesArray[0];
    verticesArray[4] = new VertexPositionNormalTexture( new Vector3(5, 0, 0),
                                                   -Vector3.UnitZ,
                                                   new Vector2(3, 0));
    verticesArray[5] = verticesArray[1];
}

我能够从源头上重新创建VertexPositionNormalTexture,但是现在却很难像上面使用的GraphicsDevice.DrawUserPrimitives那样绘制它。

我发现最接近的Unity函数是Graphics.DrawMesh,但它只能绘制传递给它的Mesh。同样,即使我设法将VertexPositionNormalTexture转换为Mesh,Unity的Graphics.DrawMesh函数也没有PrimitiveType.TriangleList枚举或类似的东西。

也许我错过了它,但是Unity中是否有类似的功能来绘制VertexPositionNormalTexture struct

0 个答案:

没有答案