Gå til innhold

Hva er egentlig OpenGL og Direct3D ?


Kurt P

Anbefalte innlegg

Videoannonse
Annonse
OpenGL og Direct3D er to forskjellige APIer som kan brukes når man skal programmere 3D applikasjoner.

OpenGL er en åpen standard og fungerer på flere OSer mens Direct3D laget av Microsoft og fungerer kun under Windows.

og hva er en API?

Lenke til kommentar

API = Application Program Interface (ikke drep meg hvis jeg tar feil, hehe...)

 

OpenGL og Direct3D er API'er, hvor spillutviklere har et fast miljø å utvikle spill med i hensyn til instruksjoner og effekter.

 

API'er har et eget programmeringsspråk som kanskje ikke er så veldig logisk utifra hvilken oppgave den gjør, så derfor utvikler spillutviklerne som regel sine egne 3Dmotorer (som også er API'er ;)) (f.eks Source, CryEngine etc.) som lager mer logiske slutninger f.eks, og for å forenkle effekter osv.

 

Det 3D motorer gjør er å "oversette" til og fra API språket mellom bruker og API.

 

Man kan slå sammen effekter som f.eks ville tatt flere linjer med kode hvis man koda rett i Direct3D eller OpenGL, til en linje i 3D motoren f.eks.

Lenke til kommentar
API = Application Program Interface (ikke drep meg hvis jeg tar feil, hehe...)

 

OpenGL og Direct3D er API'er, hvor spillutviklere har et fast miljø å utvikle spill med i hensyn til instruksjoner og effekter.

 

API'er har et eget programmeringsspråk som kanskje ikke er så veldig logisk utifra hvilken oppgave den gjør, så derfor utvikler spillutviklerne som regel sine egne 3Dmotorer (som også er API'er ;)) (f.eks Source, CryEngine etc.) som lager mer logiske slutninger f.eks, og for å forenkle effekter osv.

 

Det 3D motorer gjør er å "oversette" til og fra API språket mellom bruker og API.

 

Man kan slå sammen effekter som f.eks ville tatt flere linjer med kode hvis man koda rett i Direct3D eller OpenGL, til en linje i 3D motoren f.eks.

Hvis det er sånn som du sier her, hvorfor må man da ha gjerne nyeste directx inne for og spille nye spill?

 

edit:

 

eller tar jeg feil? øh.

Endret av knert
Lenke til kommentar

Når man lager et program eller spill bruker man et programmeringsspråk som C++, C, C#, Java, Basic, Visual Basic, Flash o.l.

 

Disse programmeringsspråkene benytter flere bibliotek av klasser og funksjoner.

 

Et slikt biliotek refereres ofte til som en API, selv om en API egentlig er en ekstern funksjon som kan brukes som en del av programmet man lager. En API er altså en funksjon i et ekstern bibliotek av funksjoner.

 

Kan samenlignes med at man går til leksikonet i hyllen for å finne svar på et spørsmål man har...

 

DirectX eller Direct3D, som er en del av DirectX-bilioteket, er et slikt bibliotek.

OpenGL er et annet bibliotek av funksjoner. OpenGL og DirectX kan IKKE brukes om hverandre, på grunn av måten de er bygget opp på.

 

Disse funksjonene lar deg få kontroll over skjermkortet og skjermbildet. DirectX er mer omfattende enn OpenGL da det også inneholder funksjoner for å kontrollere lydkort, tastatur, nettverkskort, m.m.

 

Med Managed DirectX som er nytt siden DirectX8.1 har forenklet DirectX betydelig og forenklet portabiliteten til andre platformer.

 

DirectX brukes blant annet også på XBox. Jeg vil også tro at det finnes relativt enkle rutiner for å portere DirectX kode til å fungere både på PlayStation2 og GameCube, da aktører som f.eks. Electronic Arts lanserer spill til alle disse plattformene samtidig.

 

Det er nok riktig at OpenGL fungerer på Linux og Unix systemer i tillegg til Windows, men jeg tror der er vanskeligere å portere OpenGL kode enn DirectX kode til å fungere på spillkonsoller.

 

Men jeg har kun kodet DirectX til PC og Xbox og har aldri satt meg inn i OpenGL.

 

EDIT:

Hvis det er sånn som du sier her, hvorfor må man da ha gjerne nyeste directx inne for og spille nye spill?

 

Fordi at det legges til nye funksjoner/rutiner som styrer nye rutiner i skjermkortet. Strukturen/måten DirectX brukes på forandres også etter hvert som versjonen øker. DirectX er derfor bakoverkompatibelt, men ikke framoverkompatibelt. Se på det som en skjermkort driver. Man kan ikke forutse alle nye funksjonaliteter fremtidige skjermkort vil ha. Det er samme årsak som at ikke dagens drivere støtter morgendagens hardware.

Endret av Mental
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...