PowerDraw to największy konkurent DelphiX. Przewyższa go znacznie prędkością działania oraz ilością oferowanych możliwości. Dzięki niemu nasze projekty będą działać szybciej i sprawniej. Znika ograniczenie koloru „Transparent”, teraz możemy korzystać rysunków o dowolnych wartościach przezroczystości w różnych jego miejscach. Dzięki temu grafika jest bardziej realistyczna.
Elementy składowe :
TPowerDraw – główny komponent, w nim ustawiamy rozdzielczość, częstotliwość odświeżania ekranu, liczbę kolorów, wygładzania krawędzi, tryb pełnoekranowy, itp.
TPowerTimer1 – jest odpowiedzialny za to, co ma się dziać w czasie uruchomienia programu np. wyświetlanie grafiki, wykonywanie różnych poleconych czynności. Możemy ustawić domyślną wartośći FPS (prędkość w klatek/sekundę). Dla MayProcess, … ustawiamy wartość True, jeśli z nich korzystamy (patrz. Events).
TVTDb -biblioteka grafiki. W niej odnosimy się do pliku vtd utworzonego wcześniej w programie np. VTDTool (znajdziesz go w katalogu Misc ). Możesz pliki z grafiką zabezpieczyć hasłem, wtedy będzie konieczne podanie w polu „Password” hasła.
TPowerFont1 – służy do wyświetlania tekstu. „Scale” to oczywiście rozmiar, „Spacing” odległość pomiędzy znakami.
TPowerInput – Obsługuje urządzenia takie jak mysz, klawiatura czy joystick. W porównaniu do standardowych poleceń obsługi klawiatury jest znacznie szybszy.
TVScreen – Przeznaczony do wyświetlania ekranu w okienku. Można na formie postawić kilka takich komponentów, wtedy uzyskamy ciekawy efekt – wyświetlanie grafiki tylko w wybranych obszarach.
TAGFImageList – Odpowienik znanego z DelphiX DXImageList. Jest to nic innego jak tablica z plikami graficznymi z biblioteki TVTDb.
TParticleEngine – służy do tworzenia efektów cząsteczkowych np. dym, ogień, chmury.
TObjectEngine – przeznaczony do obsługi obiektów w grze np. gracze, budowle, strzały itp.
Szablon programu
Wstawmy na formę odpowiednie elementy:
1 2 3 4 |
Komponent Proponowana nazwa PowerDraw PowerDraw1 VTDb Biblioteka PowerTimer PowerTimer1 (MayRender True) |
Do uses dodajmy pliki :
1 |
PowerTimers, PowerTypes, PowerDraw3, AGFUnit, PDrawEx, D3D9, VTDbUnit |
Następnie zadeklarujmy rysunek :
1 2 3 |
var Rys : TAGFImage; |
1. Inicjacja trybu graficznego
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 |
procedure TForm1.FormCreate(Sender: TObject); begin //Inicjacja PowerDraw PowerDraw1.Initialize; //Inicjacja trybu graficznego PowerDraw1.InitDevice; //Ścieżka do pliku PDrawEx.dll. Jest on wymagany do uruchomienia każdej gry oraz programu stworzonego przy //użyciu PowerDraw. Znajdziesz go w katalogu <i>Misc</i>. PDrawExDLLName := 'System/' + PDrawExDLLName; // Otwieranie pliku z grafiką i inicjacja VTDb Biblioteka.Initialize(); // Zanim uruchomisz program musisz przy użyciu VTDTool stworzyć bibliotekę i umieścić w niej rysunek Biblioteka.FileName:='data/biblioteka.vtd'; // tworzymy obraz i przypisujemy mu grafikę z biblioteki Rys := TAGFImage.Create(PowerDraw1); Rys.LoadFromVTDb(Biblioteka,'PDRAW32', D3DFMT_A8R8G8B8); end; |
2. Wyświetlanie rysunków
Na początku zapoznaj się z kodem :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 |
procedure TForm1.PowerTimer1Render(Sender: TObject); begin with PowerDraw1 do begin //czyści ekran Clear(clBlack); BeginScene; // Rysujemy pierwszą klatkę PowerDraw1.RenderEffect(Rys ,10 ,10 ,0 ,EffectSrcAlpha); //Rysujemy drugą klatkę PowerDraw1.RenderEffect(Rys ,250 ,10 ,1 ,EffectSrcAlpha); EndScene; //Wyswietla wszystko na ekranie Present; end; end; |
Do wyświetlania grafiki używamy polecenia RenderEffect o określonych parametrach
RenderEffect(nazwa rysunku, pozycja od lewej, pozycja od góry, numer klatki, efekt);
Ostatni parametr może przyjmować wartości :
EffectNone – rysujemy cały rysunek nie uwzględniając Transparent ani Alpha
EffectAdd – „Dokładamy” na rysunek pod nim wartość kolorów tego rysunku łącząc je
effectSrcAlpha – rysuje obraz uwzględniając kanał Alpha oraz kolor Transparent
effectNegative – tworzy negatyw rysunku (odwraca wartość kolorów)
effectSrcColor – przydatny do tworzenia dymu, ognia i różnych innych efektów. Odczytuje wartość Alpha według wartości natężenia barwy piksela. Nie potrzebuje maski.
Różne tryby możemy ze sobą łączyć np. zapiszesz EffectAdd or EffectSrcAlpha wtedy dodana wartość barwy uwzględniając Transparent i Alpha.
3. Formaty plików graficznych
W PowerDraw powinniśmy ustawić przy otwieraniu pliku jego format. Wyróżniamy :
D3DFMT_A8R8G8B8 – 32 bitowy rysunek ( plik z maską ma wbudowaną )
D3DFMT_R5G6B5 – 16 bitowy rysunek, bez kanału alpha i koloru przezroczystości
D3DFMT_A1R5G5B5 – 16 bitowy rysunek, 1-biowa maska przezroczystości lub tansparentcolor.
D3DFMT_A4R4G4B4 – 16 bitowy rysunek, 4-bitowa maska przezroczystości, dobra jakość
D3DFMT_A8R8G8B8 – to co wyżej, ale 32-bitowy obrazek
D3DFMT_R3G3B2 – 8 bitowy rysunek, słaba jakość
D3DFMT_A8R3B3B2 – 16-bitowy rysunek, 8-bitowy kanał alpha, dobra jakość, przydatny przy tworzeniu ognia, dymu. Zapisujemy format w poleceniu do ładowania rysunku :
1 |
Rys.LoadFromVTDb(Biblioteka,'PDRAW32', D3DFMT_A1R5G5B5); |
Możemy skorzystać z automatycznego przypisania trybu :
1 |
Rys.LoadFromVTDb(Biblioteka,'PDRAW32', PowerDraw1.DefTextureFormat); |
Jeśli macie jeszcze wątpliwości to zapraszam na forum oraz do kodu źródłowego.
Autor: Nakiel