Spis treści
1 Wstęp
2 Definiowanie wierzchołków
3 Renderowanie
4 Kod źródłowy
3. Wyświetlanie figur płaskich na ekranie
Wstęp
W kroku 2. Uruchamianie urządzenia i renderowanie stworzyliśmy pierwszą aplikację renderującą w DirectX. Co prawda dokonywała ona prezentacji sceny, jednak owe scena nie składała się z żadnych obiektów. Teraz do aplikacji dodamy wyświetlanie ekranowego trójkąta.W Direct3D wszystkie bryły są opisane za pomocą współrzędnych ekranowych (transformed - uznanych za już przekształcone) lub przestrzennych (positioned - wymagających transformacji). Bryły ekranowe są opisane przy pomocy współrzędnych ekranu i nie ulegają przekształceniom przestrzeni 3D. Dzięki temu doskonale nadają się do prezentacji elementów interfejsu użytkownika.
W tym przykładzie postaramy się rozbudować aplikację w taki sposób, aby renderowała kolorowy kwadrat: określony zostanie kolor każdego z wierzchołków, a powierzchnia kwadratu zostanie potraktowana jako gradient.

<center>Rys. 1. Okno aplikacji z kwadratem z wierzchołków ekranowych</center>
Definiowanie wierzchołków
Do klasy TDirectX dodajmy pole prywatne:CustomVertex.TransformedColored[] vertex;
Będzie to tablica czterech wierzchołków kwadratu. Wypełnijmy ich opis w funkcji Initialize. Ponieważ jako typ wierzchołków wybraliśmy wierzchołki ekranowe, opisane kolorem (polecam poznanie innych możliwości), musimy podać współrzędne X, Y, Z (przy wierzchołkach ekranowych - warstwa), RHW (reciprocal homogenous W; współczynnik skalowania, zwykle równy 1) oraz kolor. Poniżej zaprezentowano uzupełnianie współrzędnych na dwa sposoby: przy pomocy uzupełniania współrzędnych indywidualnych oraz przez zdefiniowanie wektora (X, Y, Z, RHW).
/// <summary> /// Tworzenie wszystkich elementów sceny /// </summary> private void Initialize() { vertex = new CustomVertex.TransformedColored[4]; vertex[0].Color = Color.Red.ToArgb(); vertex[0].X = 0; vertex[0].Y = 0; vertex[0].Z = 0; vertex[0].Rhw = 1; vertex[1].Color = Color.Green.ToArgb(); vertex[1].X = 64; vertex[1].Y = 0; vertex[1].Z = 0; vertex[1].Rhw = 1; vertex[2].Color = Color.Blue.ToArgb(); vertex[2].Position = new Vector4(0, 64, 0, 1); vertex[3].Color = Color.Yellow.ToArgb(); vertex[3].Position = new Vector4(64, 64, 0, 1); }
Renderowanie
Renderowanie brył ekranowych jest możliwe na kilka sposobów. Najprostszym jest określenie formatu wierzchołków i wykreślenie brył na ich podstawie.TriangleStrip to typ figury bazowej, w której pierwsze trzy wierzchołki tworzą trójkąt, a każdy następny tworzy nowy trójkąt z dwoma poprzednimi wierzchołkami.
device.VertexFormat = CustomVertex.TransformedColored.Format; device.DrawUserPrimitives(PrimitiveType.TriangleStrip, 2, vertex);
Kod źródłowy
Całość kodu źródłowego projektu: d3dkurs3_(poprawiony).zip (4,94 KB)2 komentarze
u mnie pojawia sie czarny kwadrat a nie kolorowy. Sciagnalem tez kod zrodlowy i kwadrat tez jest czarny. nie wiem czy to blad w kursie czy cos nie tak u mnie z kompem??
Blad byl w kodzie kursu. Dzieki za zwrocenie uwagi. Teraz powinno byc dobrze - jesli wciaz cos bedzie nie tak, dajcie znac.