DirectX vs. OpenGL – kolejna porażka Microsoftu

15

OpenGL

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

  1. 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

    OpenGL jest szybszy.

    pokusiłbym się o link do jakiegoś benchmarku.

    z kolei

    Łatwiej jest się nauczyć obsługi OpenGLa niż DirectXa.

    to już tylko subiektywna opinia. Znam osoby, które piszą w assemblerze a nie ogarniają HTML-a 😉

    Odpowiedz
  2. 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…

    Odpowiedz
    • m4tx

      admin

      Napisałbym wady Dxa, jakby jakieś były (albo po prostu ja ich nie znam).

      Odpowiedz
  3. lukasz

    ten artykul to stek bzdur.

    Odpowiedz
  4. Drraven

    E tam 😀
    Jest szybszy bo prawie zawsze nowszy 😀
    Jest szybszy bo wszystko go obsługuje 😀
    Wystarczy?

    Odpowiedz
  5. 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/

    Odpowiedz
    • 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.

      Odpowiedz
  6. 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 ?

    Odpowiedz
  7. Krzysztof Kluczek

    natomiast OpenGL dostępny jest na Windowsa, Mac OSa, Linuksa, PlayStation 3 i wszystkie inne popularne systemy (w tym systemy mobilne)

    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ń).

    Starsze Windowsy nie obsługują nowych DirectXów. Wszystkie obsługiwane przez OpenGLa systemy, nawet bardzo stare obsługują najnowszego OpenGLa.

    Proszę mi pokazać działającego Windowsa 3.11 z OpenGL 4.0. Problem: stare systemy nie obsłużą płyty z PCI-E. 😉

    OpenGL jest (często – zależnie od implementacji) szybszy.

    G-prawda. Wyniki benchmarków są z reguły zbliżone. Autor nie zgłębił dostatecznie tematu.

    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.

    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. 😉

    Microsoft straszy użytkowników przekonując ich do DirectXa – tzw. FUD.

    [[citation needed]] – osobiście nie byłem straszony i nie znam nikogo, kto by był.

    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.

    Również [[citation needed]].

    OpenGL był początkowo lepiej napisany, potem Microsoft zaczął podkradać rozwiązania otwartej biblioteki.

    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.

    Łatwiej jest się nauczyć obsługi OpenGLa niż DirectXa. Do OpenGLa jest ponadto więcej tutoriali i poradników w internecie.

    OpenGL uczyłem się rok. DirectX’a 2 tygodnie. Co do drugiego zdania – [[citation needed]].

    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”)

    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.

    DirectXa trzeba zazwyczaj dodatkowo doinstalować. OpenGL jest dostarczany wraz ze sterownikami do karty graficznej.

    DirectX i sterowniki są dostarczane z Windowsem do wszystkich istniejących i spodziewanych sprzętów. Wsparcie OpenGL prawdopodobnie tez tam jest.

    Żeby pisać aplikacje wykorzystujące OpenGL, nie trzeba nic doinstalowywać – odpowiednie nagłówki są instalowane zazwyczaj wraz z kompilatorem. Do DirectXa trzeba instalować SDK.

    Ż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. 😉

    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.

    A jak często przeciętny zjadacz chleba używa tego w praktyce?

    Odpowiedz
    • m4tx

      admin

      Proszę mi pokazać działającego Windowsa 3.11 z OpenGL 4.0.

      Nie 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.

      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.

      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.

      OpenGL uczyłem się rok. DirectX’a 2 tygodnie

      Jak najpierw uczyłeś się OpenGL-a, a potem DirectX-a to nic dziwnego ;p

      [[citation needed]] – osobiście nie byłem straszony i nie znam nikogo, kto by był.

      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)

      Odpowiedz
    • ison

      @Krzysztof Kluczek tesselacja w opengl była w rozszerzeniu 3 lata przed DX11

      Odpowiedz
      • 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.

        Odpowiedz

Zostaw komentarz

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>