Odmah da kažem da nemam nameru da pravim 3D igre (bar još koju godinu). Zanima me da li OpenGL i DirectX mogu da unaprede i 2D grafiku ili su oni samo za 3D? Šta u stvari mogu da dobijem u 2D igrama korišćenjem OpenGL-a ili DirectX-a? Da li pomenuti mogu da poboljšaju ili olakšaju rad sa zvukom i džojsticima ili oni utiču samo na grafiku?
OpenGL, DirectX i 2D igre
Zaključano
Zakačeno
Oba APIja mogu itekako da unaprede 2D grafiku - tacnije, bez njih je gotovo nemoguce napraviti pristojnu modernu 2D pucacinu, jer je vrlo tesko na procesoru imati dovoljno veliki fill rate za recimo 1024 * 768 * 60 fps sa dosta sprajtova i alfa blendingom.
Tako da prakticno moras da koristis jedan od ta dva. DirectX sadrzi DirectAudio i DirectInput koji se koriste za rad sa zvukom i dzojsticima, a DXUT biblioteka (takodje deo DirectXa) ti odradjuje standardne stvari kao sto su kreacija prozora, Direct3D device-a itd.
Tako da prakticno moras da koristis jedan od ta dva. DirectX sadrzi DirectAudio i DirectInput koji se koriste za rad sa zvukom i dzojsticima, a DXUT biblioteka (takodje deo DirectXa) ti odradjuje standardne stvari kao sto su kreacija prozora, Direct3D device-a itd.
Samo jedno pitanje, srodno je sa ovom temom, pa da ne otvaram novi thread...Postoji li neki način da u DirectX 7 napravim Alpha Blending? Sasha++ je ovde postavio jedan primer ali taj je zahtevao da se inicijalizuje i DX8. Mene bi interesovao blending koji koristi samo DX7.
OK, biću direktan: zna li neko kako se u DX8 obično prave 2D igre? Ili neko možda ima iskustva s tim? Pošto sam video da u DX8 DirectDraw ne postoji, da li to znači da sve 2d sprajtove moram da regulišem preko billboard-a? I da li to znači da moram da inicijalizujem D3DDevice, postavim kameru, da renderujem na takozvani "3D" način (sa svim onim koracima - BeginScene...EndScene), iako na primer neću uopšte koristiti ni jedan jedini poligon već samo bitmape?
I ako je odgovor "da, moraš da koristiš billboarde", da li je to brže od DirectDraw-a? Kako ja na to gledam, DDraw samo treba da blituje - prekopira bajtove sa jedne bitmape na drugu. Billboarding, kao 3d tehnika, verovatno koristi gomilu kalkulacija koje DDraw ne mora da radi... zar ne?
Ili postoji neki način renderovanja sprajtova u DX8 koji ja ne znam?
Citat:
bez njih je gotovo nemoguce napraviti pristojnu modernu 2D pucacinu
I ako je odgovor "da, moraš da koristiš billboarde", da li je to brže od DirectDraw-a? Kako ja na to gledam, DDraw samo treba da blituje - prekopira bajtove sa jedne bitmape na drugu. Billboarding, kao 3d tehnika, verovatno koristi gomilu kalkulacija koje DDraw ne mora da radi... zar ne?
Ili postoji neki način renderovanja sprajtova u DX8 koji ja ne znam?
Potpis
In a game of chess you must never let your opponent see your pieces - Zap
Brannigan
Brannigan
Blit samo blituje... u eventualni stretch ili flip.
Bilboarding ti omogucava sve sto i blitovanje plus rotaciju, zoom, alpha blending, alpha masking, z-ordering... Razlika je u tome sto blit uglavnom radi CPU dok bilboarding izvrsava GPU. Uostalom... pogledaj specifikaciju neke od grafickih kartica i obrati paznju na fillrate. Primer jedne od jadnijih kartica na trzistu:
Milijarda texela u sekundi i nije losa brojka za 2d igrice.
Pocev od DX8, M$ je integrisao DDraw u D3D. Najbolje je da ipak koristis bilboarding. U DX8.1 postoji func IDirect3DDevice8::CopyRects ali ne podrzava ni stretch ni alpha blending ni color key ni clipping.
yooyo
Bilboarding ti omogucava sve sto i blitovanje plus rotaciju, zoom, alpha blending, alpha masking, z-ordering... Razlika je u tome sto blit uglavnom radi CPU dok bilboarding izvrsava GPU. Uostalom... pogledaj specifikaciju neke od grafickih kartica i obrati paznju na fillrate. Primer jedne od jadnijih kartica na trzistu:
Code:
GeForce4 MX 420
Fill Rate: 1 Billion Texels/Sec.
Triangles per Second: 31 Million
Memory Bandwidth: 2.7GB/Sec.
Maximum Memory: 64MB
GeForce4 MX 420
Fill Rate: 1 Billion Texels/Sec.
Triangles per Second: 31 Million
Memory Bandwidth: 2.7GB/Sec.
Maximum Memory: 64MB
Milijarda texela u sekundi i nije losa brojka za 2d igrice.
Pocev od DX8, M$ je integrisao DDraw u D3D. Najbolje je da ipak koristis bilboarding. U DX8.1 postoji func IDirect3DDevice8::CopyRects ali ne podrzava ni stretch ni alpha blending ni color key ni clipping.
yooyo
OK, samo je poenta da sam tek ovladao kako treba Direct Draw-om i napravio dobar 2d engine. Hej, svi moramo odnekud da počnemo...
Takođe, ne bih usred pravljenja igre da ponovo pišem grafički engine. A da ga pišem pred kraj projekta opet ne valja.
U svakom slučaju hvala, izgleda da mi ne gine DX8.1 SDK u šake...
Takođe, ne bih usred pravljenja igre da ponovo pišem grafički engine. A da ga pišem pred kraj projekta opet ne valja.
U svakom slučaju hvala, izgleda da mi ne gine DX8.1 SDK u šake...
Potpis
In a game of chess you must never let your opponent see your pieces - Zap
Brannigan
Brannigan