Dovolte abych se představil, mé jméno je DirectX

Asi největším otevřeným systémem postaveným na bázi COM je multimediální rozšíření platformy Win32 společnosti ...


Asi největším otevřeným systémem postaveným na bázi COM je multimediální
rozšíření platformy Win32 společnosti Microsoft, které je souborně označováno
DirectX. Ovšem klady DirectX nespočívají v tom, že ukazuje praktické nasazení
technologie COM, ale v jeho vynikajících vlastnostech na poli multimediálním.
Tento článek se snaží rozkrýt některé taje DirectX a především odpovědět na
otázku: "Kdy a kde je vhodné použít DirectX?"
Programátor, který cítí potřebu, že by ve své aplikaci mohl použít DirectX, je
postaven hned před dva problémy. Jednak neví, jak vlastně DirectX funguje, a
navíc si ani nemůže být jistý, zda právě v jeho případě je DirectX tím vhodným
nástrojem. Pokud jste se někdy do takové pozice dostali, právě pro vás je určen
tento článek.
Kdy použít DirectX
DirectX je nástroj vhodný pro široké spektrum aplikací. Praxe však ukázala, že
jeho nejčastější nasazení bývá
v počítačových hrách
při práci s videem
v multimediálních prezentacích
Je vidět, že jednotlivé oblasti nasazení se vlastně prolínají, protože např.
hry běžně obsahují videosekvence a na druhé straně kvalitní multimediální
prezentace se v mnohém právě počítačovým hrám podobají.
Pro vysvětlení důležitosti DirectX zůstaňme u počítačových her. Jak se hry liší
od běžných kancelářských aplikací? Na tuto otázku můžeme snadno najít hned
několik odpovědí.
potřeba rychlé práce s grafikou a zvukem na vysoké kvalitativní úrovni
ovládání speciálních vstupních zařízení jako joystick, volant, světelná pistole
apod.
ovládání klasických vstupních zařízení (klávesnice a myši) speciálním způsobem
Nejdůležitějším bodem je zcela jistě grafika. DirectX je jediným legálním
nástrojem, který umožňuje měnit grafické rozlišení a hloubku barev v každé
aplikaci a současně využít všechny schopnosti dnes již běžných hardwarových
akcelerátorů grafiky (2D i 3D). Rovněž zvuk je důležitou součástí her, které na
rozdíl od běžných aplikací chtějí přehrávat více zvuků současně, a to včetně
speciálních efektů, jako jsou zvuky deformované okolním prostředím nebo
prostorové zvuky.
Co se týče vstupních zařízení, můžete s nimi pracovat i bez DirectX, avšak
budete ochuzeni o některé jejich nejmocnější funkce, jako je force feedback u
volantů nebo rozlišení opravdu všech kláves na klávesnici.
Struktura DirectX
DirectX je sada více či méně nezávislých komponent na bázi COM (Component
Object Model). Ačkoliv technologie COM by mohla být pro méně zkušené
programátory docela oříškem, DirectX je naštěstí pochopitelné i téměř bez
jakýchkoliv znalostí COM. V praxi tedy nikdy nepoužíváte celé DirectX, ale
pouze komponenty, které potřebujete v dané konkrétní aplikaci. Podívejme se
tedy, které komponenty máme k dispozici a co tyto komponenty dokážou.
DirectDraw (dále jen DDraw) je základním kamenem DirectX. DDraw řeší základní
problém, kvůli kterému DirectX vzniklo: "Jak se mám zbavit oken a kreslit na
celou obrazovku v mnou požadovaném grafickém režimu?"
Komponenta DDraw nabízí grafickou kartu jako resource čili objekt, se kterým
můžeme pracovat jako s každou jinou součástí počítače nebo operačního systému.
Nejčastěji používané funkce DDraw jsou shrnuty v následujících bodech.
Lze pracovat buď klasicky v okně, anebo s celou obrazovkou jako kdysi v DOSu.
Lze libovolně měnit grafické rozlišení a nastavovat hloubku barev (pouze
16barevné režimy nejsou podporovány).
Lze kombinovat kreslení přes DDraw s klasickými funkcemi GDI (graphics device
interface) ve Win32 API.
DDraw automaticky použije hardwarovou akceleraci tam, kde je to možné. Lze také
zjistit, jaké funkce je možno na daném počítači hardwarově akcelerovat a podle
toho přizpůsobit algoritmy programu.
DDraw funguje na principu spritů, což jsou obrázky tvaru obdélníku. Tyto sprity
lze kopírovat do obrazovky i do systémové paměti. Čili veškerá činnost DDraw se
omezuje na práci s obdélníkovými obrázky, přitom umí dělat základní
transformace, jako je změna velikosti a ořezávání. Pokud to hardware umožňuje,
lze také obrázky rotovat, převracet je podle osy apod.
Sprity lze umístit přímo do videoram, a dosáhnout tak zvýšení rychlosti.
Díky bodovým maskám lze používat sprity libovolných tvarů, nejen obdélníky.
Bodová (bitová) maska určuje, které body mají být "průhledné". Tyto body se pak
nekreslí.
V režimu 256 barev je možno pracovat s barevnou paletou, k dispozici máte všech
256 barev (toto je rozdíl oproti GDI, kde jsou některé barvy vyhrazeny pro
systém).
Pomocí overlayů můžete efektivně a kvalitně zobrazovat videosekvence. Overlay
dokáže zobrazit true color obrázek, aniž by zapisoval do viditelné části
videoram. Můžete tedy zobrazovat kvalitní grafiku, i když je desktop např. jen
ve 256 barvách.
Na nejnovějších kartách lze sprity kreslit pomocí DMA přenosů, které jsou
prováděny bez účasti CPU. Takto je možno paralelně provádět kreslení a jiné
výpočty.
Pomocí double a triple bufferingu je zamezeno jinak běžnému blikání obrazu při
animacích prováděných pomocí GDI.
DDraw podporuje vícemonitorové systémy na operačních systémech, které je samy
podporují (Windows 98/2000).
Videoport na kartách s video vstupem nebo tv tunerem převádí obrazová data z
vnějšího zdroje do digitální podoby a umisťuje je do videoram. Takto připravený
obraz můžete buď zobrazit pomocí overlaye, nebo s ním dále pracovat jiným
způsobem.
Můžete používat tzv. mode-x, což je speciální režim VGA karty, který se
používal v DOSu. V tomto režimu máte k dispozici rozlišení 320 x 200 a 320 x
240 a funkce, které jinak nejsou na VGA kartě dostupné. Použití mode-x dnes
pochopitelně již ztratilo smysl, protože stejné funkce SVGA karet jsou
podstatně rychlejší.
Pokud bychom se podívali na nedostatky jinak skvělého DDraw, našli bychom asi
dvě bílá místa.
DDraw bohužel nedělá konverze mezi obrázky v různých grafických formátech.
Konverze však můžete provést pomocí GDI. (Jde především o konverze počtu barev.)
Při práci na celé obrazovce je karta v exkluzivním režimu, aby nedocházelo k
interferencím s jinými aplikacemi, které by se snažily provádět speciální
operace s grafickou kartou. V důsledku toho je u celoobrazovkových (fullscreen)
aplikací problém se zobrazováním dialogových oken apod. I toto omezení se však
dá relativně lehce vyřešit.
Direct3D je rozhraní, které je nejsložitějším a nejkomplikovanějším článkem
DirectX. Je to speciální rozhraní objektu DirectDraw, které poskytuje přístup k
akceleračním funkcím 3D grafiky. I stručný seznam jeho funkcí by byl naprosto
nad rámec tohoto článku.
DirectSound (dále jen DSound) se zabývá vstupem a výstupem zvuku. Na straně
vstupu (záznam zvuku) je jeho funkčnost totožná s funkcemi Win32 API, s tím
rozdílem, že pomocí DSound je možno dosáhnout menšího zpoždění. Také se dá
např. provádět záznam zvuku, jeho úprava a opětné přehrání v reálném čase. Toto
pomocí standardního Win32 API nelze.
Na straně výstupu (přehrávání zvuku) obsahuje DSound globální a lokální
syntetizéry, díky nimž mohou aplikace současně přehrávat více zvuků i na
nejobyčejnější zvukové kartě. Každá aplikace má svůj lokální syntetizér, který
umí mixovat více zvuků do jednoho výstupu. Výstupy ze všech aplikací lze
mixovat globálním mixérem, a odstranit tak základní nedostatek Windows, kdy
pouze jeden program může přehrávat zvuk v daný okamžik.
DirectSound3D je speciální rozhraní komponenty DirectSound, které podporuje
prostorový (surround) zvuk, a to jak softwarově na každé stereo zvukové kartě
(vyžaduje připojení externího Dolby Surround dekodéru), tak hardwarově (na
zvukových kartách se čtyřkanálovým výstupem). Prostorový zvuk se vytváří pomocí
speciálního syntetizéru, který generuje výstup ze zadaných geometrických
souřadnic zdrojů zvuku, souřadnic a natočení posluchače. Tento 3D zvuk lze s
výhodou propojit s objekty modelovanými v Direct3D.
DirectInput slouží k ovládání vstupních zařízení. Nabízí především velmi rychlý
přístup ke klávesnici, myši, joysticku a dalším herním zařízením. Kromě
rychlosti má výhodu v tom, že můžete využít možnosti hardwaru beze zbytku, tj.
rozlišovat naprosto všechny klávesy nebo používat dnes velmi módní funkci force
feedback u volantů.
DirectPlay (dále jen DPlay) je určeno ke komunikaci mezi aplikacemi. DPlay
především nabízí transparentní komunikaci čili bez ohledu na typ fyzického
spojení. Přitom jsou podporovány čtyři běžné typy spojení: TCP/IP (Internet),
IPX (lokální síť), sériová linka a modem (obojí jako spojení dvou počítačů). K
dispozici jsou oba běžné modely peer-to-peer i klient/
/server. DPlay se dnes běžně používá u síťových her.
DirectMusic (dále jen DMusic) je nejmladší součástí DirectX. Na rozdíl od
komponenty DSound, která je určena spíše pro zvukové efekty, DMusic slouží pro
přehrávání hudby na principu podobném MIDI. DMusic z MIDI vychází, avšak
překračuje mnohá omezení MIDI a podobně jako DSound jde cestou "žádná omezení".
K dispozici máte sadu standardních nástrojů General MIDI, je však možno dodat i
vlastní nástroje, a pružně tak přizpůsobovat systém požadavkům vaší aplikace.
DirectSetup je velmi jednoduché API, které slouží pro sebe-instalaci DirectX.
Je běžně používáno instalačními programy při instalaci her nebo jiného
multimediálního softwaru.
DirectX Media je sada dalších high-level komponent, které jako nadstavba
DirectX poskytují další funkce týkající se především obrazu. DirectAnimation
slouží pro dotváření HTML stránek s animovanou grafikou. DirectShow se zabývá
záznamem a přehráváním videa včetně podpory různých kodeků (jako MPEG, AVI nebo
MP3). Direct3D Retained Mode je nadstavba Direct3D, která dramaticky
zjednodušuje práci s 3D grafikou za cenu snížení rychlosti.
0 0857 / als









Komentáře
K tomuto článku není připojena žádná diskuze, nebo byla zakázána.