DirectX(Direct3D) eller OpenGL?

Permalänk
Medlem

DirectX(Direct3D) eller OpenGL?

Hej hej

Utan att riskera ett OpenGL vs. DirectX krig så tänkte jag fråga er lite om dessa API:na. Vilket skulle ni föreslå att börja med? Jag hade eventuellt tänkt att lära mig båda någon gång i framtiden med vilket ska jag börja med?

skriv gärna för/nackdelar med dem båda (Jag vet att OpenGL är plattformsoberoende och DX inte) och vad ni själva tycker är bäst och roligast att jobba i. Jag skulle även uppskatta några boktips (engelska eller svenska) som ni har läst eller hört bra om.

Tack för hjälpen.

Permalänk
Testpilot

Nu har jag själv inte programmerat själv med någon av dom men jag tyckte det stog rätt mycket intressant här om skilnaderna: http://en.wikipedia.org/wiki/Comparison_of_Direct3D_and_OpenG...

Visa signatur

Kolla gärna in min RGB-LED-ljusstake i galleriet
[Gigabyte GA-Z97MX-Gaming 5][Intel Core i5 4690K][Corsair XMS3 16GB][Asus GeForce RTX 2060 Super Dual Evo OC]

Permalänk
Medlem

OpenGL är fritt och fungerar på flera plattformar, det bör ju i alla fall vägas in i ditt val, i det fall du skulle vilja göra någon kommersiell produkt. I vilket fall är det alltid trevligt att använda ett öppet och fritt API.

Visa signatur

Windows XP Pro SP2 x32 | Ubuntu x64 | Firefox | Adobe Photoshop CS2 | Eclipse | Starcraft Broodwar
(X)HTML | CSS | XML | PHP | Java | C++ | vim script |
Daniel Örn, Eagleorn | Google is my friend, and he will be Yours to if You ask him »

Permalänk
Medlem

Är det mycket man kan göra i OpenGL som man inte kan göra i Direct3D och vice versa? Jag menar, varför är det så många som utvecklar med Direct3D och inte med OpenGL, OpenGL fungerar ju även på Windows så det kan ju inte vara för att det finns fler windowsanvändare än vad det finns *nix och Mac användare.

Sedan så undrar jag lite om själva språkets uppbyggnad. Går det snabbare att får något gjort i OpenGL eller tvärtom eller är det något av dem båda API:na som man får göra mycket jobb som man annars skulle få "gratis" i det andra? Och så undrar jag även om det finns lika mycket bra dokumentation och böcket för båda API:erna?

Vill gärna ha lite tips på böcker också..

Permalänk
Medlem

Det är väll egentligen ingen skillnad, båda har lika många fördelar som nackdelar att dom väger väll nästan jämt ut. Sedan att fler skulle använda Direct3D beror nog på vart man kollar, skulle man kolla på hemmabyggar sidan så skulle nog OpenGL vinna med hästlängder. Iaf om man kollar vilket av APIn som har mest tutorials.

Jag själv började med OpenGL och tyckte det gick väldigt smidigt och lätt att komma in i det och få snabba resultat. Dock då när jag gjorde det så var DirectX vid sin 6e eller 7e version och var väldigt bökigt att få igång, därav föll mitt val till OpenGL. Idag har ju läget ändrat sig och DirectX har blivit mycket enklare och är väll lika enkelt att komma igång med som OpenGL.

Så ja, vad ska du välja... enligt mig så kan du ta vilket som

Vad gäller böcker så har jag ingen aning om, har aldrig spenderat pengar på sånt. Och kommer nog aldrig göra det så länge informationen finns att få tag på gratis på internet. Bara öppna google i nått fönster och skriva in "opengl tutorial" eller "direct3d tutorial" och vips har du en livstids mängd matrial och gå igenom

Permalänk
Medlem

OpenGL 2.1(nVidia) har vissa av funktionerna som D3D 10 har, fast man slipper vista förstoss, men detta kräver att du har ett nVidia kort, med stöd för DX10.
jag läste en interview med någon på splashdamage

http://www.burial-grounds.com/quakewars/news.php?item.68

och "snart" kommer OpenGL2.5 och 3.0 vilket kommer att göra Open gl baserade spel mycket snabbare (slipper olika extentions för olika kort)

Visa signatur

@gegoxaren på identi.ca
min personliga Blag ^_^
#python #cSharp #php #sqlite #freetard #loonix

Permalänk
Medlem

OpenGL API

Jag måste vara helt trött i bollen men var kan jag ladda ner senaste OpenGL API:t?

Jag laddade ner OpenGL2.exe här ifrån: http://berkelium.com/OpenGL/sgi-download.html Men när jag ska öppna OpenGL2.exe för att installera så kommer det fram ett fönster som frågar om jag vill installera och jag trycker på Ja.

Sedan händer det inte mer..Ska det inte komma fram en installationsguide eller nått?

Permalänk
Medlem

det enda du behöver för att köra GL2.x istället för GL1.1 är en extension loader. Jag föredrar GLEW (http://glew.sourceforge.net/) gärna i kombination med GLFW (http://glfw.sourceforge.net/) för att starta ett fönster och hantera input.

Visa signatur

void@qnet
teeworlds, stålverk80, evil schemer, c, c++
Languages shape the way we think, or don't.

Permalänk
Medlem
Citat:

Ursprungligen inskrivet av Gego
"snart" kommer OpenGL2.5 och 3.0 vilket kommer att göra Open gl baserade spel mycket snabbare (slipper olika extentions för olika kort)

Sanning med modifikation. 2.5 sägs ha ett nytt api. 3.0 kommer kräva "DX10-kort". Extensions är nog något som kommer finnas kvar, eftersom det är enda sättet för tillverkare att släppa ny funktionalitet utan att behöva gå genom standardkommitén eller vänta på nästa version.

Visa signatur

void@qnet
teeworlds, stålverk80, evil schemer, c, c++
Languages shape the way we think, or don't.

Permalänk
Hedersmedlem

*Trådar ihopslagna (på egen begäran)*

Permalänk
Medlem
Citat:

Ursprungligen inskrivet av jdv
Sanning med modifikation. 2.5 sägs ha ett nytt api. 3.0 kommer kräva "DX10-kort". Extensions är nog något som kommer finnas kvar, eftersom det är enda sättet för tillverkare att släppa ny funktionalitet utan att behöva gå genom standardkommitén eller vänta på nästa version.

jo just det, jag glömde det... men nu har dom däremot kommit överens om vilka som skall bli standard, jag var trött i går...

Visa signatur

@gegoxaren på identi.ca
min personliga Blag ^_^
#python #cSharp #php #sqlite #freetard #loonix

Permalänk
Medlem

Kan någon skicka en länk till en installationsfil för OpenGL, eller bara alla .h / .lib filer i en mapp.

Sen så undrar jag lite över openGL 2.5 och 3.0 som ni pratar om. Är det versioner som Nvidia har utvecklat för att vara optimala på deras kort och för att tävla mot D3D 10? Har inte deras kort alltid varit lite mer optimala för openGL än Atis kort har, medans Atis kort är bättre för Direct3D?

Permalänk
Medlem
Citat:

Ursprungligen inskrivet av Superb
Kan någon skicka en länk till en installationsfil för OpenGL, eller bara alla .h / .lib filer i en mapp.

Jag skickade två länkar... där kan du ladda hem GLEW och GLFW och komma igång med lite enkel opengl.

Citat:

Ursprungligen inskrivet av Superb
Sen så undrar jag lite över openGL 2.5 och 3.0 som ni pratar om. Är det versioner som Nvidia har utvecklat för att vara optimala på deras kort och för att tävla mot D3D 10? Har inte deras kort alltid varit lite mer optimala för openGL än Atis kort har, medans Atis kort är bättre för Direct3D?

OpenGL specificeras av Khronos, där både Nvidia och ATI sitter med. Men det stämmer att Nvidia har bättre drivrutiner än vad ATI har (tycker jag =).

EDIT:
Det jobbas på en OpenGL SDK så att du enkelt ska kunna få som du vill ha med en katalog med .h/.lib med utils. Dock behöver du inget mer förutom Visual Studio (jag antar du kör windows) för att komma igång med GL-kodande. Kolla in http://nehe.gamedev.net/ för enkla tutorials över hur du kommer igång i windows. Annars rekommenderar jag GLFW så slipper du mycket av den tråkiga koden i början.

Visa signatur

void@qnet
teeworlds, stålverk80, evil schemer, c, c++
Languages shape the way we think, or don't.

Permalänk
Medlem
Citat:

Ursprungligen inskrivet av jdv
Jag skickade två länkar... där kan du ladda hem GLEW och GLFW och komma igång med lite enkel opengl.

Ahh..Missade det inlägget.

Citat:

OpenGL specificeras av Khronos, där både Nvidia och ATI sitter med. Men det stämmer att Nvidia har bättre drivrutiner än vad ATI har (tycker jag =).

EDIT:
Det jobbas på en OpenGL SDK så att du enkelt ska kunna få som du vill ha med en katalog med .h/.lib med utils. Dock behöver du inget mer förutom Visual Studio (jag antar du kör windows) för att komma igång med GL-kodande. Kolla in http://nehe.gamedev.net/ för enkla tutorials över hur du kommer igång i windows. Annars rekommenderar jag GLFW så slipper du mycket av den tråkiga koden i början.

Menar du att jag kan börja skriva i OpenGL med endast Visual Studio eller med Visual Studio och dem länkarna du skickade?
I Vissa fall så följer ju OpenGL API:t med själva IDE:t, eller har jag fel?

Permalänk
Medlem

GL.h och opengl32.lib följer med Visual Studio. Kör du express behöver du dock ladda hem Platform SDK också.

Filerna jag länkade gör det lättare att komma igång och skriva program. Du slipper använda WinAPI för att öppna fönster och hantera input.

Visa signatur

void@qnet
teeworlds, stålverk80, evil schemer, c, c++
Languages shape the way we think, or don't.

Permalänk
Medlem

Ok, det låter bra.
Jag kör med express och har nu laddat ner Platform SDK, nu är bara OpenGL kvar att lära sig

Jag kan även passa på och fråga efter en liten recension av en bok jag beställde från adlibris nyss, eller två böcker rättare sagt, OpenGL Library:

http://www.adlibris.se/product.aspx?isbn=0321470559

Har du läst någon av dem och isåfall, vad tycker du om den/dem?

Permalänk
Medlem

Det där är bra böcker...
Den röda är för att lära sig GL grundligt.
Den orangea är för att lära sig GLSL, shaders, som är en del av GL2.0

Visa signatur

void@qnet
teeworlds, stålverk80, evil schemer, c, c++
Languages shape the way we think, or don't.

Permalänk
Medlem

kul att du tycker dem är bra, jag tyckte att de böckerna verkade som de mest ingående och inte som vissa andra som bara går igenom några delar av GL.

Tänkte även fråga lite om det där SDK du nämnde, är det möjligtvid detta:
http://developer.nvidia.com/object/sdk_home.html

Den för OpenGL då förstås. Innehåller den även dem nya funktionerna som kom i samband med G8x? Tänkte om jag kanske skulle ladda ner den, det är ju ioförsig en beta version men det kan väl gå bra det med, då får jag även med GLEW.

Permalänk
Medlem

OpenGL är lite annorlunda på det sättet att all funktionalitet ligger med i drivrutinen... Du behöver egentligen bara en header så du vet vilka funktioner du kan ladda.

I windows följer det med headers för GL 1.1 samt libs för att automatiskt ladda den funktionaliteten. För att få mer funktioner så bör du använda en extension loader (t.ex. GLEW) som med ett enkelt anrop ger dig tillgång till alla nya funktioner.

Platform SDK du ska ladda hem är från Microsoft och är till för att skriva windows-program, något som VC express inte klarar av i grundinstallationen. Du behöver alltså inte ha några speciella filer från Nvidia eller ATI för att koda GL. Däremot får du se lite roliga exempel på vad du kan göra

Börja från början och gör enkla saker först. Och se till att du kan varje steg för sig. NeHe:s guide är rätt bra att följa så om du inte läst den rekommenderar jag att du gör det.

Visa signatur

void@qnet
teeworlds, stålverk80, evil schemer, c, c++
Languages shape the way we think, or don't.

Permalänk
Medlem

Tack, du har gjort saker och ting mycket klarare för mig.. Men jag har en till fråga som jag inte riktigt har fått bukt om. Vad är det som gör OpenGL 1.1 till 2.0? Är det bara extension loader som är den nya funktionen eller fanns det för 1.1 också?

Vad finns i version 2.0 som inte finns i 1.1 och vart kan man hitta mer information om 2.0? Anledningen till att jag är lite osäker på det här är för att när jag frågade om någon kunde ge mig en länk till GL2.0 så sa du att det ända som behövs för att använda 2.x ist. för 1.1 är en extension loader.

så här har jag fattat det:

OpenGL är ett API som är i version 1.1 från början när man installerar Windows, sedan, för att få 2.0 så skaffar man en extension loader. Med denna extension loadern så kan man ladda in alla valfria tillägg som man vill använda så som GLUT, GLFW (Samma sak som GLUT), GLSL för shaders osv.

Skulle uppskatta om du kunde bekräfta att jag har fattat rätt. Jag har också ännu en fråga som jag hoppas och tror att du kan svara på. Vad är Cg? Är det också något från Nvidia som bara stöds på deras kort? Och så en till fråga som inte bara har med GL att göra utan mer allmän datorgrafik. Är shaders till för att implementera renderingseffekter i sitt program, som till exempel dimma, skuggor eller ljus?

Det blir många frågor när man är en nyfiken nubörjare i äment datorgrafik och spelprogrammering Jag är tacksam för din hjälp.

Permalänk
Medlem

Nja...

GLFW och GLUT är separata bibliotek. De får man köra vid sidan av gl som komplement.

Varje ny GL-version tillgör nya saker som shaders, bättre sätt att hantera geometri och liknande saker. vad som ingår i vilken version får du läsa i din bok om. Men i början är det vettigt att lära sig det enklaste från 1.1.

Visa signatur

void@qnet
teeworlds, stålverk80, evil schemer, c, c++
Languages shape the way we think, or don't.

Permalänk
Medlem

Då förstår jag bättre. Jag antar att jag får svar på många av mina frågor i boken också. schysst att du svarade på alla mina frågor, det gjorde saker lite lättare för mig.

Permalänk
Medlem

Shaders är små program som körs för varje pixel eller vertex (och nu finns även geometry shaders i dx10) i en bild. Tex kan man skriva ett liten vertex-shader som flyttar varje vertex i höjdled utifrån ett färgvärde i en bild eller en pixelshader som ändrar färgen till svart-vit.

Cg är ett språk som man skriver shader-programmen i som nVidia gjort, men shadersarna fungerar även på ATI-kort. Cg fungerar både i DirectX och OpenGL, GLSL enbart i OpenGL och HLSL i DirectX. Själv har jag bara skrivit småsaker i Cg så jag kan egentligen inte säga vilket som bäst, men HLSL ska visst vara väldigt likt Cg iaf.

Men i vilket fall, först är det nog enklast om du bekantar dig med 3d-grafik och opengl först innan du ger dig på shaders.

Permalänk
Medlem

Jo, jag ska vänta med shaders ett litet tag och fokusera på OpenGL men jag ville bara veta lite mer om vad det egentligen var. Nu väntar jag bara på mina böcker.

Permalänk
Medlem
Citat:

Ursprungligen inskrivet av jdv
det enda du behöver för att köra GL2.x istället för GL1.1 är en extension loader. Jag föredrar GLEW (http://glew.sourceforge.net/) gärna i kombination med GLFW (http://glfw.sourceforge.net/) för att starta ett fönster och hantera input.

Varför föredrar du GLFW framför SDL? (Har inte använt GLFW)

Visa signatur

Archlinux, Sway och Rust, vad mer behövs?

Permalänk
Medlem
Citat:

Ursprungligen inskrivet av vb
Men i vilket fall, först är det nog enklast om du bekantar dig med 3d-grafik och opengl först innan du ger dig på shaders.

Jag skulle vilja säga motsatsen, varför lära sig hur man ställer in fixed pipeline joxet när man sedan ändå aldrig kommer använda det, är lika bra att gå på shaders direkt.

Permalänk
Medlem
Citat:

Ursprungligen inskrivet av Chimaira
Jag skulle vilja säga motsatsen, varför lära sig hur man ställer in fixed pipeline joxet när man sedan ändå aldrig kommer använda det, är lika bra att gå på shaders direkt.

Mja, det e ju iof sant att man antagligen inte kommer använda så mycket fixed pipeline-stuff om man inte gör enkla saker (som tex 2d-spel) och att det nog e lika bra att gå över till shaders ganska fort, men i den absoluta början tror jag det e enklare att skippa.

Permalänk
Medlem
Citat:

Ursprungligen inskrivet av Gräs-Mannen
Varför föredrar du GLFW framför SDL? (Har inte använt GLFW)

Mindre, enklare och specifikt gjort för att hantera GL-fönster. Sedan har det en licens som är enklare att hantera. SDL måste vara relinkable och det innebär i princip att du måste ha det som en separat DLL. GLFW går att länka in statiskt.

Ang. shaders:
Det viktiga är att förstå hur pipelinen funkar, och fixed funktion ger dig betydligt enklare tillgång till mycket så som ljussättning, texturing vettiga normaler etc. Sedan när man lärt sig det tycker jag man kan gå vidare och leka shaders.

Visa signatur

void@qnet
teeworlds, stålverk80, evil schemer, c, c++
Languages shape the way we think, or don't.

Permalänk
Medlem
Citat:

Ursprungligen inskrivet av Chimaira
Jag skulle vilja säga motsatsen, varför lära sig hur man ställer in fixed pipeline joxet när man sedan ändå aldrig kommer använda det, är lika bra att gå på shaders direkt.

Borde man, för att lära sig shaders i OpenGL, lära sig GLSL eller Cg tro?

Visa signatur

Archlinux, Sway och Rust, vad mer behövs?

Permalänk
Medlem
Citat:

Ursprungligen inskrivet av Gräs-Mannen
Borde man, för att lära sig shaders i OpenGL, lära sig GLSL eller Cg tro?

Jag är kanske inte rätt person att svara på det här eftersom jag är nybörjare på OpenGl och shaders själv, men att lära sig shaders utan att programmera dem under inlärningen kan väl kanske bli svårare än om du testar dig fram i praktiken och inte bara läser teori.
Det är väl som att lära sig köra bil genom böcker men att aldrig sitta i en bil vid inlärningen.

Jag kanske missuppfattade din fråga?

EDIT: Du kanske menade om det fanns något annat alternativ till GLSL och Cg?