2009-11-30, 16:59
#73
Citat:
OpenGL pratar bara 3D, så där måste man använda något annat också. Det motsvarar Direct3D, DirectX består dock av ett antal andra X:ar som kan hantera ljud och input och så om man vill. Eller ja, nu för tiden hanterar man input i DirectX med vanliga windowsfunktioner. Sen måste du verkligen inse att det är en gigantisk skillnad på SDL och SFML, som är lager ovanpå hårdvara, och Irrlicht, som är en komplett spelmotor. Vi börjar med de förstnämnda.
Ursprungligen postat av simplerr
En fråga till bara. DirectX och OpenGL pratar som jag förstått det direkt med maskinvaran i datorn, som tangentbordet, musen, grafikkortet etc.. Medan andra API:er som SDL, SFML, Irrlicht etc skickar data till DirectX eller OpenGL som i sin tur skickar vidare informationen till hårdvaran. Är det så det fungerar i det stora hela, eller har jag missuppfattat det?
SDL är alltså ett lager mellan hårdvaran och du. Vad är då den här hårdvaran? Det kan vara lite vad som helst, det går i princip att porta SDL till allt som har en skärm och lite knappar, kompilera din kod som fungerade till Windows, och vips så har du ett spel till Linux, OS X, nån annan obskyr UNIX-variant på en lika obskyr dator, eller kanske Nintendo DS. I praktiken uppstår det förstås oftast lite fler komplikationer, men det sopar jag under mattan. SDL kan prata med en uppsjö av olika plattformar, DirectX, X11 och Windows API:t exempelvis. Själva poängen med SDL är att man inte ska behöva lära sig ett antal komplexa API:n, utan ett enda enkelt, som är ett effektivt lager på hårdvaran. Simple DirectMedia Layer.
SFML fungerar på samma sätt, fast som jag har förstått det använder man enbart OpenGL för grafiken. Det gör att man kan få 3D-accelererade, snabba, snygga effekter och rotationer, men man tappar SDL:s bredd.
Irrlicht är en helt annat best, det är en komplett 3D-motor, något som skulle ta gemene man år att skriva. Den kan tydligen använda både Direct3D och OpenGL, alternativt ett mjukvarualternativ. Det här alternativet är perfekt om man inte kan så mycket om 3D och vill ha springande gubbar fort, alternativt om man kan mycket men inte vill skriva en 3D-motor. Hur som haver så ligger Irrlicht på en helt annan nivå än SDL och SFML
Citat:
Mja, vill du programmera 3D kommer du förr eller senare vara tvungen att lära dig matten. Det går inte utan den, och det är inget man plockar upp medan man håller på. Jag vet inte hur du ligger till i livet, men om du planerar att läsa en civilingenjörsutbildning eller liknande på högskolan lär du få lära dig linjär algebra där, så det kan vara värt att satsa på programmeringsfärdigheterna och vänta med 3D:n, man kan göra många roliga saker med bara 2 dimensioner. Annars tycker jag du ska läsa din fars bok och göra lite övningar, det kommer spara oceaner med tid. Alternativet är att sitta och lägga till och ta bort minustecken i sin lätt modifierade exempelkod och inte ha någon aning om varför allt blir spegelvänt.
Ursprungligen postat av simplerr
EDIT: Slutsaten är alltså att det är bättre att lägga tid på programmering i C++ och SDL, än att spendera tid på matten som krävs för 3D programmering?

eller vart man nu kan tänkas hamna, har man lärt sig programmera ordentligt i C/C++ och lite assembler därtill, så är det inte ett problem att lära sig använda ett nytt bibliotek.