我正在将一个大型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
?