S obzirom da imam bolesnu količinu slobodnog vremena, evo odlučio sam napisati ovaj mali tutorial ako ga mogu takvim nazvati hehe... Bavit ćemo se DirectXom, što je on, zašto je stvoren i kako je podijeljen za početak a kasnije kako bude išlo.

Što je to DirectX?

Veterani gaming industrije, bili oni developeri ili krajnji gameri sigurno se sjećaju dana kada su sve igre vrtile na low-level tekst baziranom operativnom sustavu zvanom DOS. Ja osobno se ne sjećam, jer u to vrijeme nisam bio ni u planu ali sam uspio zaigrati sa zakašnjenjem. U to vrijeme, Microsoft bijaše poštovan kao izbor Allmighty Poslovnjaka, a što se tiče nas gamera i gDevelopera, bila je jako siromašna u smislu da bi mogla podržavati u ondašnje vrijeme "napredni" razvoj igara i samo izvršavanje na istom. Gdje je bio problem, vjerojatno se pitate? Pa, problem se nalazio u činjenici da je programer/developer bio u potpunosti izoliran od podležnog grafičkog hardvera koristeći tadašnji tzv. Graphics Device Interface (GDI u nastavku teksta). Taj interface (sučelje, kako hoćete, meni je interface koolišniji) sadržavao je robusnu kolekciju 2D texta i nekoliko primitivnih funkcija za iscrtavanje koje je developer, naravno, koristio da iscrta 2D output na zaslon korisnika. Zapravo, ovo je imalo i svojih dobrih strana, developer se npr. više nije morao zabrinjavati oko hardverskih kompatibilnosti. Developeru je sve izgledalo isto. Ako ste željeli pravokutnik npr. mogli ste jednostavno dati instrukciju GDIju i on bi, kao međusloj/posrednik između hardvera i developera, napravio ostalo.

Dakle, GDI je izrađen da bude robustan i stabilan. Nažalost, "savršenstvo" je došlo po svoj danak jer developer nije izravno mogao pristupiti video memoriji. Situacija je jednostavno neprihvatljiva za GameDev projekte jer sve naredbe je morao GDI kao međusloj konvertirati tamo 'vamo i tako smanjujući programersku mogućnost da utječe na neke segmente developmenta. I kao šlag na govancu, da se izrazim, bio je izrazito spor.
Igre koje su se vrtile direktno kroz DOS nisu patile od sličnih problema. Bile su prilično brze, ali njihov razvoj i samo igranje bio je pravi izazov, tako da je i to brzo palo u vodu.

Gledajući situaciju iz perspektive developera, PC platforma je postala iznimno popularna da su mnogi proizvođači počeli razvijati grafičke kartice, svaka sa drugačijim čipsetom. To je značilo ogromne muke za developere s obzirom da su morali osigurati kompatibilnost sa različitim hardverom koji se svakim danom gomilao. Nije bilo nikakvog standardnog API-ja (Application Programming Interface) za grafičko renderiranje, a kamoli potpunog multimedia development frameworka. S obzirom da se svaka grafička kartica morala posebno programirati, developeri su morali napraviti gomilu različitih verzija funkcija za iscrtavanje da bi radila igra sa različitim grafičkim hardverom dostupnim na tržištu. Ovo je definitivno uništavalo hobby-developere poput nas ovdje jer nisu imali para da bi kupovali sav mogući grafički hardver da bi osigurali kompatibilnost svoje igre. Kao igrač, mnogi su uvidjeli da su vražja posla upletena sa instalacijom neke jednostavne igre jer većina nije bila dovoljno "tehnološki prosvjetljena". Stalno bi gnjavili, koja grafička, video memorija, blablabla, tako da je tehnička podrška u softverskim kompanijama definitivno bila golem trošak. Konzola poput Super Nintenda koja je bila tehnički nadmoćna nad PC-em imala je puno lakši način "instalacije"... Poznati plug&play heheh...

Microsoft je uvidio da će morati reagirati vrlo brzo ako žele da Windows postane dominantan u gaming industriji, te su ubrzo nakon izlaska Windowsa 95 izbacili van biblioteku za razvoj multimedijalnih sadržaja nazvanu 'The Game SDK'. Ovo je bio predak današnjeg DirectXa, kojeg smo svi naučili voljeti i tolerirati, pogotovo njegovu desetu inačicu *sarkazam*. DirectX kao ime je usvojeno tek u inačici 2.0, vrlo vjerojatno zbog uspjeha u razvoju potpune multimedijske biblioteke za razvoj bogatih aplikacija. Iako su početne inačice DirectXa bile malo grube oko rubova, možemo reći da je odrastao u velikog ekonomista tijekom proteklih par godina. DirectX 5 je vjerojatno prvi krenuo sa ozbiljnim developmentom, vrijednim spomena. Danas smo na već na verziji 10, i iako nam se ne sviđaju taktike Microsofta moramo priznati da je u ovo malo vremena koje je proteklo, gaming industrija stvarno evoluirala i danas je na vrlo visokoj stepenici uvelike zahvaljujući DirectXu i njegovim developerima, pripadnicima mrskog Microsofta.

DirectX je ponudio rješenje mnogim problemima koji su mučili razvoj igara od samih početaka. Kao prvo, razvijen je za Windows platformu, koju drugu, enivejz? Ovo je značilo da developeri mogu napraviti svoje igre u okružju gdje su Win32 API fičrsi poput multithreadinga i UIa već dostupni. No shit, Einstein? heheh. Kao drugo, ustupilo nam je jedinstven API, bolje rečeno framework danas baš kao što je GDI to napravio prije, ali ovaj puta je brže, mnogo brže. Developer se više nije morao brinuti o grafičkom hardveru krajnjeg korisnika, nego je prepustio DirectXu da se za to pobrine. Ovo je omogućeno korištenjem "driver programa". Danas grafičke kartice koje podržavaju DirectX (danas nema niti jedne na tržištu koja ne podržava mislim) dolaze sa driverom koji se instalira na sustav korisnika. Driver piše naravno proizvođač i to je naravno vrlo brz komad softvera i služi kao jako tanak sloj odmah iznad grafičke koji uzima različite zahtjeve od mnogih directx funkcija koje programer upotrijebi, i pretvori ih u instrukcije razumljive hardveru. Ovo znači da DirectX može "pričati" sa svim grafičkim karticama kao da su iste iako su veoma različite jedne od drugih. Dobra strana koja se uspjela zadržati pokraj svih ovih mogućnosti jest činjenica da nam api ostavi prilično kvalitetne slobode i pristupa hardveru krajnjih korisnika. Kad već hvalim toliko DirectX moram spomenuti da iskorištava 3d hardversku akceleraciju bez dodatnog kôdiranja od strane developera što štedi vrijeme i novac... Vrijeme je novac. A vrijeme ne postoji... Kako onda novac postoji... WTF... Heheh, ajmo dalje. Najnoviji grafički hardver također ubrzava 3d matematiku (što je prije bilo u domeni CPUa prije). To znači da mnoge grafičke kartice mogu preuzeti teret od nekoliko tisuća matematičkih kalkulacija potrebnih da bi se scena renderirala ostavljajući presvete resurse CPUa da se bave kreativnijim stvarima... AI anyone?

Podjela DirectX Frameworka

Kao i svaki kvalitetan API, DirectX isto ima podjelu u više zasebnih modula. Svaki pokriva određen segment u razvoju multimedijalnih aplikacija. Pođimo opisati ukratko svaki od tih modula da dobijete neku bolju sliku kako je sastavljen i što čini taj magični krug.

DirectX Graphics

U starijim verzijama DirectXa, 2D i 3D operacije bile su podijeljenje u dva zasebna API-ja zvana DirectDraw i Direct3D. Dolaskom DirectXa 8.0 i nadalje to se spaja u jedan API nazvan DirectX Graphics. Mnogi ljudi još uvijek imaju naviku nazivati DirectX Graphics kao Direct3D. Kao što ćete vidjeti u kasnijim tutorijalima, većina DirectX Graphics funkcija i sučelja počinju sa D3D (skraćeno od Direct3D ofkorz), pa naziv stari je još uvijek opravdan.

DirectX Audio

DirectX Audio modul sadržava funkcionalnost organiziranja i puštanja audio uzoraka i glazbe unutar vaših aplikacija. Uključuje podršku za 3D audio te hardversko procesiranje zvuka i okolišnih efekata. DirectX Audio je prijašnje također bio podijeljen na dva manja API-ja zvani DirectSound i DirectMusic, no spajanje se događa sa DirectXom 8.

DirectX Input

DirectInput modul sadržava funkcionalnosti koje kontroliraju ulaznu periferiju koju korisnik koristi. Nudi funkcije za očitavanje inputa sa "uređaja" poput gamepadova, joystickova, volana ali naravno i miša i tipkovnice.

DirectX Play

Ovaj modul nudi funkcionalnost korištenu uglavnom u implementaciji MP igara i sličnih aplikacija. Uključuje podršku za primanje i odašiljanje podataka kroz recimo LAN, Internet, craplikethat. Kao i sa većinom drugih aspekata DirectXa, ovaj modul dizajniran je kao aplikacijiski sloj koji koristi sustav za primanje/odašiljanje podataka bez obzira na podložeću mrežnu infrastrukturu na kojoj korisnikov PC leži.

DirectShow

Zadnji, ali ne i najnebitniji jest DirectShow. Nudi fičrse koje sjedinjavaju mogućnosti snimanja i plejbeka visokokvalitetnih streamova. Ovo uključuje podršku za mnoge popularne formate poput MPEG, AVI, ASF i MP3 fileove.


Nadam ste da ste uživali u ovom nadasve kratkom tutorialu, očekujte me negdje kad se ponovno vratim iz faze lijenosti da napišem novi tutorial za mase. Pozz iz Ivankova zasad...