Пользовательская декларация вершин XNA 4.0 - PullRequest
3 голосов
/ 03 марта 2012

Я сейчас пытаюсь сделать собственное объявление вершины.

Тот, где позиция, цвет и целое число передаются в эффект. У меня возникают проблемы, определяющие, какое перечисление для VertexElementUsage будет использоваться для передачи целого числа и как определить смещение при объявлении VertexElements также?

public readonly static VertexDeclaration VertexDeclaration = new VertexDeclaration
{
    new VertexElement(0, VertexElementFormat.Vector3, VertexElementUsage.Position, 0),
    new VertexElement(12, VertexElementFormat.Color, VertexElementUsage.Color, 0),
    new VertexElement(?, VertexElementFormat.Byte4, ?, 0)
};

(Обратите внимание на? В последнем VertexElement)

1 Ответ

3 голосов
/ 03 марта 2012

это будет размер Vector2 + размер цвета. В общем, думай об этом так,
в обычном массиве есть только один тип объектов, поэтому известно, сколько нужно прыгнуть, чтобы перейти к следующему элементу.
Это здесь отличается, поскольку все они имеют разные размеры.
Использование sizeof () просто отлично, так что это будет выглядеть так:

public readonly static VertexDeclaration VertexDeclaration = new VertexDeclaration
{
    new VertexElement(0, VertexElementFormat.Vector3, VertexElementUsage.Position, 0),
    new VertexElement(sizeof(Vector3), VertexElementFormat.Color, VertexElementUsage.Color, 0),
    new VertexElement(sizeof(Vector3)+sizeof(Color), VertexElementFormat.Byte4, ?, 0)
};

или аналогичный.

В противном случае вы можете найти размер цветного объекта и добавить его к размеру объекта Vector3 (и это будет смещение).

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