Direct 3D - Úvod
Samotný visual basic pre jeho relatívnu pomalosť je nevhodný pre vytváranie 2D a 3D hier. Celý prístup ku grafickému hardvéru prebieha cez množstvo volaní systémových funkcií. Prečo používať systém, ktorý nie je na zobrazovanie grafiky stavaný ? Určite si položili túto otázku aj ľudia z Microsoftu. A tak vytvorili úplne novú platformu s názvom DirectX, ktorá je už dnes štandardom. Spočiatku bol DirectX prístupný iba pre C-čkarov, ale od verzie 7.0 aj pre fanúšikov VB (možno to bolo podmienené tým, že až VB5 používal kompiláciu do natívneho kódu, čím sa stal niekoľko násobne rýchlejší vo výpočtoch ako VB4). Vďaka tomu môžete dnes písať kód pre Direct3D a vytvárať hry na profesionálnej úrovni. Dôkazom toho je 3D engine, kompletne napísaný vo VB: www.revolution3D.de.
Čo je Direct3D ?
Direct3D je skupina API funkcií, ktoré vykonávajú zložité výpočty v 3D priestore. Je súčasťou DirectX. Umožňuje nízkoúrovňový prístup k 3D akcelerátoru a hardvéru vôbec, čím výrazne urýchľuje grafické operácie.
Požiadavky
Hardvérové: Karta s 3D akcelerátorom , plne kompatibilná s Direct3D.
Softvérové: Windows9x, Me; DirectX 8.0
Osobné: Programovanie 3D aplikácií je dosť zložité. Vyžaduje výbornú matematickú logiku a predstavivosť. Istú výhodu majú ľudia, ktorý vedia pracovať v 3D kresliacich programoch ako napríklad 3D Studio alebo TrueSpace.
Visual Basic neumožňuje priamy prístup k Direct3D. Všetky príkazy a výstupy funkcií sa dejú pomocou knižnice Dx8vb.DLL, ktorá je súčasťou inštalácie DirectX8.Celý proces prístupu ku hardvéru je nasledovný:
Aplikácia –> Dx8vb.dll –>Direct3D –> HAL –> Grafický ovládač –> Grafická karta
HAL (Hardware Abstraction Layer) - je špeciálne rozhranie, pomocou ktorého komunikuje Direct3D s grafickým ovládačom.
Ako som už spomínal Visual Basic pristupuje k DirectX cez knižnicu Dx8vb.dll a tým celý priebeh komunikácie spomaľuje. Nám to však nevadí, pretože naše aplikácie nebudú náročné na výkon. Myslím, že kvalitnú hru ako napríklad Quake 3 nikto z nás nevytvorí.
Trocha z 3D teórie
Súradnice: Bod v 3D programoch má 3 súradnice X, Y, Z, ktoré určujú vzdialenosť od ich osí. Direct3D používa typ súradnicovej sústavy (pozri obrázok), ktorej os Z určíme pomocou ľavej ruky.

3D modely: základom 3D modelov je trojuholník. Pomocou niekoľkých trojuholníkov môžete zostaviť mnoho 3D modelov.
Štruktúra príkladov
Každý program, ktorý vytvoríme bude mať nasledovnú štruktúru. Zvyknite si ho používať. Uľahší vám orientáciu vo vlastnom kóde.
1. Deklarácia DirectX, Direct3D,ostatných premenných a konštánt
2. Inicializácia Direct3X, D3D
3. Inicializácia Geometrie
4. Vyčistenie obrazovky
5. Začiatok scény
6. Renderovanie
7. Koniec scény —> späť na bod č. 4
8. Uvoľnenie premenných a Direct3D z pamäti, obnovenie pôvodných hodnôt a ukončenie programu.
Upozornenie pre tých, ktorý už pracovali s DX7: V DX8 netreba deklarovať aj DirectDraw. Táto komponenta bola kôli jednoduchosti zahrnutá do Direct3D.
Slovník
Slovník obsahuje výrazy, ktoré budeme najčastejšie používať:
- Predný (primárny) buffer
- reprezentuje výstup na obrazovku
- Zadný (sekundárny) buffer
- zásobník, do ktorého si Direct3D odkladá informácie (súbor vertexov,bitmapu…), ktoré neskôr použije. Môže ich byť aj viac.
- Vertex
- vrchol. Jedná sa o bod so súradnicami X, Y, Z, farbou, normálovým vektorom atď.
- Origin
- bod so súradnicami 0, 0, 0. Udáva začiatok súradnicovej sústavy.
- Surface
- 2D povrch, používaný ako výstup pri vykreslovaní
- FramesPerSecond (FPS)
- počet vykreslených obrázkov (scén) za sekundu.
- Scéna
- scénu tvorí jeden alebo viac objektov, svetiel, pozadí…
- Z - buffer (Depht Buffer)
- speciálny zásobník, do ktorého si Direct3D odkladá vzdialenosť od kamery (bude rozobraté neskôr)
- Textúry
- bitmapy, ktoré sú natiahnuté na povrch objektu a tým mu dávajú reálny vzhľad.
- Page flipping
- proces, pri ktorom Direct3D skopíruje dáta zo sekundárneho do primárneho bufferu a tým zobrazí scénu na obrazovku. Počas kopírovania systém už opätovne zapisuje do sekundárneho bufferu. Tento proces sa v priebehu animácie opakuje. Tak sa zabráni blikaniu obrazovky. Keby existoval iba 1 buffer museli by sa najprv vykonať grafické operácie a až potom by sa výsledok zobrazil na obrazovku. Výsledný efekt by bolo blikanie obrazovky. Takto sa to deje súčasne.
- Textel
- bod na textúre