Я портирую большой проект 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
?