[XNA] Rysowanie bez modelu

W przeważającej większości content gry stanowią modele przygotowane przez grafików. Bez gotowego pliku z siatką też da się coś na ekranie wyświetlić. Do dzieła.

Wierzchołki

Pierwszą rzeczą, na którą należy się zdecydować, to format wierzchołka. Biblioteka XNA dostarcza 4 typy, ale definiowanie własnych nie stanowi większego problemu.

Te typy to (nazwy odpowiadają polom definiującym pojedynczy wierzchołek):

  • VertexPositionColor
  • VertexPositionTexture
  • VertexPositionColorTexture
  • VertexPositionNormalTexture

Zabrakło mi w tym zestawie typu wierzchołka przechowującego pozycję, wektor normalny oraz kolor (bez współrzędnych tekstury), poniżej klasa opisująca właśnie taki typ:

public struct VertexPositionNormalColor : IVertexType
{
    public Vector3 Position;
    public Color Color;
    public Vector3 Normal;

    public VertexPositionNormalColor(Vector3 position, Vector3 normal, Color color)
    {
        Position = position;
        Normal  = normal;
        Color = color;
    }

    public static int SizeInBytes = (3 + 3 + 1) * 4; // 3 floats for Position + 3 floats for Normal + 4 bytes for Color

    public static VertexElement[] VertexElements = new[]
    {
        new VertexElement(0, VertexElementFormat.Vector3, VertexElementUsage.Position, 0),
        new VertexElement(sizeof(float) * 3, VertexElementFormat.Color, VertexElementUsage.Color, 0),
        new VertexElement(sizeof(float) * 4, VertexElementFormat.Vector3, VertexElementUsage.Normal, 0),
    };

    public VertexDeclaration VertexDeclaration
    {
        get { return new VertexDeclaration(VertexElements); }
    }
}

Różne sposoby rysowania prymitywów graficznych (punkty, linie, trójkąty) opisuje świetny artykuł na MSDN.

Be Sociable, Share!
czoper opublikowano dnia 2010-10-9 Kategoria: Daj się poznać, Programowanie, Theme Festival | Tagi:,

Jedna odpowiedź Zostaw komentarz

    Zostaw odpowiedź

    (Ctrl + Enter)