Gå til innhold

Hva bruker spill, Direct3D eller OpenGL


torry

Anbefalte innlegg

Jeg har lyst til å eksperimentere litt med ytelsen til PC'en ved spilling, og skulle likt å vite om spillene bruker Direct3D eller OpenGL. Er det noen plass man kan finne ut dette?

 

Jeg vet forsåvidt ikke forskjellen på disse to :oops: så dersom noen føler trang til å spre litt kunnskap på området... :)

Lenke til kommentar
Videoannonse
Annonse
Jeg har lyst til å eksperimentere litt med ytelsen til PC'en ved spilling, og skulle likt å vite om spillene bruker Direct3D eller OpenGL. Er det noen plass man kan finne ut dette?

 

Jeg vet forsåvidt ikke forskjellen på disse to :oops: så dersom noen føler trang til å spre litt kunnskap på området... :)

Du må nesten lete etter info om hvert spill... Quake (og alle de andre id software-spillene, inkl. doom) bruker OpenGL, Splinter Cell bruker Direct3d, Unreal (1, 2 og begge tournament) bruker Direct3d (edit: og OpenGL, de første spillene kunne patches), Half-Life bruker enten Direct3d eller OpenGL. Begge disse er såkalte APIer; et slags standardisert "programmeringsspråk" som ikke angår selve spillet, men forteller skjermkortet hvilke oppgaver som skal utføres og hvordan (Pixel Shading, Bump mapping, teksturering, buffering, lyssetting osv.). Nå finnes det mange andre APIer (Glide, SDL, DRI (<- den gjelder vel ikke 3d?)... Kan linux-folket hjelpe til litt her?)

 

OpenGl er tungvekteren; Den er utviklet av SGI (Silicon Graphics), og var i starten bare i bruk på deres arbeidsstasjoner. Men denne ble tilgjengelig på PC på starten av 90-tallet (rett meg hvis jeg tar feil). OpenGL-standarden er "åpen" (det er også Direct3d) slik at hvem som helst kan fikle med koden. Men i motseting til Direct3d, så er OpenGL teoretisk sett tilgjengelig for alle operativsystemer (nå mener jeg at linux er viktigst her). Så det er i M$ sin interesse på presse spillprodusentene over på Direct3d (noe de faktisk også har gjort opp i gjennom årene), slik at det skal bli vanskeligere å konvertere/emulere spillene i Linux (M$ innser at den store sygge pingvinen puster dem i nakken).

 

"Før i tiden" så var Direct3d (som er en del av DirectX, som består av mange deler som tar seg av f.eks spillkontrollere, lyd, nettverk, 2d-grafikk) alt for "dårlig" til å være brukbart i spill. Derfor så var Glide defacto-standard en tid (utviklet av 3dfx, og ble brukt på voodoo/banshee-kortene). Denne APIen var kjent for å være kjapp, men det var påkrevd at man hadde et 3d-kort fra 3dfx. Nå tror jeg at det var mulig å "emulere" støtte for Glide gjennom å bruke en såkalt Glide-wrapper. Glide var/er tilgjengelig for Linux... Såvidt jeg husker så var ikke Direct3d med i DirectX i den første utgaven av Windows 95, men var først med i senere utgaver av DirectX (kan det ha vært versjon 3.0?)

 

Nå har jeg inntrykk av at de fleste tror at OpenGL er en mindre avansert API enn Direct3d, men dette er ikke tilfellet (jeg tror faktisk at Unreal-spillene støtter OpenGL da de er tilgjengelig for Linux). OpenGL støtter de samme avanserte mulighetene som Direct3d. M$ er forresten ikke lenger med på å utvikle OpenGl (skal det være et tap?), og jeg frykter at støtten til OpenGL vil avta på windows-plattformen. Dette, kombinert med at XBOX er basert på Direct3d (PC-konverteringen vil da med aller største sannsynlighet kjøre på Direct3d), åpner for en fremtid hvor windows bare støtter Direct3d :evil:

 

OpenGL er blitt standarden i Linux - hvertfall i kommersielle spill. Mens mindre kjente APIer som SDL er populære i "hjemmelagde" programmer.

 

For de fleste så spiller det liten rolle hvilken API spillet/programmet benytter seg av (hvis man ikke tar hensyn til plattformuavhengighet). Evt. ytelsesforskjeller skyldes rett og slett driverne til skjermkort-produsenten, så ytelsen skulle ikke være så forskjellig. Hvis du er ekstra sulten på et par ekstra FPS, så kan du jo skifte mellom disse to (forutsetter at programmet støtter begge standardene) for å se om ditt grafikkort yter bedre i den ene.

Lenke til kommentar
Nå finnes det mange andre APIer (Glide, SDL, DRI (<- den gjelder vel ikke 3d?)... Kan linux-folket hjelpe til litt her?)

SDL (Simple Direct media Layer) brukes helst som et lag over OpenGL eller D3D og gjør programmeringen litt mer behagelig, er brukt i f.eks UT og Civilization: Call To Power (finnes i linux port). En fordel kan være at man kan få et platformuavhengig grensesnitt med HW aksellerasjon der det finnes. (f.eks finnes det både D3D og OGL implemenstasjoner for Unreal).

 

Denne APIen var kjent for å være kjapp, men det var påkrevd at man hadde et 3d-kort fra 3dfx. Nå tror jeg at det var mulig å "emulere" støtte for Glide gjennom å bruke en såkalt Glide-wrapper.

Mesa3D gir et OpenGL grensesnitt til 3dfx hardware med hardware aksellerasjon, har man ikke et 3dfx kort tilbyr mesa et tilsvarende software grensesnitt for de som ikke har andre alternativer (som f.eks nvidia sitt GLX bibliotek for linux/BSD) Siden mesa3d er open source (GPL) og OpenGL sertifisering koster penger har ikke mesa det, selv om de støtter stort sett hele OGL 1.4. Mesa kan også brukes som et lag over D3D under windows, men det har jeg nok tilgode å se nytten av.

Lenke til kommentar

OpenGL er lettest å programmere (hvis man ser bortifra andre abstraksjonslag som SDL som funker for D3D også). C syntaxen til D3D går for å være noe kronglete.

 

Hva som går raskest eller ser best ut er umulig å si siden begge API'er impementerer den samme funksjonaliteten på hardware nivå, det som avgjør er stort sett hvor godt det er programmert. Personlig holder jeg en knapp på OGL siden den er platformuavhengig.

Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...