Tak, tak, kolejny wpis o Micro$ofcie – o tym, jak jego rozwiązania są denne i beznadziejne i dlaczego ludzie z nich korzystają.
Czym są DirectX i OpenGL? Ano, są to – w skrócie – biblioteki głównie do renderowania 3D (i nie tylko, ale o tym za chwilę). DirectX jest zamknięty i od podstaw stworzony przez M$, natomiast OpenGL jest otwarty i stworzony przez Silicon Graphics, jednego z członków grupy ARB, czyli zrzeszenia kilku dużych firm komputerowych – m.in. Intel, NVIDIA, IBM, Apple i ATI. ARB jest aktualnie wcielone w grupę Khronos.
No, to jedziemy!
- DirectX jest dostępny tylko i wyłącznie na Windowsa (w tym również na jego Xboksowe i mobilne odmiany), natomiast OpenGL dostępny jest na Windowsa, Mac OSa, Linuksa, PlayStation 3 i wszystkie inne popularne systemy (w tym systemy mobilne), ponadto posiada bindy na kilkadziesiąt języków programowania.
- Starsze Windowsy nie obsługują nowych DirectXów. Wszystkie obsługiwane przez OpenGLa systemy, nawet bardzo stare obsługują najnowszego OpenGLa.
- OpenGL jest (często – zależnie od implementacji) szybszy.
- W OpenGLu najnowsze technologie są implementowane wcześniej niż w DirectXie dzięki rozszerzeniom – np. technologia teselacji która jest tak reklamowana przez Microsoft, producentów gier, czy czasopisma była dostępna w OpenGLu 3 lata wcześniej.
- Microsoft straszy użytkowników przekonując ich do DirectXa – tzw. FUD.
- Mylące kampanie reklamowe – niektórzy użytkownicy przekonywali się do nowego DirectXa, podczas gdy to samo można było uzyskać w starym edytując plik konfiguracyjny.
- OpenGL był początkowo lepiej napisany, potem Microsoft zaczął podkradać rozwiązania otwartej biblioteki.
- Łatwiej jest się nauczyć obsługi OpenGLa niż DirectXa. Do OpenGLa jest ponadto więcej tutoriali i poradników w internecie.
- OpenGL jest biblioteką do grafiki, DirectX daje też rozwiązania do kontrolerów, internetu, dźwięku i tekstu – bezsens. (potem wydajność marna, a jak to mówią – „co jest do wszystkiego, to jest do niczego”)
- DirectXa trzeba zazwyczaj dodatkowo doinstalować. OpenGL jest dostarczany wraz ze sterownikami do karty graficznej.
- Żeby pisać aplikacje wykorzystujące OpenGL, nie trzeba nic doinstalowywać – odpowiednie nagłówki są instalowane zazwyczaj wraz z kompilatorem. Do DirectXa trzeba instalować SDK.
- OpenGL działa na zasadzie klient-serwer, co oznacza, że można wyświetlić grafikę wyświetlaną przez OpenGL np. na zdalnym terminalu. DirectX nie daje takiej możliwości.
Wniosek?
DirectX to kolejny, beznadziejny badziew od Micro$oftu, który zdobył popularność tylko dzięki marketingowi i zastraszaniu klientów. OpenGL daje większe możliwości, jest prostszy w obsłudze, działa na wszystkich najpopularniejszych platformach i jednocześnie jest szybszy od DirectXa. OpenGL daje lepszą grafikę nawet na starszym sprzęcie – głównie ze względu na kompatybilność DirectXa nie tylko z samym Windowsem, ale również określonymi jego wersjami i kartami graficznymi. Producenci gier olewają takie platformy jak Linux pomimo tego, że skoro robią porty swoich gier na PlayStation 3 lub na Mac OSa to oznacza to, że na Linuksa też się da.
Po raz n-ty z kolei można się przekonać, że ogromna korporacja, jeżeli tylko ma dużo kasy, może nic nie robiąc wywołać więcej szumu niż globalna społeczność, która odwala masę niesamowicie dobrej roboty w tempie dużo szybszym od Microsoftu. Daje masę własnościowego software’u zabijając to, co jest jednak lepsze. A ludzie i tak z tego korzystają. Idioci.
15 komentarzy
Sobak
Generalnie ze wpisem się zgadam. Praktyka zżynania jest obecna praktycznie wszędzie. Czy to wśród przeglądarek, czy systemów.
Jedynie dla tego punktu
pokusiłbym się o link do jakiegoś benchmarku.
z kolei
to już tylko subiektywna opinia. Znam osoby, które piszą w assemblerze a nie ogarniają HTML-a 😉
SeaMonster131
To Tylko Twoja i wyłącznie Twoja opinia prawda? Przedstawiłeś tutaj TYLKO WADY Direct i same ZALETY OGL’a, a gdzie zalety DX i wady ogl’a? Bądź obiektywny, a nie, jak ktoś Ci powiedział – DirectX to dno, OGL wymiata – i wtedy jego słuchasz, zastanów sie…
m4tx
adminNapisałbym wady Dxa, jakby jakieś były (albo po prostu ja ich nie znam).
lukasz
ten artykul to stek bzdur.
m4tx
adminMoże zaargumentujesz? 🙂
Drraven
E tam 😀
Jest szybszy bo prawie zawsze nowszy 😀
Jest szybszy bo wszystko go obsługuje 😀
Wystarczy?
ison
o proszę, znalazłem ten artykuł w google, patrzę a tu m4tx 😉
OpenGL zawsze był o krok do przodu od DX, gdyby nie złodzjeski majątek M$ i fałszywe kampanie reklamowe to DX już by dawno upadł, największy żal czuję do M$ gdy widzę te porównania DX 10 i 11 gdzie w screenie z 11 zwiększyli trochę kontrast i zrobili parallax mapping co można było zrobić nawet na antycznych DX/OGL ;D czy na serio ktoś wierzy, że upgrade DX 10 do 11 poprawi magicznie grafikę? śmiać się czasem chce, a jeszcze bardziej z tych ludzi, którzy używają DX i idą w zaparte, ale cóż…
pomysł na biznes wg M$ – zaimplementować jakiś fajnie wyglądający shader, walnąc napis new DirectX 999999 oczywiście niekompatybilny ze starszymi Windowsami i wypuścić nowy system tak żeby znowu miliony frajerów go kupiło.
warto też poczytać http://www.wykop.pl/ramka/283984/dlaczego-powinienes-uzywac-opengl-a-nie-directx/
Nieznajomy
Po części masz dużo racji, ale popularność DirectX to nie tylko reklamy itd, poczytaj trochę o historii OGLa, było w pewnym momencie spore zmieszanie z obsługą różnych rozszerzeń co wymagało trochę pracy od programistów. W tych czasach najwięcej stracił OpenGL, a zyskał jego rywal, ale myślę, że powoli OpenGL odzyskuje „zaufanie” i będzie go używać coraz więcej programistów.
Tomek
Liczy się nie to co było, ale co jest teraz 🙂
Mike148
OpenGL jest biblioteką do grafiki, DirectX daje też rozwiązania do kontrolerów, internetu, dźwięku i tekstu – bezsens. (potem wydajność marna, a jak to mówią – „co jest do wszystkiego, to jest do niczego”)
Kto powiedział że wydajność marna ? W openGl’u musisz ściągać osobne biblioteki do wszystkiego, a ty przerzywasz że DirectX trzeba zainstalować i masz już wszystko ?
Krzysztof Kluczek
Na PS3 i systemach mobilnych nie ma OpenGL. Jest OpenGL ES, a to co innego niż OpenGL. Poza tym na PS3 żadne szanujące się studio z OpenGL (ES) nie korzysta – są wydajniejsze sposoby programowania GPU (bezpośrednie wysyłanie poleceń).
Proszę mi pokazać działającego Windowsa 3.11 z OpenGL 4.0. Problem: stare systemy nie obsłużą płyty z PCI-E. 😉
G-prawda. Wyniki benchmarków są z reguły zbliżone. Autor nie zgłębił dostatecznie tematu.
Tesselacja jest w:
– DirectX 11 – release October 22, 2009
– OpenGL 4.0 – release March 11, 2010
Nie mam pojęcia jakiego fonta autor używa, że -1 wygląda jak 3. 😉
[[citation needed]] – osobiście nie byłem straszony i nie znam nikogo, kto by był.
Również [[citation needed]].
Błąd. A raczej kompletna nieznajomość architektury systemu/driverów. OpenGL nie jest w ogóle napisany, jeżeli o kod chodzi – twórcy driverów pozostawieni są sami sobie. Za to MS sporo brudnej roboty odwala sam. W szczególności dostarcza kompilator HLSL.
OpenGL uczyłem się rok. DirectX’a 2 tygodnie. Co do drugiego zdania – [[citation needed]].
Kolejna rażąca nieznajomość tematu. Komponenty DirectX łączy jedynie nazwa i w żaden sposób nie wchodzą ze sobą w interakcje. Równie dobrze można stwierdzić, że OpenGL zamula bo w pakiecie ma OpenAL i OpenCV.
DirectX i sterowniki są dostarczane z Windowsem do wszystkich istniejących i spodziewanych sprzętów. Wsparcie OpenGL prawdopodobnie tez tam jest.
Żeby używać najnowszych featurów OpenGL musisz z reguły doinstalować najnowszy glext.h. Z reguły też jakąś bibliotekę ładującą te funkcje, bo robienie tego na piechotę jest raczej PITA. 😉
A jak często przeciętny zjadacz chleba używa tego w praktyce?
m4tx
adminNie mówiłem o aż tak starych systemach 😉 Jak już było na pewnym forum wyjaśnione, mowa tu o Windowsie XP (którego wciąż dużo osób przecież używa), na którym DirectX-a 11 nie uświadczymy.
Tutaj mowa była o pierwszym Crysisie i screenach pokazujących dobitnie wyższość DirectX-a 10 nad 9, a w sieci było pełno poradników, które pokazywały, jak uzyskać niemal identyczny efekt w starszej wersji DX-a.
Jak najpierw uczyłeś się OpenGL-a, a potem DirectX-a to nic dziwnego ;p
http://blog.wolfire.com/2010/01/Why-you-should-use-OpenGL-and-not-DirectX
Sekcja „2. FUD about OpenGL and Vista” (niżej jest też o wspomnianym wyżej Crysisie)
ison
@Krzysztof Kluczek tesselacja w opengl była w rozszerzeniu 3 lata przed DX11
Mike148
Powiem tak. Artykułem można sobie tyłek podetrzeć. Nie nadaje się do niczego. Ale cóż się dziwić jak do władzy w internecie dochodzą dzieci neostrady – nie znają się na niczym, ale wypowiadają o wszystkim.
Tomek
Mówi to ten, który w niku daje sobie część nazwiska korwina. 🙂