Pls potřebuji poradit, nevim do jae sekce toto zařadit ale byl by nekdo schopen me vysvetlit rozdil mezi Direct X a Open GL, jen stručně o co se jedná!
dík
/edit by no-X: přesunuto z VGA ATi.
Direct X vs. Open GL
Moderátoři: morke, Walker1134
- johnier
- Začátečník

- Registrován: 02. dub 2004
- Bydliště: BRNO
- Kontaktovat uživatele:
- swarm
- Středně pokročilý

- Registrován: 31. kvě 2005
- Bydliště: Praha
- Kontaktovat uživatele:
D3D i OGL jsou API - tj. jsou to rozhranní pro obecný přístup k funkcím 3D karet. D3D je vytvořeno Microsoftem a kdysi v úplných začátcích (druhá polovina let 90.) bylo vytvořeno jako co nejjednodušší rozhranní. Tim nemyslim ani moc pro vývojáře (execute buffer atd
), ale pro samotné 3D karty. Tak mohli vznikat mnohem levnější akcelerátory s univerzálním API (OpenGL kladlo nároky na 3D akcelerátor mnohem vyšší, ale zase některé úplně základní funkce, co byly v OGL od nepaměti, se u D3D objevili třeba až ve verzi 6-8 ).
Nevýhodou D3D je u vývojářů to, že jednou za pár verzí se kompletně přepracuje a je se tak nutné učit zase spoustu nových věcí (největší zlom byl u verze 8, verze 9 se naopak zase od osmičky moc neliší, ovšem teď bych čekal zase velkou změnu). OpenGL je pořád stejné a kód se vůbec u programů nemění s verzemi. Všechny pokročilejší funkce se OGL řeší pomocí extensions (rozšíření). To jsou jakési funkce navíc, které karta podporuje. Ty si můžeš zjistit, které to jsou, a k nim pak přistupovat.
Takže tady vydíš rozdíl z pohledu vývojáře - rozdíl je tedy akorát v přístupu k vývoji. Pokud jde o pohled uživatele, tak tam rozdíl není žádný. Obě API umí využít kartu nadoraz.
Jinak na všech platformách krom Windows je pouze OpenGL, takže je označováno za multiplatformní. Na Xboxu360 je D3D a na PSP a PS3 je zas OpenGL. Ale to jen tak naokraj....
Nevýhodou D3D je u vývojářů to, že jednou za pár verzí se kompletně přepracuje a je se tak nutné učit zase spoustu nových věcí (největší zlom byl u verze 8, verze 9 se naopak zase od osmičky moc neliší, ovšem teď bych čekal zase velkou změnu). OpenGL je pořád stejné a kód se vůbec u programů nemění s verzemi. Všechny pokročilejší funkce se OGL řeší pomocí extensions (rozšíření). To jsou jakési funkce navíc, které karta podporuje. Ty si můžeš zjistit, které to jsou, a k nim pak přistupovat.
Takže tady vydíš rozdíl z pohledu vývojáře - rozdíl je tedy akorát v přístupu k vývoji. Pokud jde o pohled uživatele, tak tam rozdíl není žádný. Obě API umí využít kartu nadoraz.
Jinak na všech platformách krom Windows je pouze OpenGL, takže je označováno za multiplatformní. Na Xboxu360 je D3D a na PSP a PS3 je zas OpenGL. Ale to jen tak naokraj....
Diagon Swarm -> Můj NB blog viz. [WWW]
Je těžké být debilem, konkurence je příliš velká.
Je těžké být debilem, konkurence je příliš velká.
- johnier
- Začátečník

- Registrován: 02. dub 2004
- Bydliště: BRNO
- Kontaktovat uživatele:
- radekhulan
- Začátečník

-
- Registrován: 08. čer 2005
- Kontaktovat uživatele:
Z pohledu vývojáře je právě jednodušší dělat pro DirectX, protože OpenGL mi kromě základní sady funkcí nezaručuje nic. Když se rozhodnu, že budu dělat hru pro karty podporující DirectX 9.0c (SM3.0), napíšu jeden jedinej kód. Když člověk dělá hru pro OpenGL, musí napsat podstatně "flexibilnější" a tím i podstatně složitější engine. Proto je drtivá většina her (kromě Doom, Quake a několika málo dalších) psána v DirectX. Je to snazší, mnohem, a "více standardizované" pro pokročilé funkce.
Jedinou výhodou OpenGL je jeho otevřenost, pokud chci mít hry na Windows, Linuxu a Mac OS X, OpenGL je jediná možnost. DirectX je (bohužel) výsada jen Windows.
Navíc DirectX API neřeší jen grafiku, ale i zvuk (přímá konkurence pro nové OpenAL), síťové komponenty, vstupní zařízení, a další.
Jedinou výhodou OpenGL je jeho otevřenost, pokud chci mít hry na Windows, Linuxu a Mac OS X, OpenGL je jediná možnost. DirectX je (bohužel) výsada jen Windows.
Navíc DirectX API neřeší jen grafiku, ale i zvuk (přímá konkurence pro nové OpenAL), síťové komponenty, vstupní zařízení, a další.
- swarm
- Středně pokročilý

- Registrován: 31. kvě 2005
- Bydliště: Praha
- Kontaktovat uživatele:
Pokud jde o psaní shaderů, tak ty už jsou od verze 2.0 v OpenGL standartizované přes ARB extenze, a tak už to není takové, jako kdysi, kdy se pro nVidii a ATI dělalo úplně jinak. Krom toho si ale teda myslim, že dneska už to moc nikdo psát v těch assembly jazycích nebude a spíš se použijí nástroje od nVidie atd a nechá se kód překompilovat pro jednotlivé verze shaderů.radekhulan píše:Z pohledu vývojáře je právě jednodušší dělat pro DirectX, protože OpenGL mi kromě základní sady funkcí nezaručuje nic. Když se rozhodnu, že budu dělat hru pro karty podporující DirectX 9.0c (SM3.0), napíšu jeden jedinej kód. Když člověk dělá hru pro OpenGL, musí napsat podstatně "flexibilnější" a tím i podstatně složitější engine. Proto je drtivá většina her (kromě Doom, Quake a několika málo dalších) psána v DirectX. Je to snazší, mnohem, a "více standardizované" pro pokročilé funkce.
Ale z vlastní zkušenosti vim, že ani programovat to jednotlivě na ATI, NV a ARB neni až zas takový problém. Hlavní je akorát mít pro všechny verze stejná vstupní data a pak už je to práce na chvíli - v podstatě asi jako když chcete stejný jednoduchý prográmek přepsat na do jiného jazyka - akorát teda chce to přístup k těm kartám, ale dneska tohle neni problem, zvlášť když dneska všechny technologie pomalu najdete na kartě za 2tisíce (ale výkon na nic, ale to nikoho netrápí).
Jinak ale nesouhlasim s tim, že by DirectX bylo jednodušší. Já to vidím úplně naopak. Pro začínající programátory je OGL výrazně jednodušší, incializace atd jsou mnohem úspornější na kód a nezatěžuje hned ze začátku programátora spoustou věcí navíc. U nás na školách se převážně učí taky právě OpenGL.
To, že většína komerčních Windows her je Direct3D je problém trochu v jiných věcech. Krom Dooma a Quaka a her na jejich enginech se tu až zas moc OGL only her nevidí, ovšem hodně her (GTA, Warcraft,...) používá licencované enginy a nebo prostě mají svůj engine vytvořený pro obě rozhranní (důvody ponechme stranou). Možná že teď s Playstation3 se věc trochu změní, protože tam je jen OpenGL a hry, které tam budou vznikat primárně, pravděpodobně zůstanou u tohoto API. Krom toho spousta shareware her (což je taky zajímavý segment) běží na OpenGL.
Třeba v UT2003/4 se v linux verzi použilo SDL, což mně přijde jako velmi dobrá alternativa pro obsluhu všech I/O (samozřejmě na zvuk pokud chci víc jak stereo už je dobré sáhnout navíc k zmíněnému OpenAL, což je, když se přenesu přes nějakou tu nekompatibilitu v ranné fázi, docela pěkňoučká věcička). To má navíc výhodu, že přes něj jde dobře přistupovat k OpenGL a navíc lze dobře tvořit kód, který pak lze zkompilovat prakticky na čemkoli bez úprav.radekhulan píše:Navíc DirectX API neřeší jen grafiku, ale i zvuk (přímá konkurence pro nové OpenAL), síťové komponenty, vstupní zařízení, a další.
No, trochu už jsem odběhl od tématu, tak jak bylo myšleno, tak snad moderátoři prominou, berte to spíše informačně.
Diagon Swarm -> Můj NB blog viz. [WWW]
Je těžké být debilem, konkurence je příliš velká.
Je těžké být debilem, konkurence je příliš velká.