Toto srovnani nemuzu objektivne udelat (a asi i nikdo jiny), protoze mam na DirectX vyhraneny nazor, ktery byl v minulosti zpusobeny stalymi zmenami v API a nedokoncenou dokumentaci. Ted se to trosku ustalilo, ale porad jsou v Directech nejake zmeny, ktere je docela slozite podchytit.
OpenGL je pouze na grafiku, kdezto DirectX obsahuje podporu grafiky, zvuku, hudby, skriptu, videa, hrani po siti atd. Trosku to pripomina OpenGL+SDL, ale na mnohem komplexnejsi urovni. Mam nejake materialy o DirectX z mych prednasek, ale nevim, jestli se to vubec hodi pro publikaci na Rootu :-)
Takze z meho pohledu:
OpenGL
-------
-multiplatformnost
-stalost API
-jednoduchost API (v porovnani s DirectX)
-scena slozena z gfx. primitiv, display listy
-neni objektove (IMHO v tomto pripade vyhoda)
-i stare knihy o OGL jde beze zbytku pouzit
-nove funkce grafickych karet obecne nejsou tak dobre podporovany, jako v DirectX
-urcite zpomaleni vyvoje
-existence SW implementace
-existence off-screen renderingu (pocitac bez graficke karty, vypocetni farmy atd)
-architektura klient-server
DirectX
---------
-existence na jedne platforme
-nove verze nefunguji na Windows NT
-kazda verze ma jine API
-zastarala dokumentace
-OO orientace (COM apod.)
ale:
-vsechny graficke ficurky novych karet jsou podporovany
-propojeni 3D grafiky a 3D zvuku
-podpora videa, skriptu atd.
-low-level/high-level pohled na scenu
Ahoj,
tak s tvrzenim:
-nove funkce grafickych karet obecne nejsou tak dobre podporovany, jako v DirectX
bych tak uplne nesouhlasil. Vsechny nove funkce GP, ktere nejsou primo v OpenGL podporovany, jsou vyrobci (dnes hlavne ATI a NVidia) do OpenGL exponovany pomoci OpenGL extensions, takze vyvojar ma k dispozici veskerou funkcionalitu grafickeho procesoru.
Celkem by me zajimalo, jak je to v Direct3D? Je tam nejaky takovy mechanizmus, jako extensions v OpenGL?
Drive byla totiz situace uplne opacna - GP umely mnohem vice, nez Direct3D specifikovalo a pokud tam neni podobny mechanizmus jako v OpenGL, tak urcita funkcionalita byla v D3D nedostupna.
V Direct3D je to reseno pomoci rozhrani, takze je to neco trosku jineho, nez OpenGL. Zmatek v rozsirenich je jinak stejny jako u OpenGL s tim rozdilem, ze Directy jsou urceny predevsim na hry na PC (a XBOX), takze si to tvurce HRY otestuje na nVidii a ATI a dal uz nic dalsiho nemusi delat. OGL vsak musi bezet na mnoha dalsich (i dost obskurnich) strojich, tam to tak jednoduche neni.
OpenGL extensions nejsou IMHO samospasitelne, pokud se za ne nepostavi nejaka silna komise ci firma, ktera je bude standardizovat. S ARB je problem, ze jim trva strasne dlouho se k necemu rozhoupat. Je me to lito, ale je to tak - jak dlouho se jeste bude cekat na OpenGL 2.0. Trosku mi to pripomina W3C, taky porad neco tvori a ostatni (MS) si stejne delaji veci po svem.
Jednu dobu se mi zdal idealni jazyk Cg, ale opet nema silneho partnera.
Ja chapu, ze vyvoj GPU byl v minulych letech hekticky, ale ted uz se pomalu prestavaji delat nove ficurky a spise se zveda vykon. Je tedy cas zavest nejaky opravdu rozumny standard (stejne jako po rychlem vyvoji HTML je zavedeno docela rozumne XHTML).
Napriklad je takovy zmatek mezi vertex shadery:
GL_NV_vertex_program vertex shader verze 1.0 firma nVidia
GL_NV_vertex_program1_1 vertex shader verze 1.1 firma nVidia
GL_NV_vertex_program2 vertex shader verze 2.0 firma nVidia
GL_ARB_vertex_program vertex shader verze 1.0 a vyšší firma nVidia
GL_EXT_vertex_shader vertex shader verze 1.0 firma ATI
GL_ARB_vertex_program vertex shader verze 1.0 a vyšší firma ATI
a pixel shadery:
GL_NV_register_combiners register combiners firma nVidia
GL_NV_register_combiners2 register combiners firma nVidia
GL_NV_texture_shader pixel shader verze 1.0 firma nVidia
GL_NV_texture_shader2 pixel shader verze 1.0 firma nVidia
GL_NV_texture_shader3 pixel shader verze 1.0 firma nVidia
GL_NV_fragment_program pixel shader verze 2.0 firma nVidia
GL_ARB_fragment_program pixel shader verze 2.0 firma nVidia
GL_ATI_fragment_shader pixel shader verze 1.4 firma ATI
GL_ARB_fragment_program pixel shader verze 2.0 firma ATI
Ahoj,
ja jsem take nenapsal, ze OpenGL ext. jsou samospasne. Chtel jsem pouze rict, ze veskera funkcionalita je i v OpenGL ihned k dispozici. Jakym zpusobem, to je uz vec jina. Jestli je lepsi mit rozsireni nebo kazdou chvili novou verzi DirectX, to uz je vec nazoru.
Take se mi nezda, ze by v tech OpenGL extensionech byl takovy bor... Vsechny jsou velice dobre dokumentovany, akorat je pravda, ze jich je celkem hodne a existuji treba 2 podobne rozsireni (ATI, NV), i kdyz by asi mohlo byt jen jedno. Od toho je ale prave ARB, aby schvalovalo obecne pouzivana rozsireni a prevadela je do zakladni specifikace.
Ale jak sam pises, OpenGL neni (nebo nebylo) primarne urceno pro hry a je to otevreny system pro vsechny platformy a od toho se to vse odviji.
BTW: urcite me znas, chodil jsem s tebou na VS i do kurzu graficke procesory k drabkovi
Jo, ja myslim, ze si rozumime. Taky nepovazuju pristup DirectX za nejlepsi, ale tam je to mozne z toho duvodu, ze je prosazovan jednou firmou.
Z tveho nicku jsem Te nepoznal, ale u Drabka jsem na par prednaskach byl - tam to ale spis bylo o DCT a videu, nez o grafickych akceleratorech.