Какой эквивалентный API в Unity для рисования XNA VertexPositionNormalTexture с GraphicsDevice.DrawUserPrimitives - PullRequest
0 голосов
/ 23 сентября 2018

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...