TUTORIAL >> DirectX10 & C++

poruka: 1
|
čitano: 3.381
|
moderatori: Lazarus Long, XXX-Man, vincimus
1
+/- sve poruke
ravni prikaz
starije poruke gore
16 godina
neaktivan
offline
TUTORIAL >> DirectX 10 & C++

DirectX 10 predstavljen je kao revolucija gaming industrije i katalizator za next-gen grafiku. Dakako, Microsoftov PR je malo pretjerao, no moram priznati, ovo vrijeme koje sam proveo proučavajući navedeni API, sa programerske strane naletio sam na mnoge zanimljive i pohvalne preinake koje su zatekle DirectX kao grafički API. A i sama arhitektura dozvoljava uz malo truda postići zapanjujuće rezultate. Volio bih napomenuti da je DirectX10 od početka kovan da radi samo u simbiozi sa Vistom, dakle, svaki pokušaj da se kôd kompilira i pokrene izbacit će error jer nemate potrebne .dllove ukoliko niste na Visti. Ja se osobno koristim dokumentacijom DirectXa ( June 2008 ) i svoje sposobnosti da to posložim kako treba, pa ću pokušati vama to u obliku tutoriala jer nema drugačijih kvalitetnih izvora. Jedino možda 2 knjige dostupne na Amazonu.

DirectX 10


Pa vrijeme je da malo zavirimo u novi svijeta DirectXa 10. Prema definiciji danoj od Microsofta Direct3D10 grafički pipeline je kompletni redizajn stare arhitekture, izgrađen ispočetka i u hardveru i sofveru da bi mogao pogoniti novu generaciju igara i 3D multimedijalnih aplikacija. Zvuči poprilično epski i primamljivo, a nije toliko ni daleko od istine. Također koristi Windows Vista Display Driver Model koji omogućuje različita poboljšanja i performanse poput recimo virtualne GPU memorije. Ne zamarajte se ovim, kasnije ću pojasniti detalje.

Mnogi se pitaju što zapravo taj novi DX10 API donosi i kako će poboljšati razvoj odnosno igranje igara na novom, sad već pristupačnom dx10 hardveru? Naravno, tu je i pitanje koja je razlika između dx9 i dx10. Na to ćemo dati odgovor uskoro. Što se tiče novosti, jedna od najbitnijih je uvođenje gemetry shadera koji omogućuje developerima da procesiraju cjelovite primitivne objekte jer ne djeluje više na pojedinom vertexu, nego na više njih odjednom. Cijeli pipeline podijeljen je na 5 neizmjenjivih state objekata, samim time omogućujući poboljšanu i bržu konfiguraciju pipelinea. Od ostalog možemo spomenuti termine poput konstantnih spremnika, novi tipovi resursa, runtime podijeljen u slojeve, potpuna integracija HLSLa, povećan broj render targeta, tekstura,  samplera i još jedna lijepa stvar je nepostojeća granica za duljina shadera.

Dakako, ljudi koji nisu upoznati sa DirectX API-jem ovo zvuči kao aramejski jezik, no to ćemo nastojati promijeniti. Osim ovih novina, mnogi se pitaju, što mi to DirectX10 nudi, a da dx9 to već nema. Pa pogledajmo što se dogodilo sa DX10-kom naspram onoga što smo viđali u DX9-ci. Da skratimo priču na bitne elemente, promjene su sljedeće:

- fixed function pipeline uklonjen
- D3D CAPS uklonjen
- stroži menadžment kod pristupa resursima, statesima uređaja, shader konstantama i sl.
- API ulazna točka promijenjena zbog uvođenja virtualne GPU memorije (Map() umjesto Lock())
- primitive topology ( način na koji se povezuju vertexi) je sad eksplicitni state ("izoliran" od Draw poziva)
- Eksplicitne shader konstante su sada spremljene u konstante spremnike
- stvaranje shadera u potpunosti odrađeno u HLSLu, te sam HLSL compiler nalazi se u DLLu Direct3D10ke
- nova programabilna faza - geometry shader
- BeginScene i EndScene uklonjeno

Uklanjanje fixed function pipelinea

Iako je Direct3D 9 podržavao u potpunosti programabilni pipeline, mnoštvo dijelova ostalo je povezano uz fixed function pipeline. Upoznavati vas sa fixed function pipelineom više, dakle, nije potrebno, tako da nećemo ulaziti u to. Većina bitnih elemenata koji su prije bili dostupni kroz fixed function pipeline preseljeni su u shadere.

-----------------------------------

Vjerojatno dolazite do zaključka da je DX10 sada u potpunosti nekompatibilan sa DX9 softverom i hardverom jer je cijela arhitektura promijenjena. Razlog da DirectX10 nije došao na XP je očigledan, no Microsoft nudi nekoliko rješenja kod dizajna enginea tako da se inicijalizacija i korištenje oba API-a podijeli u slojeve kao što se npr. radi apstrakcija render enginea npr. u Irrlichtu gdje se mogu koristiti dvije implementacije za renderiranje poput DX9ke ili OpenGLa. Samo je malo čudno da se dva APIa iz isto obitelji više ne poklapaju. Ali to će se u budućnosti pokazati kao dobra ili jako jako loša stvar.

Ovo bi trebao biti dovoljno kratak i solidan uvod u DirectX10, no prije nego li se bacimo na samo programiranje, posvetit ćemo jedan post detaljnijoj arhitekturi DirectX10 API-ja te geometry shadera. Definitivno ima mnoštvo stvari za pokriti ali natrpati korisnika informacijama koje odmah neće razumjeti nije nikakvo postignuće, tako da ćemo sistematično podijeliti ovaj API kako budemo učili i pokrivat nove koncepte na što jednostavniji i čišći način.

Definition of momentum: Speedy thing comes in, speedy thing comes out...
Poruka je uređivana zadnji put čet 3.7.2008 18:10 (RayDX).
 
0 0 hvala 0
1
Nova poruka
E-mail:
Lozinka:
 
vrh stranice