Gå til innhold

Anbefalte innlegg

Har tenkt litt på å starte med programmering av enkle spill i c++ og har et par spørsmål. Er snakk om windowsprogrammering i Visual C++, selv om jeg har linux avatar :p

 

1) Hva er forskjellen mellom disse 3 rammeverkene? Fordeler, ulemper?

2) Er noen å anbefale fremfor andre? (Er ganske nybegynner..)

 

 

Takker på forhånd! :)

Endret av Lek1
Lenke til kommentar
Videoannonse
Annonse

Selv er jeg en OpenGL person, men DirectX er absolutt noe som er verdt å se på, blant annet ved å ha innebygget en rekke ting som du må finne andre steder til OpenGL. For eksempel 2D rendring (som gjøres med Direct2D i DX)

DarkGDK er vel et spill API som sannsynligvis bruker OpenGL, og er ikke egentlig en konkurrent til OpenGL og Direct3D.

 

Men kort:

OpenGL

Fordeler:

- Relativt kryssplattform, ihvertfall med GLUT

- Enkelt i bruk, og lett å lære

- Fungerer i nær sagt alle programmeringsspråk

Ulemper:

- Svært mye programkode må skrives selv eller hentes fra tredjepartsbiblioteker

- Mye legacy kode, som for eksempel wgl gjør enkelte ting mer komplekse enn det burde vært. Eksempelvis dersom du vil lage et OpenGL 3 context, må du først lage en OpenGL 2 context, og bygge en ny derfira. Enda mer komplisert er dersom du ønsker multisampling, fordi det krever at du lager en context for å få tak i wglChoosePixelFormat som kan finne pixel formats som støtter multisampling.

DirectX

Fordeler:

- Objektorientert

- Mye er laget for deg på forhånd, matrisefunksjoner, quaternions etc.

- Ikke bakoverkompatibelt, som fører til lite legacy kode

Ulemper:

- Fungerer kun på Microsoft plattformer

- Fungerer native kun i C++

- Ikke bakoverkompatibelt, som fører til at mange ting må skrives mer eller mindre på nytt ved nye versjoner. Blant annet er point sprites fjernet i DirectX 10 til fordel for geometry shaders. Selv om det er en god idé, så blir problemet at gamle programmer som brukte point sprites må lage dette systemet på nytt igjen.

 

Merk at DirectX ikke egentlig er konkurrent til OpenGL, men til Dark GDK og SDL. OpenGL er kun et 3D/2D grafikk API, og har ingen funksjoner for lyd, musikk, input og nettverk.

 

Du vil møte ting som irriterer deg i alle disse rammeverkene. For eksemepl synes jeg at Direct3D kan være mer komplisert å sette opp enn det burde, og det gjelder forsåvidt OpenGL 3.x også.

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å
×
×
  • Opprett ny...