|
DirectX 7 a Delphi
30.11. 2009 - Po umornem snazeni s DirectX bych dnes vsem doporucil OpenGL.
Na těchto stránkách se pokusím vám vysvětlit podstatu DirectX v Delphi a to pomocí příkladů.
Na začátech bych chtěl uvést, že je dobré mít k dispozici MS SDK DirectX7
(Microsoft Software Development Kit), který můžete nalézt na stránkách Microsoftu.
Má asi 126MB. 56k modemem jsem to začal stahovat v sobotu v 10 hod. ráno přes
volný a Internet99 a ve 4 hod. odpoledne už to bylo u mě doma. Celková cena za připojení
byla míň než stovka. A když ne celý SDK tak si alespoň stáhněte jeho help, který najdete
někde na www.bigfoot.com/~ungerik.
Všechno, co ke své práci potřebujete je Delphi (od 3 výše to funguje bez problémů),
přeložené hlavičkové soubory (ty najdete také na výše uvedené adrese a nebo tady - 165kB) a
hlavně řádně nainstalované DirectX7. Po rozbalení přeložených jednotek k nim musíte přidat
cestu v Delphi (Tools - Environment - Library - Library Path a Browsing Path).
Užitečná je i jednotka DDUtil.pas (2kB). Tu jednoduše přikopírujte k ostatním.
Jistý Arne Schäpers přeložil pomocné soubory k Direct3D. D3DUtil.zip (42kB)
stačí rozbalit a zkopírovat k ostatním jednotkám pro DirectX. Pokud již náhodou nějaké stejnojmené jednotky
máte, doporučuji je přepsat těmito, protože umí ještě něco navíc.
A můžeme se pustit do práce.
Podstata DirectX 7
Všechno to funguje pomocí rozhraní v Delphi (interface). Jedná se o něco jako
objekt, který se napojuje na DLL knihovnu. Nějakou jednoduchou funkcí vyexportovanou
DLL knihovnou si tento objekt vytvoříte a pak už manipulujete jen s ním. Z paměti se
uvolní dost jednoduše, zkusíte jestli je ukazatel platný a přiřadíte do něj nil:
if Assigned(DDSurface) then DDSurface := nil;
Celé DirectX se dělí na několik skupin fukcí a objektů podle zaměření.
- DirectDraw - 2D grafika, základ pro Direct3D
- Direct3D - 3D prostorová grafika, textury, světla...
- DirectSound - produkce a záznam zvuku
- DirectMusic - MIDI hudba
- DirectPlay - síťové rozhraní
- DirectInput - ovládání (myš, klávesnice, joystick...)
Zjistil jsem, že na nějaké podrobné vysvětlování nemám moc čas.
Proto to uskutečním formou příkladů. Doporučuji si také přečíst
help, co je u MS SDK-DirectX 7 (viz úvod této stránky).
Příklady:
- autíčko v kruhu (11kB) - DirectDraw, fullscreen.
- autíčko v kruhu v okně (11kB) - DirectDraw, v okně, trochu to bliká,
ale ještě to není všechno.
- 3D trojúhelník (6,5kB) - DirectDraw, Direct3D, Z-Buffer, v okně, po úpravě poznámek to jede i fullscreen.
- 3D delfín plave na dně moře (120kB) - Direct3D, tento příklad přeložil z C++ do Delphi Arne Schäpers.
Potřebujete k jeho funkčnosti i překlady pomocných jednotek k Direct3D (rovněž od Arne Schäperse) - D3DUtil (42kB).
můžete jen stáhnout příklad, který tady rozeberu a vysvětlím.
Je udělaný v Delphi 5, ale formulář je uložený textově, takže stačí ve starší verzi vytvořit
nový form, zobrazit ho textově (View as text) a obsah nahradit textem v souboru DFM. Potom ho stačí uložit
a výsledným DFM souborem nahradit DFM soubor z Delphi5.
|
|