OpenGL vedle DirectX stále žije - vychází openGL 3
Napsal ElCondor   
Středa, 14 listopad 2007

 

 

 

  • OpenGL vedle DirectX stále žije

Ani s nástupem DirectX10 OpenGL neumírá. Ba možná právě naopak. Podívejme se na OpenGL a jeho budoucnost s pořadovým číslem 3. Kdybych si tento titulek přečetl já, řekl bych si: "A co jako? Vždyť to je přece jasné." Bohužel. Jak tak sleduji diskuze posledních dní, roztočené zejména příchodem grafických karet s podporou DX10 a jejich nekonečným testováním a srovnáváním. Internet snese opravdu všechno. Takže se ani nedivím, že se u určitých uživatel hojně rozšířil nesmyslný názor, že openGL je "mrtvé", nebo odsouzené k pomalému vymizení na okraji zájmu. Podívejme se jak to s openGL je ve skutečnosti a v jakém jsou vztahu s "hitem" posledních dní: DX10 ...

  • Trocha historie

V 80. letech bylo psaní aplikací používající grafický HW neskutečně obtížné. SW vývojáři psali API a ovladače pro každé zařízení zvlášť. To vedlo k neustálému předražování vývoje a duplicitě kódu, kdy mnozí psali něco, co už dávno před nimi napsal někdo jiný pro jiné zařízení. Na počátku 90. let byla v segmentu 3D grafických pracovních stanic firma SGI (Silicon graphics). Jejich IrisGL API se díky svému kvalitnímu návrhu a snadnému používání stalo de-facto průmyslovým standardem. Konkurenti SGI (společnosti jako IBM, HP, SUN), používali pro svůj 3D hardware konkurenční standard PHIGS, který byl považován za částečně zastaralý. Následkem toho se pozice firmy SGI na trhu neustále oslabovala s narůstajícím počtem konkurentů používající standard tento PHIGS. Za této situace přichází SGI s revolučním řešením a rozhodne se proměnit IrixGL na Otevřený standard. Vyústěním těchto snah bylo uvedení OpenGL standardu společností SGI, odvozeného od IrixGL.

efekt-1

OpenGL sjednotila přístup k HW, a přesunula odpovědnost za obsluhu HW od vývojářů aplikací směrem k výrobcům HW. Dnes se tento revoluční krok projevuje například existencí ovladače ke grafické kartě a všichni berou ovladače jako samozřejmost.  Přesto je to inovace, za niž vděčíme právě vzniku openGL. Jednotná řeč pro všechen možný grafický HW, měla velký pozitivní vliv na vývoj 3D apliací. V roce 1992 SGI podpořila vznik uskupení  OpenGL architectural review board (OpenGL ARB), tedy jakousi asociaci společností, která měla zajistit vývoj openGL do budoucna. Jednou z mnoha společností tohoto uskupení byl i Microsoft, který jej ovšem v roce 2003 opustil. Od roku 2006 spravuje openGL skupina Khronos grup. Za všechny možné členy bych zmínil: AMD, Creative Labs, Intel, ID Software, Nvidia, Sony Computer Entertainement, Sun Microsystems, Texas instruments.

dx

Společnost Microsoft si tradičně tak trochu hrála na vlastním písečku a tak v roce 1995 vydala vlastní API s názvem Direct3D (část DirectX). Jak už jsem zmínil, po úspěšném prosazení Direct3D na platformu Windows, Microsoft v roce 2003 opouští svou pozici u jednacího stolu o openGL a v nadcházejícím operačním systému Windows Vista, pro jistotu podporu openGL záměrně ořeže.

  • OpenGL a Direct3D (DirectX) - filozofie

Tyto dvě API, ačkoli přinesly podobnou funkcionalitu, byly postaveny na naprosto protichůdných myšlenkách. Direct3D bylo navrženo jako 3D HW rozhraní. Jeho vlastnosti se odvíjí od toho, jaké vlastnosti poskytuje HW. Na druhou stranu openGL bylo postaveno jako 3D renderující systém, který může být HW akcelerován. Zatímco direct3D vyžaduje, aby aplikace sama spravovala HW prostředky, OpenGL má implementaci, která to udělá za ní (za aplikaci). To způsobuje, že je mnohem jednodušší pracovat pomocí openGL API. Vývojář pracující s Direct3D musí HW prostředky spravovat sám. Jak je vidět, tenhle zaostalý přístup k HW, který Microsoft vynalezl v dobách DOSu, nás tady bude strašit ještě dlouho. Nicméně, toto nesystémové řešení má jednu nezanedbatelnou výhodu. Vývojáři mají možnost spravovat HW zdroje způsobem, který se jim zdá zrovna pro tu jednu jejich aplikaci nejvýhodnější, což je u počítačových her výhoda jistě lákavá.

dx-opengl

Dalším rozdílem mezi těmito API, byl způsob, jakým nakládaly s renderováním textur. Zde se přístup Direct3D osvědčil mnohem více, zatímco implementace openGL byla poměrně nešikovná. Tento problém byl ovšem v openGL vyřešen a dnešní verze obou API maji k renderování textur podobný přístup.

 

  • OpenGL a Direct3D (DirectX) - srovnání výkonu

  Poté, co se obě API (Direct3D a openGL) etablovaly na trhu, bylo možno sledovat něco, čemu se dá říkat "API Wars". Nejvíce argumentů se točilo okolo otázky, které API podává vyšší výkon. Tato otázka nabývala na důležitosti i vzhledem k vysokým cenám grafických akcelerátorů a vzhledem k tomu, že Microsoft v té době implementoval obě API. Microsoft pochopitelně vydával své Direct3D API za výkonnější a dokládal to řadou svých vnitropodnikových testů. Velkou ztrátu výkonu openGL zdůvodňoval přesnou specifikací opekl apod...

Tento všeobecně šířený FUD vzal za své v roce 1996 na SIGGRAPH (Special Interest Group on Computer Graphics) conference. Tehdy SGI vyzvala Microsoft na souboj s jejich vlastní implementací optimalizovanou pro Windows zvanou CosmoGL. Následné demonstrace prokázaly, že openGL se Direct3D minimálně vyrovná, v mnoha případech jej však výkonnostně překonává. Tento "souboj" prokázal, žeproklamovaný "špatný" výkon openGL ve windows byl způsoben (?záměrnou?) špatnou implementací opekl Microsoftem, nikoli špatným návrhem openGL. (neopakuje se situace ve Vistě?)

dx9

Podstatnější rozdíly ve výkonu obou API se odvíjejí od struktury ovladačů dodávaných výrobci HW. Pod DirectX, ovladače výrobců HW jsou kernel-mode ovladače instalované do operačního systému. User-mode část je pak zajišťována pomocí DirectX runtime poskytovaného společností Microsoft. Naproti tomu pod openGL je ovladač HW dodaný výrobcem rozdělen na user-mode část implementující openGL API a kernel-mode ovladač, kterého volá user-mode část. (Česky řečeno, pod DirectX tvoří celek ovladače 2 společnosti - dodavatel HW + Microsoft, pod openGL je to pouze dodavatel HW).

Problémem je, že volání kernel-mode operací z user-mode vyžaduje přepnutí CPU do kernel-mode. Tato procedura vyžaduje velmi dlouhou dobu (několik mikrosekund) a v této době není CPU schopno provádět žádnou operaci. Proto je třeba maximální optimalizace, aby se počet těchto procedur s CPU snížil na minimum. Například: Pokud je command-buffer grafického jádra plný renderovaných dat, API může jednoduše další volně ukládat do dočasného bufferu, a až je command-buffer Grafického jádra téměř prázdný, může provést změnu kernel-mode a "nasypat" tam nahromaděná volání najednou. Tato optimalizace bývá nazývána jako Marshaling.

dx10

Protože ovladače dodávané výrobcem jsou kernel-mode a user-mode je mimo vliv výrobce (Microsoft DX-runtime) nemá výrobce žádnou možnost provedení takovýchto optimalizací. Protože direct3D - user-mode část implementující API, nemůže mít žádné informace o tom, jak funguje "cizí" ovladač, nemůže také efektivně Marshalling podporovat. Z toho vyplývá, že každé Direct3D volání musí provést časově náročný kernel-mode switch. Protože OpenGL HW ovladač výrobce má svoji user-mode část, výrobce má možnost implementovat Marshalling a zvyšovat tak výkon. Pod openGL jsou samozřejmě také prováděny operace přepnutí do kernel-mode, ale teoretické maximum počtu těchto operací pod openGL je rovno standardnímu počtu prováděnému pod Direct3D. Až Direct3D 10 (DirectX10), vývojový "hit" posledních dní, implementuje vlastnosti, které má openGL už léta a umožňuje provozovat části ovladačů v user-mode a umožnit tak Marshalling, čímž se výkon obou API víceméně srovnává.

  • OpenGL a Direct3D (DirectX) -

                          porovnání vlastností a použití

OpenGL vždy nacházelo více využití v profesionální sféře, zatímco Direct3D se zaměřilo pouze na hry. V minulosti většina profesionálních karet podporovala pouze openGL a až v poslední době jsou profesionální karty od ATI, nVidie a Matroxu dodávány s podporou obou API. Důvod pro převahu openGL v profesionálním segmentu je částečně historický. Spousta profesionálních aplikací byla napsána pro IrixGL a provozována na pracovních stanicích SGI a následně portována na openGL. Navíc, jak jsem již zmínil, velká část profesionálních karet podporovala pouze openGL. OpenGL také disponuje velkou škálou vlastností, které i když jsou bezvýznamné pro herní trh, jsou hojně využívány v profesionálních aplikacích.

Direct X naproti tomu nebyl vytvořen se záměrem práce v profesionální grafice a zaměřil se jen na herní segment a vývoj her. Je tedy úzce specializovaným API, zatímco openGL je rozsáhlé API poskytující funkcionalitu pro všechny typy aplikací, nikoli pouze jedné oblasti. Převaha Direct3D v herním segmentu má silné historické kořeny. V dávných dobách 3D hraní byla dominantní silou 3dfx se svým vlastním API Glide. Glide bylo mnohem více nízkoúrovňové než Direct3D a openGL a poskytovalo mnohem vyšší výkon. Vysoký výkon ve hrách byl nejdůležitější vlastností a tak bylo Glide tvůrci her významně preferováno před openGL a Direct3D. S tím jak se HW zrychloval, hrubý výkon API přestával být tak důležitý jako snadnost používání při tvorbě her. Navíc Glide bylo omezeno pouze na HW od 3dfx, a tak se vzrůstající potřebou univerzálního API ztratilo 3dfx své pozice, zejména ve prospěch svého hlavního rivala - nVidii. Za této situace vývojář volil jednu ze dvou HW nezávislých API - Direct3D a openGL.

openGL-nvidia

Velký nárůst popularity Direct3 způsobilo hlavně fakt, že tehdejší implementace openGL bylo mnohem náročnější používat. Použití implementace openGL vyžadovalo zahrnutí úplně celé openGL, tedy i těch částí, které nebyly využívány, protože je HW nepodporoval. Direct3D oproti tomu poskytoval přímý přístup k HW s velmi jednoduchými ovladači, které jednoduše řekly aplikaci, zda daný HW určitou vlastnost podporuje či nikoliv. To mu zaručovalo velmi vysoký výkon, tolik požadovaný herním segmentem. S postupnou implementací funkcionality openGL přímo do HW, přestala být tato nevýhoda aktuální. Dnešní verze openGL zřídkakdy implementují vlastnosti, které by nějaký běžný HW nepodporoval.

  • Výhledy do budoucna

  Direct3D API je dnes, jako většina produktů Microsoftu, pevně svázána s Windows. Vzhledem k rozšíření Windows a záměrné ne zcela dokonalé implementaci openGL ve Windows Vista má svou budoucnost zatím jistou. "99%" her pro windows platformu jistě použije DX10 a vyšší. Klíč k naprosté herní dominanci se ale může stát pro Direct3D i branou do propadliště dějin. Protože Microsoft svázal tento produkt s Windows, bude budoucnost Direct3D stejná jako je budoucnost Windows, ať už bude jakákoli ...

oepnGL

openGL dnes dospívá do verze 3.0, která bude vydána v dohledné době. Na rozdíl od Direct3D je otevřeným standardem používaných na všech HW i SW platformách a umožňuje tvorbu jak profesionálních aplikací, tak her. Pokud se nestane něco převratného, na platformě Windows již openGL hry neuvidíme a toto API se zůstane doménou pro hry na SonyPlaystation, v Linuxu, či na počítačích Apple. Profesionální segment si jistě podrží, neboť v něm žádného velkého konkurenta vlastně ani nemá. Jelikož openGL stojí na mnoha "nohách", můžeme říct, že její budoucnost je 100% SVĚTLÁ (a nikoli černá, jak čtu v každé druhé diskuzi o grafické kartě). Ať už se ve světě IT sesype jakákoli firma či platforma, vždy tu bude jiná, která OpenGL využívá. Můžete ovšem tohle říct o DirectX, pokud mu podtrhneme jedinou "nohu" na které stojí?

Zdroje:

  • OpenGL.org
  • khronos.org
  • phoronix.com
  • wikipedia.org

Některé části článku vznikly jako volný překlad veřejně dostupných informací z uvedených zdrojů

 

Starší články


Komentáře
Přidat Nový
pfhawk [Zobrazit profil] [Poslat zprávu] 2007-11-14 21:33:16

velice zajimavej clanek, jen tak dal...
Squad_leader [Zobrazit profil] [Poslat zprávu] 2007-11-14 21:46:16
avatar
Citace:
Můžete ovšem tohle říct o DirectX, pokud mu podtrhneme jedinou "nohu" na které stojí?


Ona "jediná noha" DirectX je nesrovnatelně silná v porovnání s libovolnou z noh OpenGl.
certmir [Zobrazit profil] [Poslat zprávu] - re: 2007-11-14 21:56:28
avatar
To bych nerekl, profi aplikace jsou stejne perspektivni jako hry. Spis to, ze OpenGL muze s pomoci spravneho OS nahradit DirectX, ale naopak zatim urcite ne. Spis bych rekl, ze je to presne naopak, Direct X je zranitelnejsi. I na Microsoft obcas dopadne nejaka ta facka za poruseni hospodarske souteze (viz nedavno u nas v Evrope) a za par let uz Windows X nemusi byt temer synonymem pro OS (s nadsazkou).
Bobris [Zobrazit profil] [Poslat zprávu] 2007-11-14 23:40:50

Navic ta noha neni jen jedna. Xbox je taky velka noha a tam noha OpenGL neni vubec (nebo jen softwarova, ale to se nepocita).

Mimochodem: Visty maji moznost implementovat kompletni OpenGL (2.0), stejne tak jak meli XP. Ano byla doba kdy MS rikal, ze to nepujde, ale zmenili nazor (viz Wikipedia :-)
DirectX taky neni jen o Direct3D, ale treba i o DirectInputu, DirectShow. Obzvlast DirectInput je zatim nenahraditelny.

Rozhodne pekny clanek, ale je potreba jeste o neco vetsi objektivity a kdyz uz prekladas Wikipedii, tak neprekladat jen co se ti hodi :-)
Nadruhou stranu diky tomu, ze DX10 je jen pro Visty, tak tim MS mozna DX3D sam pohrbil, alespon prozatim. Brutalni zlevnovani pameti ovsem zase preje Vistam (64bit Visty jsou povazovany jako lepsi volba nez 64bit XP).
Anonymní  2007-11-15 09:16:26

zdánliva neobjektivita není záměrná. Tento článek mi zatím dal nejvíce práce. I proto, že nemám patřičné vzdělání. (jako asi nikdo z nás) a musel jsem hodně věcí nastudovat, než jsem ho napsal.
certmir [Zobrazit profil] [Poslat zprávu] - Super 2007-11-14 21:49:24
avatar
Presne, vyborne, strucne a zajimave podane info. ElCondor nezklamal. Postupne a prehledne podane informace i treba pro toho, kdo nemel o existenci API potuchy. Jasne, jen tak dal...
Solitary [Zobrazit profil] [Poslat zprávu] 2007-11-14 23:04:30
avatar
3dfx glide... tenhle termin sem neslysel uz skoro 10let jinak moc peknej clanek
MIZ [Zobrazit profil] [Poslat zprávu] - zajímavé 2007-11-15 13:02:04
avatar
OpenGL se nějak vytratilo, to jediné jsem o něm věděl. Až nebude o čem psát, může být zajímavé něco o jeho praktickém využití pod Linuxem. O tom nevím totiž vůbec nic. Zatím.
2vkjmch [Zobrazit profil] [Poslat zprávu] - Proč 2007-11-15 13:12:54

Tak už mi konečně ElCondor "donutil" svými zajímavými články abych se tu taky zaregistroval. Díky

.

Citace:
Až Direct3D 10 (DirectX10), vývojový "hit" posledních dní, implementuje vlastnosti, které má OpenGL už léta ...


Tohle mi už začíná pěkně štvát. Klasický model: Někdo něco vymyslí a Misro$oft si po letech udělá vlastní implementaci dané věci a předkládá ji za svou super převratnou novinku na kterou většina běžných uživatelů skočí a rychle za ní utratí ať už přímo nebo nepřímo (využíváním jiného produktu) peníze.

Malej příklad z mnoha: Když se začalo prosazovat MP3, tak vyšli s WMA a snažili se je prosadit za všech sil a sil to oni mají dost a dost a nebojí (a dost často ani nestydí) se je použít. AAC který už v té době byli v beta verzi na světě už se pořádně neprosadili ikdyž byli mnohem lepší než WMA (a asi pořád sou). Každej přehrávač začal podporovat WMA a skoro bych řekl, že kdyby v té době už MP3 neměli tak silnou pozici, tak kdo ví jak by to skončilo. Tyhle věci fungují jak směhová koule a jen někdo s ohromnou silou má rozumnou šanci kouli zastavit, předělat a poslat svoji verzi zase dál. Prostě ke každýmu software kterej za něco stojí najdete po čase alternativu od MS, která se tváří být lepší (což vždy není) a je líp propojená s vašema Woknama (to většinou někdy až k nelibosti člověka je).

Je to pořád dokola a pořád ta samá lež, která má za cíl, aby jsme si neměli z čeho vybírat. Jak dva ploty o odou stranách cesty, který se k sobě stále přibližujou a přes který se Microsoft snaží, aby jsme neviděli. Na konci cesty je absolutní závislost na produktech jedné firmy. Chodím například připojovat lidi k naší síti a vidím, že jejich jediným průvodcem ve světě počítaču jsou Wokna - asi tak jako jedinou výchozí stránkou může být Seznam a že ikona "to modre E tak to je ten Internet". Nezlobím se na ně. Tak se věci dneska mají a oni jsou jen normální uživatelé, teří nemají v podstatě na výběr a kterým někdo svazuje ruce aniž to vědí. - Když si půjdete koupit třeba Pizzu, tak si můžete vybírat spoustu výrobců, ale co by jste doporučili člověku co začíná používat počítač a chce si sem tam zahrát nějakou hru. hmm ...?

Taky mě trochu štvou i někteří (většinou) mladší autoři článků na internetu nebo v časopisech ... tuhle jsem četl něco jako: "IE7 má nově možnost prohlížet různé stránky na více listech v jednom okně což už má Firefox dávno". Sakra a kde byl Firefox, když tohle už uměla Opera několik let - a z té vyšlo vůbec spousta inovací o kterých si spousta lidí myslí, že jsou z Firefoxu. Sláva Opeře. Ale až Firefox měl tu sílu (jak se stával konkurencí) donutit MS trochu s tím přiblblým IE něco udělat. Firefox vsadil na jednoduchost v základu a pozdější rozšiřitelnost a byla to moc dobrá volba. Sláva mu.

Prostě k tomuhle článku: Čest tomu kdo věci vymýšlí a snaží se výrobcům HW a programátorům ulehčit práci tím, že vymyslel a rozvíjí standard pro všechny. A handa tomu kdo přičichnul na pár let k věci, pak si vymyslel něco svého a svým způsobem (špatnou podporou otevřených standartů) nutí výrobce a pak i lidi k používání jen svých produktů.
HANBA
Pouze registrovaní uživatelé mohou přidat komentář!