Direct3D - Úvod, 1. diel

Či už viete programovať alebo nie, určite ste už rozmýšľali nad tým, aké by to bolo urobiť si svoju vlastnú hru alebo vlastnú 3D aplikáciu. Tento seriál vám ukáže, ako na to.
Aby ste boli schopný seriál naplno využívať, bude musieť mať slušné znalosti programovacieho jazyka C++ a programovania pod Windows a musíte vlastniť prekladač alebo vývojové prostredie, v ktorom budete môcť pracovať s Direct3D. Odporúčam Visual C++ od Microsoftu (verzia 6 alebo vyššie), alebo voľne dostupné Dev-C++ (verzia 5) od Bloodhedu.
Dopredu upozorňujem, že v seriály sa budem zaoberať verziou 8, napriek tomu, že najnovšia verzia sa píši označením 9.0c. Dôvodov je hneď niekoľko. Hlavným je ten, že som vlastníkom grafickej karty GeForce4 MX. Tá hardvérovo nepodporuje DirectX 9 a nemá ani úplnú podporu DirectX8 (Shader Model "0"). Ďalším dôvodom je, že program napísaný v DirectX 8 spustíte dnes na 95% počítačov (málokto má grafickú kartu staršiu ako GeForce2) a DirectX 8 je navyše integrovaný do Windowsu XP, takže používateľ nemusí DirectX vôbec inštalovať.
V prvom diele sa pozrieme na zúbok vyššie menovaným vývojovým prostrediam a stručne si povieme, ako ich nastaviť na použitie s DirectX a povieme si niečo o architektúre DirectX aplikácie.

Čo je to DirectX?
DirectX je skupinou nízko-úrovňových API (Application Programming Interface) pristupujúcich k hardvéru počítača. Je určené najmä do oblasti vývoja hier, ale dá sa bez problémov použiť aj v iných oblastiach. Od verzie 8 sa skladá z niekoľkých hlavných komponentov. Sú nimi DirectX Graphics, DirectX Audio, DirectInput, DirectPlay, DirectShow a DirectSetup.
 
DirectX Graphics

Práca s 2D a 3D grafikou. Objavil v DirectX 8, kde vznikol zlúčením Direct3D a DirectDraw do jednho celku. Funguje ako nadstavba nad klasickým windowsovým GDI (Graphics Device Interface). To znamená, že Direct3D aplikácia môže koexistovať súčastne s GDI aplikáciu. Direct3D aplikácia však môže nad GDI preberať kontrolu  tak, že sa vytvorí abstrakčná úroveň ("prekryje" GDI). To znamená, že kontrolu nad vykresľovaním danej aplikácie preberá hardvér, v bežnom prípade grafická karta.

DirectX Audio

Práca so zvukom a hudbou. Podobne ako DirectX Graphics, aj tento komponent vznikol zlúčením dvoch bývalých súčastí. V tomto prípade zlúčením DirectSound a DirectMusic. Vo verzii 8 zahrňuje mohutnú podporu priestorového zvuku.

DirectInput

Vstupné a výstupné zariadenia (klávesnica, myš, joystick) sú krotené pomocou DirectInput. Popri DirectSetup ide o najjednoduchšiu súčasť DirectX. Od DirectX verzie 8 sa prekticky nezmenila.

DirectShow

Slúži na prácu s videom. Vďdka DirectShow môžete vytvoriť videoprehrávač, ktorý je akcelerovaný výkonom vašej grafickej karty.

DirectPlay

Internetová a sieťová komunikácia. Používa sa najmä pri tvorbe multiplayeru.

DirectSetup

Umožnuje nainštalovať potrebné súbory pre DirectX.
Tento seriál sa bude spočiatku zaoberať prvým zo spomínaných komponentov, neskôr pokryje aj tie zvyšné. Teraz ale už k samotným vývojovým prostrediam.

DirectX a Dev-C++ 5
http://www.bloodshed.net
Dev-C++ je veľmi dobré vývojové prostredie. Jeho najväčšími výhodami sú prepojenie s kompilátorom Mingw, alebo Cygwin (dá sa nastaviť) a skutočnosť, že je zadarmo. Umožní vám pohodlne pracovať ako s textovým editorom, navyše obsahuje aj nástroje na nastavenie kompilátora, debuggera a výdojového prostredia samotného. Podľa môjho názoru je to tá najlepšia vec svojho druhu aká sa dá zohnať.
Poďme však k veci. Nebudem za zaoberať tým, ako ho nainštalovať a podobne - to musí zvládnuť každý, v opačnom prípade nemá mať čo spoločné s programovaním... Navštívte stránku www.devlib-central.org a stiahnite si z nej DevCpp Packages (4,46MB). Niekam ho rozbaľte - v Dev-C++ IDE potom choďte do Package Managera a stlačte tlačidlo Install. V novootvorenom okne choďte do zložky, kam ste rozbalili balíček a vyberte to čo sa volá DirectX9.DevPak. Týmto ste nainštalovali všetky potrebné súčasti DirectX9 SDK na váš počítač. Projekt vytvárajte výlučne "Empty Project" (uľahčí vám to život, ale nechám to na vás) a uistite sa, že je ako jazyk zvolené C++ (ďalšie uľahčenie). V nastavení projektu v záložke "General" sa uistite, či je typ aplikácie nastavený na Win32 GUI. V záložke "Parameters" pridajte linkeru tieto knižnice nasledovne. Buď stlačíte tlačidlo Add Libary a vyhľadáte v zložke Lib adresára kam ste Dev-C++ nainštalovali súbory libd3d9.a a libd3dx9d.a. Tým by ste mali projekt pre použitie s Direct3D9 nastavený.

DirectX a Visual C++
http://www.microsoft.com
Kým v prípade Dev-C++ bolo všetko veľmi jednoduché, pretože vám stačí stiahnuť 4,46MB súbor, tu to tak už nie je. Zo stránky Microsoftu si budete musieť stiahnuť približne 250MB DirectX9 SDK. Približne preto, lebo DirectX9 SDK zaznamenalo od svojho prvého vydania (koncom 2003) už zaznamenalo niekoľko updatov spôsobených vydaním nových verzií DirectX 9.0b a 9.0c. Okrem toho Microsoft každé 3 mesiace uvedie upgradnutú verziu obsahujúcu nové nástroje, a to buď na uľahčenie práce, alebo úplne nanič (tých je viac).
Ale teraz pozor! V prípade že používate Visual Studio 6 (VC++ 6), nesťahujte verziu označovanú ako April update a novšiu, s najväčšou pravdepodobnosťou vám totiž nebude fungovať! Ak používate Visual Studio .NET (VC++ 7.x) bude všetko v poriadku. Ja sa budem zaoberať spôsobom nastavenia pod Visual Studiom .NET, ale z vlastnej skúsenosti vám môžem povedať, že všetko sa bude nastavovať približne rovnako, iné budú len názvy tlačidiel.
Po stiahnutí a nainštalovaní budete mať v porovnaní s Dev-C++-ákmi výhodu v podobe pomerne kvalitného helpu, ktorý vám neraz zachráni nervy. Pre nastavenie projektu stačí jednoducho pridať potrebné knižnice v položke Linker->Command line. Napíšte "d3d9.lib" a "d3dx9.lib", resp. "d3dx9d.lib pre debug mód a hotovo.

Poznámka: Všimnite si písmeno "d" v názve knižnice d3dx9d.lib (retail verzia má teda názov d3dx9.lib). Toto písmeno hovorí, že ide o debug verziu knižnice. Od retail verzie sa líši v prvom rade nižšou rýchlosťou a tým, že keď program kompilujete v debug móde, tak vám vyhadzuje rôzne informácie o tom, či ste náhodou niečo zle nespravili ešte predtým, ako pustíte program atď. Treba na to však ešte pred tým ako includujete hlavičkové súbory Direct3D napísať definíciu D3D_DEBUG_VERSION. Táto skutočnosť platí pre všetky knižnice DirectX.
#define D3D_DEBUG_INFO

#include <d3dx9.h>

Poznámka: V prípade, že používate Dev-C++ ste si už možno všimli, že tam žiadna retail verzia knižnice neni. Áno, máte pravdu, nie je tam. V jeho prípade asi záleží na tom, či je program kompilovaný v debug móde alebo nie, alebo definíciou D3D_DEBUG_VERSION.

Záver
Nasledujúci diel seriálu bude už zameraný na vývoj DirectX aplikácií. Naučíme sa, ako inicializovať Direct3D a výstižne vám všetko opíšem. Ak sa vám z nejakého dôvodu nebude seriál pozdávať, ale by ste mali návrhy na zlepšenie, poprípade návrhy na obsah jednotlivých dielov seriálu, moja emailová schránka je na vás pripravená.
Alternatívne verzie: Text PDF Voice
Autor: Ribi · Kategória: Programovanie · Dátum: 01.05.2005 22:53

Komentáre

Zatiaľ tu nie sú žiadne komentáre.

Osobné údaje
Captcha
Odpíšte text z obrázku. Rozlišujú sa malé a veľké písmená.
Obsah
Možnosti