[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.
Jedna odpowiedź Zostaw komentarz