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

Offline shyha

  • Użytkownik
    • Shyha@Flickr

# Marzec 08, 2006, 14:02:08
LOL. Nie ma jak mocny argument.

Napiszesz w końcu w jaki sposób polityka MS'a ma wpływ na to, że musisz w OGL używać rozszerzeń?

Argument? A jakim argumentem jest to że DX jest obiektowy, a OGL nie, albo to że jeden jest wydodniejszy, łatwiejszy itp - połowa argumentów w tym temacie to rzeczy względne i subiektywne, a ty jakoś czepiasz się akurat oczywistego faktu, że MS ogranicza na wszystkie dostępne sobie spsoby rozwój OpenGL na Windows.
LOL. Jak grochem o ścianę. Dobra, nieważne.

Offline Mr. Spam

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

Offline Krzysiek K.

  • Moderator
    • DevKK.net

# Marzec 08, 2006, 14:29:39
Cytuj
Nie o to chodzi, że się nie da korzystać z OpenGL 1.5 pod Windows - chodzi o to że jest to utrudnione
Takie utrudnienie to żadne utrudnienie. Pisząc o problemach z rozszerzeniami miałem na myśli kłopoty z przenośnością rozszerzeń ATI, NV, EXT i innych, oraz często pokręcone API tych rozszerzeń. Proponuję poczytać specyfikację NV_register_combiners - ja już wolę napisać odpowiedni pixel shader 1.1. :)

Cytuj
ARB standaryzuje rozszerzenia.
Nie kojarzę, żeby cokolwiek przydatnego ostatnio z ARB wyszło, a co do dotychczasowych rozszerzeń, to są tu ogromne braki, więc tak, czy inaczej jest się skazanym na ATI, NV i EXT.

Cytuj
W OpenGL też są: formaty pikseli, render buffery i fragment programy, a oprócz tego każdy producent zrobił jeszcze swoje (masz poprostu większy wybór ) Taka to już zaleta API tworzonego przez wiele firm, a nie przez jedną - wiele myśli, wiele pomysłów - z czasem jeden wygrywa i staje się częścią przyszłej wersji OpenGL.
Dla mnie to, że producenci nie mogą się dogadać ze sobą, jest raczej wadą, niż zaletą. Podobno OpenGL miał być przenośny, a tu nie da się nawet napisać pixel shadera 1.1 żeby to wszędzie poszło. :P

Cytuj
Wyciśnij HDR tone mapping, glow i Deferred Shading.
W 640x480 z normalmappingiem, twardymi cieniami, HDR (poświęcając parę bitów precyzji koloru) i glowem wycisnąłem z GeForce 2 30-40 FPS, a z Intela 855 20-30 FPS, więc się da. :)

Cytuj
Ja mam tu inne podejście - mnie fascynują najnowsze i najbardziej zaawansowane technologicznie możliwości kart graficznych - dzięki którym jakość grafiki w grach powoli zbiża się do jakości filmowej.
Kto powiedział, że ja nie mam takiego podejścia? Jak masz odpowiednią kartę, możesz włączyć sobie parallax mapping, a jak nie, to nadal cieszyć się normalmapami, które też miło wyglądają. W przyszłości planuję jeszcze inne bajery (np. możliwość włączenia miękkich cieni), ale najprawdopodobniej dopiero, jak się przeniosę z silnikiem pod Direct3D, bo pod OpenGL już po prostu wymiękam. :)

Cytuj
To oczywiste, że gdy znaczenie OpenGL'a spadnie (albo gdy wogóle ludzie przestaną w nim programować ) to DX będzie poprostu płatny.
Skąd wyciągasz takie wnioski? OpenGL tak, czy inaczej się jakoś utrzyma, więc wprowadzenie płatności za DirectX'a było by marketingowym samobójstwem Microsoftu - im będzie zawsze zależało na jak największej ilości programów pod DirectX (nawet tych amatorskich), bo to zapewnia popularność Windows'a. W momencie wprowadzenia takiej odpłatności wszyscy by zaczęli masowo przerzucać się spowrotem na OpenGL i prawdopodobnie przy okazji na Linuksy, a takiego błędu MS na pewno nie popełni.


Offline shyha

  • Użytkownik
    • Shyha@Flickr

# Marzec 08, 2006, 14:35:39
już pomijając wogóle fakt, że OGL jest standardem przemysłowym a co raczej nie grozi DX'owi

beginner

  • Gość
# Marzec 08, 2006, 19:38:00
LOL. Jak grochem o ścianę. Dobra, nieważne.
Drugi akapit był ważniejszy - czytaj do końca.

Takie utrudnienie to żadne utrudnienie. Pisząc o problemach z rozszerzeniami miałem na myśli kłopoty z przenośnością rozszerzeń ATI, NV, EXT i innych, oraz często pokręcone API tych rozszerzeń.
Bo ATI i NV nie są przenośne.

Proponuję poczytać specyfikację NV_register_combiners - ja już wolę napisać odpowiedni pixel shader 1.1. :)
Czytałem i używałem. Ale odkąd pojawił się vp i fp już do register_combiners nie wrócę.

(...) a co do dotychczasowych rozszerzeń, to są tu ogromne braki, więc tak, czy inaczej jest się skazanym na ATI, NV i EXT.
Twój wybór, twoja opinia - pamietaj że jest ona subiektywna. Ja np nigdy na API OpenGL'a nie narzekałem - poprostu je lubie takie jakie jest. Różni ludzie - różne opinie zawsze tak bedzie. Gdyby API OpenGL'a było obiektywnie złe nikt by w nim nie programował.

Cytuj
To oczywiste, że gdy znaczenie OpenGL'a spadnie (albo gdy wogóle ludzie przestaną w nim programować ) to DX będzie poprostu płatny.
Skąd wyciągasz takie wnioski? OpenGL tak, czy inaczej się jakoś utrzyma, więc wprowadzenie płatności za DirectX'a było by marketingowym samobójstwem Microsoftu - im będzie zawsze zależało na jak największej ilości programów pod DirectX (nawet tych amatorskich), bo to zapewnia popularność Windows'a. W momencie wprowadzenia takiej odpłatności wszyscy by zaczęli masowo przerzucać się spowrotem na OpenGL i prawdopodobnie przy okazji na Linuksy, a takiego błędu MS na pewno nie popełni.
Oczywiście że OpenGL się utrzyma - nie ma dla niego konkurencji - jest jedymy miedzyplatformowym standardem renderowania grafiki 3d w czasie rzeczywistym. Na dzisiejsze czasy nie ma dla niego zagrożenia, ale 3dfx (ci od VooDoo) to też kiedyś byłą firma na topie, a potem co? Przejęła ja konkurencja - nVidia. Dziś MS to konkurencja dla OpenGL - a z konkurencją w gospodarce rynkowej się walczy (to normalne). Pewnie, że w najbliższym czasie MS nie "przejmie" OpenGL - chodzi mi o to że pewne ich poczynania wskazuja na to, że MS do tego dąży (i jak mówie - nie ma w tym nic złego, ani dziwnego - bo tak działa gospodarka wolnorynkowa). Jak myślicie kto zyska na monopolu, albo chociaż "naruszeniu równowagi"? Napewno nie programiści.

(Zaznaczam jeszcze raz i wyraźnie powtarzam, że powyższy akapit raczej bardzo czarna wizja przyszłości - nie wierzę że tak się stanie. Chciałem tylko na tym hipotetycznym przykładzie wszystkim uświadomić jaka jest różnica w celach między tym co robi wielka korporacja (i wcale nie chodzi tu tylko o MS), a tym co robi cała społeczność)

beginner

  • Gość
# Marzec 08, 2006, 20:29:35
wszystkie FX 5xxx mialy osobne wyspecjalizowane fixed pipeline dla niskich ps-ow i shaderki ps1.x szly inna sciezka niz ps2.0. Dodajmy ze duzo szybsza sciezka - srednio 2-3 razy szybszy szaderek to szaderek 1.x. Byly nawet takie dzinksy, ze rendering wieloprzebiegowy na ps1.1 byl szybszy od jednoprzebiegowego na ps2.0.  Irytuje mnie gadka "przeciez jest ARB_fragment_duperel_costam". Spoko - tylko, ze speed jest dopiero od kart z silnikiem SM3.0 (mowie o nvidii - na ati nie pamietam dokladnie jak jest - ale chyba 9800 emulowal niskie shaderkami 2.0 (chyba !)). Na FX 5xxx uzycie RC i TS jest - jesli jest taka mozliwosc - ZAWSZE lepsze.

Teraz w opengl jest i tak mniejszy burdel niz byl wtedy jak je porzucilem i wyemigrowalem do oazy dx-a ;). To dobrze - sytuacja sie stabilizuje - ale i tak jest chaos z extami ktore wchodza (np fbo) a ktorych odp. d3d istnialy od dawna. itp itd ... ISS dzisiaj slicznie przeleciala (E-50 stopni/A-180 stopni -1.5 mag, APRS/Packet radio  :))

//edit Sauron ogladales ? ;) - jutro mam rodzynka - rozblysk iridium : ok -8.0 mag ! ;). Jep - orbitron - do tego konto w space-tracku - moge monitorowac blisko 9 tysiecy obiektow na orbicie :D

// updated 2006.03.09 - z najnowszych danych keplerianskich z space-tracka: rozblysk bedzie mial sile -8.1 magnitudo - ok 434 razy silniejszy blask niz wczorajszy przelot ISS po 19-stej ! :D aaaaaaaaa :D :D
« Ostatnia zmiana: Marzec 09, 2006, 15:18:52 wysłana przez st3tc »

Offline SauRooN

  • Użytkownik

# Marzec 08, 2006, 20:43:11
ISS dzisiaj slicznie przeleciala (E-50 stopni/A-180 stopni -1.5 mag :))
Nom... Orbitron? :D

Offline Krzysiek K.

  • Moderator
    • DevKK.net

# Marzec 09, 2006, 01:00:16
Cytuj
Bo ATI i NV nie są przenośne.
Niestety, jedyną alternatywą dla tych rozszerzeń jest Direct3D, albo znaczne podniesienie wymagań sprzętowych, żeby załapać się na jakiegoś ARB'a (co jest kiepskim rozwiązaniem).

Cytuj
Czytałem i używałem. Ale odkąd pojawił się vp i fp już do register_combiners nie wrócę.
Jak już pisałem, głupio jest ustawiać wymagania sprzętowe na poziomie Obliviona, skoro Twoja gra tak dobrze najprawdopodobniej wyglądać nie będzie. ARB_vertex_program jest naprawdę niezły, bo wspiera go praktycznie wszystko (nawet wbudowane Intele emulują to softwareowo), ale dużo gorzej jest z ARB_fragment_program. Nie wiem, czy zagłębiałeś się w specyfikację ARBfp, ale powinieneś wiedzieć, że jeżeli driver stwierdza, że wspiera ARBfp, to mimo wszystko może odrzucać poprawnie napisane shadery, jeżeli nie jest w stanie ich uruchomić. Większość Radeonów wspiera pixel shader 2.0, podczas gdy ARBfp odpowiada nieco wyższym pixel shaderom (ps_2_a, albo ps_2_x), więc nawet jeżeli shader ARBfp uruchomi się na karcie NVidii, to na Radeonach już nie musi. W efekcie, pomimo sporych wymagań, nawet ARBfp nie zapewnia bezproblemowej przenośności.

Cytuj
Twój wybór, twoja opinia - pamietaj że jest ona subiektywna. Ja np nigdy na API OpenGL'a nie narzekałem - poprostu je lubie takie jakie jest. Różni ludzie - różne opinie zawsze tak bedzie. Gdyby API OpenGL'a było obiektywnie złe nikt by w nim nie programował.
Opinia obiektywna, czy subiektywna, pewne braki w API i rozszerzeniach OpenGL są zauważalne. Ci, którzy nie narzekają po prostu nie korzystają z pewnej funkcjonalności (np. olewają rozszerzenia ATI i NV, sztucznie podnosząc wymagania, by trafić w jakiegoś ARB'a), albo jakoś z tym żyją (np. Carmack w Doomi'e 3 zaprogramował kilkanaście ścieżek renderujących dla różnych GPU używając różnych rozszerzeń i nie narzekał, bo miał na to czas i środki).

Cytuj
Jak myślicie kto zyska na monopolu, albo chociaż "naruszeniu równowagi"? Napewno nie programiści.
Na polu systemów operacyjnych nie ma równowagi, wszystcy praktycznie jadą na Windowsach i jakoś nikt na to nie narzeka (poza zdegustowanymi Linuksowcami). Nie widzę więc, dlaczego programiści by mieli na tym stracić, zwłaszcza, że już w tej chwili nie ma równowagi (większość silników gier opiera się na Direct3D, a większość oprogramowania użytkowego na OpenGL).

Cytuj
(mowie o nvidii - na ati nie pamietam dokladnie jak jest - ale chyba 9800 emulowal niskie shaderkami 2.0 (chyba !))
Gdzieś czytałem, że Radeony z ps2.0 robiły dokładnie wszystko na 24-bitowych floatach, podczas gdy NVidia bawiła się w różne precyzje (fixed point 12-bitów i 16-32-bitowe floaty).

Cytuj
Teraz w opengl jest i tak mniejszy burdel niz byl wtedy jak je porzucilem i wyemigrowalem do oazy dx-a
Widzę, że w swoim rozumowaniu nie jestem sam. Myślę, że już sama nasza emigracja z OpenGL o czymś świadczy.

Offline Maedhros

  • Użytkownik

# Marzec 09, 2006, 01:40:45
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.

Zgadza się , ale nie do końca. Jak narazie nie zapowiada się na to żeby Microsoft poszedł do piachu ,a nawet jęsli by się tak stało to napewno znajdzie sie ktos kto pociagnie dx-a dalej ,tak jak sie np. stalo z borlandem.  Martwiłbym się raczej o to czy w pewnym momencie sie nie okaze że direct 3d im sie znudził i zamienia na coś lepszego albo poprostu przestanie byc rozwijany, tymbardziej ze juz 2 komponenty dx-a tak skonczyły.

Offline Krzysiek K.

  • Moderator
    • DevKK.net

# Marzec 09, 2006, 01:48:15
Cytuj
Martwiłbym się raczej o to czy w pewnym momencie sie nie okaze że direct 3d im sie znudził i zamienia na coś lepszego albo poprostu przestanie byc rozwijany, tymbardziej ze juz 2 komponenty dx-a tak skonczyły.
DirectDraw był przeznaczony wyłącznie do grafiki 2D i bardzo słabo wykorzystywał akcelerację, wobec czego gry 2D były robione w OpenGL i Direct3D i w efekcie DirectDraw umarł śmiercią naturalną, a zastąpił go całkowicie Direct3D. DirectPlay był zbugowany i mało kto z niego korzystał, a większość developerów i tak pisała obsługę sieci samemu w oparciu na WinSock, więc zakończenie wsparcia dla DirectPlay było równie naturalne. Co do Direct3D, to można mieć pewność, że dopóki Windows będzie rozwijany, to nawet jeżeli Direct3D zostanie zarzucony, to coś go zastąpi.

Offline Gloggie

  • Użytkownik

# Marzec 09, 2006, 02:04:22
Cytuj
DirectPlay był zbugowany i mało kto z niego korzystał
Ja z niego korzystałem (bo obok był DirectVoice) i rzeczywiście były problemy ;)
Dodatkowo można powiedzieć o
DirectMusic - przeminęło tak jak popularność midów, reszta jest w DSound.
DirectShow - od dawna nie widziałem gry która miała by intro w czymś innym niż bink. Coraz częściej zamiast mp3 używa się ogg'ów i innych formatów, więc DS też byłoby tu bezużyteczne.

Offline shyha

  • Użytkownik
    • Shyha@Flickr

# Marzec 09, 2006, 09:41:15
(...)
Nie ważne, już nie chce mi się tobie tłumaczyć mojego pytania następny raz...

Offline SirMike

  • Użytkownik
    • SirMike's Techblog

# Marzec 09, 2006, 14:03:29
To może ja też coś napiszę.
Bardzo długo pracowałem pod DX i przechodząc przez kolejne jego wersje byłem coraz badziej mile zaskoczony:
+ biblioteka D3DX (w tym bardzo wydajny rendering tekstu)
+ działa praktycznie na każdym sprzęcie
+ HLSL
na dłuższa metę jednak bardzo przeszkadzały mi 2 rzeczy:
- model COM
- odświeżanie zasobów

przesiadłem się na OGL i po kilkunastu miesiącach podoba mi się dużo bardziej sam model programowania:
+ nie ma zbędnej obiektowośći
+ bardzo szybko można zrobić proste rzeczy
+ mogę go używac pod linuksem
oczywiście sa tez minusy
- rozszerzenia
- lekki bałagan jeśli chodzi o shadery

Podsumowując, same etapy renderingu w obu API są takie same. To, że jeden jest bardziej obiektowy a drugi strukturalny nie robi absolutnie żadnej różnicy. Mi osobiście bardziej podpasował OGL ale to tylko moja opinia. Rendering tekstu dla sprawnego kodera nie jest tu absolutnie żadnym problemem. Podobnie z rozszerzeniami.

Najfajniejsze jest to, że i tu i tu mogę używać Cg :) To rozwiązuje większość moich problemów.
Starymi kartami pokroju GF2 nie interesuje sie w ogóle, prawde mówiąc to współczesne gry i tak nie ruszają na niczym co nie ma Pixel Shadera. Dlatego ja też nie będę sobie zawracał głowy. Jeśli robię coś co wygląda jak Oblivion to wiadomo, że nie ruszy na starej karcie. Jeśli robię cos co ma ruszyć na starociu to wystarcza mi podstawowe funkcje API aby osiągnąc cel. Stan pośredni, czyli robienie "ładnych" efektów na stare karty jest raczej bez sensu z prostego powodu - żeby to osiągnąć trzeba mieć dużo czasu a co za tym idzie większy budżet.

Offline Koshmaar

  • Użytkownik
    • Homepage

# Marzec 14, 2006, 14:03:10
Nie wiedziałem za bardzo gdzie to wrzucić, a nie chciałem zakładać nowego tematu, pomyślałem więc że napiszę tutaj (w końcu brak dobrego supportu OGLa pod Vistą był pewnym argumentem dla zwolenników DXa):

http://blogs.msdn.com/kamvedbrat/archive/2006/02/22/537624.aspx

W środku znajdziedziecie informacje nt. OpenGL pod Vistą. Najważniejszy jest punkt trzeci, z którego wynika tyle, że OGL w oknie i Aeroglass będą mogły działać razem, tak więc wygląda na to że odpada największe zagrożenie dla popularności tego API... a przynajmniej tak twierdzi Phantom: http://www.gamedev.net/community/forums/topic.asp?topic_id=380046 :-)

beginner

  • Gość
# Marzec 14, 2006, 15:34:20
Poczatki - OpenGL
Mozliwosci - DirectX

Tyle
Pozdro

Offline SirMike

  • Użytkownik
    • SirMike's Techblog

# Marzec 14, 2006, 15:42:27
Poczatki - OpenGL
Mozliwosci - DirectX

Argumenty poprosimy.