Autor Wątek: OpenGL vs DirectX  (Przeczytany 162799 razy)

# Marzec 07, 2006, 13:18:02
Zaczynam dedykowany wątek do świętych wojenek zwolenników bibliotek graficznych. Jeśli ktoś koniecznie chce się wypowiedzieć nt. wyższości jednej nad drugą proszę robić to tutaj. Analogiczne wątki w innych miejscach będą kasowane.

Offline Mr. Spam

  • Miłośnik przetworów mięsnych

Offline Majtek

  • Użytkownik

# Marzec 07, 2006, 14:13:33
znowu zacznie się wojna ;) Oba są tak samo dobre więc po co to. w sumie lepszy jest ten krórego więcej znasz bo więcej w nim zrobisz ;D

Offline mr666

  • Użytkownik

# Marzec 07, 2006, 15:45:31
znowu zacznie się wojna ;) Oba są tak samo dobre więc po co to. w sumie lepszy jest ten krórego więcej znasz bo więcej w nim zrobisz ;D

Racja, racja, ale OGL jest przenosny, a DX nie (no chyba ze mowimy o XBOXie).



Offline shyha

  • Użytkownik
    • Shyha@Flickr

# Marzec 07, 2006, 15:47:56
znowu zacznie się wojna ;) Oba są tak samo dobre więc po co to. w sumie lepszy jest ten krórego więcej znasz bo więcej w nim zrobisz ;D

Racja, racja, ale OGL jest przenosny, a DX nie (no chyba ze mowimy o XBOXie).

Skoro jest przenośny na XBOX'a tzn, że jest przenośny czy nie? :P

Więc oba są przenośne :) sam obaliłeś swój argument :D

Offline Krzysiek K.

  • Moderator
    • DevKK.net

  • +1
# Marzec 07, 2006, 16:15:46
Z mojej perspektywy wygląda to tak:

* OpenGL:
+ przenośność pomiędzy wieloma systemami
+ proste API dobre do nauki podstaw 3D
+ automatyzuje wiele rzeczy
- uczy złych nawyków (glVertex, brrr)
- nie korzysta z zalet obiektów
- cały bałagan z rozszerzeniami, bez których czasem nie da się obejść
- utrudnienia w programowaniu zaawansowanych rzeczy pod różne karty

* Direct3D
+ możliwość przeniesienia na XBox'a
+ łatwość w pisaniu jednocześnie pod wiele typów kart graficznych
+ obiektowe API poprawia czytelność i zrozumiałość kodu
+ prostote i zrozumiałe API, po pokonaniu pierwszych trudności
+ wygodny dostęp do wielu funkcji kart
- mniejsza ilość gotowych przykładów w sieci
- zabawa z odświerzaniem zasobów

Z mojej perspektywy wygląda to tak, że OpenGL jest dobry dla początkujących, średniozaawansowanych i profesjonalistów z dużym budżetem, a Direct3D dla średniozaawansowanych, zaawansowanych i profesjonalistów (wszystkich). Oczywiście nie mówię, że nie można się wyłamać z tych ram, ale, moim zdaniem, wtedy będzie nieco trudniej przebrnąć przez pewne rzeczy. Na moim przykładzie, w tej chwili większość rzeczy piszę pod OpenGL, ale powoli będę przesuwał nacisk na Direct3D, ponieważ w OpenGL zaczyna się robić zbyt duża zabawa z rozszerzeniami, co wymaga czasu i odpowiedniego sprzętu (niestety, na GeForce nie mogę pisać pod niektóre Radeony - Direct3D w większości usuwa ten problem).


Wszystko, co napisałem powyżej, to moje prywatne zdanie i każdy ma prawo się z nim nie zgodzić, ale nie powinien wymagać ode mnie zmiany moich poglądów. :)

# Marzec 07, 2006, 16:38:05
A z mojej perspektywy wygląda to tak:

* OpenGL:
+nie korzysta z zalet obiektów

* Direct3D
- obiektowe API

 ;D :P
To oczywiście jest względne i każdy będzie tu miał inne zdanie

Cytuj
- cały bałagan z rozszerzeniami, bez których czasem nie da się obejść
Co do rozszerzeń to oczywiście masz racje - to problem - ale tylko pod Windows - no i nie zapominajmy komu to zawdzięczamy  ;D

Cytuj
+ możliwość przeniesienia na XBox'a
Zgadzam się - to jedna z największych zalet DX.
« Ostatnia zmiana: Marzec 07, 2006, 16:39:53 wysłana przez CzerwonyKapturek »

Offline shyha

  • Użytkownik
    • Shyha@Flickr

# Marzec 07, 2006, 16:46:34
Cytuj
- cały bałagan z rozszerzeniami, bez których czasem nie da się obejść
Co do rozszerzeń to oczywiście masz racje - to problem - ale tylko pod Windows - no i nie zapominajmy komu to zawdzięczamy  ;D
Co?
A zawdzięczamy temu, że jest kilku producentów kart graficznych. Ach ta niedobra konkurencja....

Offline mr666

  • Użytkownik

# Marzec 07, 2006, 16:51:37
znowu zacznie się wojna ;) Oba są tak samo dobre więc po co to. w sumie lepszy jest ten krórego więcej znasz bo więcej w nim zrobisz ;D

Racja, racja, ale OGL jest przenosny, a DX nie (no chyba ze mowimy o XBOXie).

Skoro jest przenośny na XBOX'a tzn, że jest przenośny czy nie? :P

Więc oba są przenośne :) sam obaliłeś swój argument :D

Ha... tu mnie masz :P
Mialem po prostu na mysli PC-ty czy inne Mac'y

Moze sformuluje inaczej: OGL jest bardziej przenosne ;) lub DX nie jest przenosny na inne PeCetowe OS-y.

Offline SauRooN

  • Użytkownik

# Marzec 07, 2006, 17:07:21
Nie wiem czy ta dyskusja ma jakikolwiek sens, znajomość API graficznych to jest taka zupełna podstawa programowania grafiki, więc o co ten krzyk? W praktyce i tak trzeba znać i jedno i drugie. W jednej firmie będziesz pisał z wykorzystaniem GL'a, w drugiej z wykorzystaniem D3D, w trzeciej z wykorzystaniem obu, a i tak prawdopodobnie nawet nie zetkniesz się bezpośrednio w kodzie z bezpośrednimi wywołaniami API, chyba że firma będzie tworzyła silnik od zera (co jest raczej mało prawdopodobne), o wiele ważniejsza jest orientacja w tym, jak to dokładnie działa. Podobnie jest z shaderami, w praktyce trzeba umieć sprawnie posługiwać się i Cg i GLSL'em i HLSL'em i w razie potrzeby zrobić coś w asmie, a i tak dobra znajomość tych języków to tylko totalna podstawa. Im lepiej znasz oba API, tym lepiej rozumiesz różnice i podobieństwa między nimi, widzisz analogie i lepiej potrafisz optymalizować kod odpowiedzialny za grafikę.

Pisałem bezosobowo ofkors ;)

Offline Krzysiek K.

  • Moderator
    • DevKK.net

# Marzec 07, 2006, 17:11:02
Cytuj
Co do rozszerzeń to oczywiście masz racje - to problem - ale tylko pod Windows - no i nie zapominajmy komu to zawdzięczamy
Chyba pod Linuksem są mimo wszystko wspierane rozszerzenia takie jak ATI_fragment_shader, NV_register_combiners, czy EXT_framebuffer_object, bez których nie da się obejść, jeżeli chcesz mieć sensowne wyniki na przeciętnych kartach?

Cytuj
+ możliwość przeniesienia na XBox'a

Zgadzam się - to jedna z największych zalet DX.
Może dla mnie nie w tej chwili, ale to jest duża zaleta na przyszłość. Wbrew pozorom, gry na XBox'a to gigantyczny rynek, którego żaden światowy wydawca nie zignoruje. Oczywiście wyczuwam w Twojej wypowiedzi ironię, więc, jeżeli to nie jest oczywiste, zaznaczę, że wady i zalety przez mnie wymienione nie są wymienione w żadnej konkretnej kolejności i listy te są dalekie od kompletności. :)

Cytuj
Moze sformuluje inaczej: OGL jest bardziej przenosne ;) lub DX nie jest przenosny na inne PeCetowe OS-y.
W przypadku gier to, moim zdaniem, nie ma aż tak wielkiego znaczenia. Fajnie mieć możliwość uruchomienia danej gry pod Linuksem, ale jakoś wątpię w istnienie dużej liczby graczy nie mających żadnego dostępu do Windowsa, skoro większość gier jest i tak tylko na tą platformę. :)



SauRooN: Zgadzam się w zupełności, ale myślę, że w tym wątku chodzi bardziej o amatorskie projekty. :)

Offline Koshmaar

  • Użytkownik
    • Homepage

# Marzec 07, 2006, 17:27:49
Myślę że po stronie plusów OpenGLa można by dodać jeszcze to, że jest rozwijany i wspierany przez konsorcjum ARB będące zrzeszeniem wielu dużych, znanych firm, zajmujących na rynku silną pozycję. Dzięki temu nie ryzykujemy że nawet jeśli w pewnej chwili któryś z członków zbankrutuje, to nie zostaniemy na lodzie z naszym OpenGLowym rendererkiem, gdyż inne firmy będą kontynuowały działalność ARB. Natomiast MS jest jeden, i wielu ludzi życzy mu jak najgorzej... więc choć jest to (bardzo) mało prawdopodobne, ale możliwa jest sytuacja gdy nawet ten gigant upadnie.

OTOH, DirectX dużo zyskał właśnie dzięki temu że tylko MS był zaangażowany w jego bepośrednie rozwijanie (ale to ma jeszcze dużo wspólnego z monopolistyczną pozycją tej firmy, oraz ilością $ na koncie). Niestety komunikacja i koordynacja jednego projektu pomiędzy wieloma firmami jest bardziej skomplikowana niż gdy istnieje tylko jeden wytwórca.


Btw, a co sądzicie o tym artykule: http://en.wikipedia.org/wiki/Direct3D_vs._OpenGL ?

EDIT:

Cytuj
Może dla mnie nie w tej chwili, ale to jest duża zaleta na przyszłość. Wbrew pozorom, gry na XBox'a to gigantyczny rynek, którego żaden światowy wydawca nie zignoruje.

PS3 będzie z kolei używała OpenGL ES 2.0... wbrew pozorom, to też jest gigantyczny rynek ;-)
« Ostatnia zmiana: Marzec 07, 2006, 17:51:12 wysłana przez Koshmaar »

Offline really

  • Użytkownik

# Marzec 07, 2006, 18:17:36
Ja do tej pory robiłem wszystko tylko w OGL, ale ostatnio coś mnie co raz bardziej zaczyna ciągnąć do D3D. Poniżej taki mały, subiektywny spis wad i zalet obu API:

Opengl:
+ bardzo łatwe do nauczenie
+ przenośność (między systemami)
+ dużo tutoriali  w sieci
- nie napisane obiektowo
- problemy z rozszerzeniami

Co do D3D to nie wiem na razie zbyt wiele, więc napiszę to, co od razu rzuca się w oczy:
+ obiektowość
+ ładnie zapakowane w SDK (instalujemy i niczym się nie przejmujemy :))
- trochę trudniejsze do nauki
- tylko Windows (i XBox)

P.S - powiecie, że się czepiam, ale wątek powinien się nazywać Opengl vs. Direct3D :D   

Offline Krzysiek K.

  • Moderator
    • DevKK.net

# Marzec 07, 2006, 18:35:48
Cytuj
Myślę że po stronie plusów OpenGLa można by dodać jeszcze to, że jest rozwijany i wspierany przez konsorcjum ARB będące zrzeszeniem wielu dużych, znanych firm, zajmujących na rynku silną pozycję.
Za Direct3D stoją głównie Microsoft, ATI i NVidia, a także inni mniejsi producenci kart graficznych i rozwija się to także bardzo dynamicznie (wystarczy spojrzeć na API Direct3D 10, którego opis jest w nowych DirectX 9 SDK). Co do ARB, to ostatnie sprawozdanie z ich spotkania zamieszczone na opengl.org jest datowane na grudzień 2004 - może po prostu przestali umieszczać tam informacje, ale nie wygląda to najlepiej.

Cytuj
Natomiast MS jest jeden, i wielu ludzi życzy mu jak najgorzej... więc choć jest to (bardzo) mało prawdopodobne, ale możliwa jest sytuacja gdy nawet ten gigant upadnie.
Pomyślimy, jak już upadnie. Na razie się na to nie zanosi. :)

Cytuj
PS3 będzie z kolei używała OpenGL ES 2.0... wbrew pozorom, to też jest gigantyczny rynek ;-)
PS3 będzie, XBox już jest. :)

Cytuj
Poniżej taki mały, subiektywny spis wad i zalet obu API:
Mniej-więcej napisałeś to samo, co ja. :)

Offline SauRooN

  • Użytkownik

# Marzec 07, 2006, 19:22:54
Chyba pod Linuksem są mimo wszystko wspierane rozszerzenia takie jak ATI_fragment_shader, NV_register_combiners, czy EXT_framebuffer_object, bez których nie da się obejść, jeżeli chcesz mieć sensowne wyniki na przeciętnych kartach?
Krzysiek: nie wiem co rozumiesz przez przeciętne karty, ale GL_EXT_framebuffer_object jest dość nowym rozszerzeniem

Offline Reg

  • Administrator
    • Adam Sawicki - Home Page

# Marzec 07, 2006, 19:49:47
Najlepszy jest zawsze ten język/biblioteka, który znamy. Dlatego podążając tym tropem twierdzę, że DirectX rulez! :) W OpenGL też pisałem ale niewiele, tylko jedną grę.

Nie zgadzam się natomiast z powszechnie panująca opinią, że OpenGL jest łatwiejszy i dlatego lepszy dla początkujących. Ktoś może woleć taki sposób używania biblioteki jaki prezentuje OGL (strukturalne funkcje, to bindowanie tekstur itp. motywy), a ktoś może woleć API obiektowe takie jakie ma DX (ja takie wole). Myślę, że to kwestia gustu i trudno uznać jedno z nich za trudniejsze.