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

Offline Krzysiek K.

  • Moderator
    • DevKK.net

# Marzec 07, 2006, 19:56:11
Cytuj
Krzysiek: nie wiem co rozumiesz przez przeciętne karty, ale GL_EXT_framebuffer_object jest dość nowym rozszerzeniem
Przez przeciętne karty rozumiem karty od GeForce 2 i Radeona 8500 w górę, które nie mają ps2.0. EX_framebuffer_object jest dosyć nowym rozszerzeniem, ale, z tego, co wiem, NVidia i ATI wspierają je także w starszych kartach.

Cytuj
Najlepszy jest zawsze ten język/biblioteka, który znamy.
Najlepiej jest znać i czuć się swobodnie w obu API. :)

Offline Mr. Spam

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

# Marzec 07, 2006, 20:02:08
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....
Nie, nie - zupełnie nie o to mi chodziło. Aktualna wersja OpenGL to chyba 1.5. Nie wiem dokładnie bo korzystam z OpenGL 1.1 + roszerzenia (które w najnowszej wersji są integralną częścią OpenGL) - Mało tego - każdy kto pisze pod windowsem korzysta z OpengL 1.1 + rozszerzenia - bo nie ma innego wyjścia. A zawdzięczamy to takiej a nie innej polityce Microsoftu (który z wiadomych względów nie lubi OpenGL). Na innych platformach jest OpenGL 1.5 i nie ma problemów z rozszerzeniami (prawie ;D).

Cytuj
Nie wiem czy ta dyskusja ma jakikolwiek sens
Pewnie, że nie ma sensu. ;D Ale fajnie jest się od czasu do czasu pokłócić nie? ;D :P

Cytuj
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ę, (...)
Nie miało być żadnej ironii - naprawdę tak uważam i jako użytkownikowi OpenGL mi tego najbardziej brakuje - jeżeli kiedyś zacznę się uczyć DX to najprawdopodobniej właścnie z tego powodu. Chciałem też dodać (we wcześniejszym poście), że z kolei PS3 ma być oparte na OpenGL (ale nie zdążylem bo się na autobus śpieszyłem ;D - zresztą i tak się spóźniłem  ;D)

Aha, ktoś jeszcze wspominał o męczarni z jakimiś dziwnymi rozszerzeniami (tymi nie ARB). Rzeczywiście jak ktoś chce mieć program kompatybilny wstecz (np od GF3 po GF7) to będzie musiał sięgać po te przestarzałe rozszerzenia (i przyznaje nierzadko sporo się namęczy bo zupełnie inaczej będzie pisząc pod karty nVidii, a inaczej pod ATI). ARB rozwiązuje ten problem, ale jednocześnie zwiększa wymagnia sprzętowe (ale nie zawsze). Niemniej jednak uważam że problem nie tkwi tu w API, ale raczej w tym że podejmujemy się trudnego zadania, które będzie tym trudniejsze im bardziej będziemy się "cofać w czasie" (im bardziej kompatybilne wstecz mają być nasze aplikacje)

Ja też kiedyś miałem takie podejście, żeby zaimplementować efekt tak żeby działał na każdym sprzęcie, ale gdy zauważyłem jak szybko rozwija siętechnologia (karty graficzne) stwierdziłem, że nie ma sensu bawić się ze starymi kartami, bo zanim skończę to wszystko implementować pojawi sienowa karta umożliwiająca robić nowe efekty i cała praca, albo pójdzie na marne albo będzie trzeba ją wykonać od nowa (wykorzystujac nowe mozliwości nowej karty).

Oczywiście tu DX ma przewagę bo on, ma taką kompatybilnosć wstecz już wbudowaną i odwala sporo roboty za nas.

Kończąc - Nie podejmowałbym się próby określenia które API jest lepsze bo to nie ma sensu - wiele rzeczy jest względnych (np czy API jest wygodne, łatwe w obsłudze, łatwe do nauki, dobre dla poczatkujacych itp - wszystko zależy - "dla kogo") dla odmiany postaram się wiec podać co oba API maja ze sobą wspólnego:
-wydajnosć
-poziom technologiczny (co potrafią)
-dokumentacja (ta oficjalna i wszystko inne w sieci - na temat obu API jest tego sporo)
-oba działąją pod Windowsem  ;D

Te 2 pierwsze są chyba najważniejsze i wydaje mi się że przy nich cała reszta to szczegóły.
« Ostatnia zmiana: Marzec 07, 2006, 20:05:25 wysłana przez CzerwonyKapturek »

Offline SauRooN

  • Użytkownik

# Marzec 07, 2006, 20:31:17
Przez przeciętne karty rozumiem karty od GeForce 2 i Radeona 8500 w górę, które nie mają ps2.0. EX_framebuffer_object jest dosyć nowym rozszerzeniem, ale, z tego, co wiem, NVidia i ATI wspierają je także w starszych kartach.
GL_EXT_framebuffer_object jest obsługiwany od GeForce'a 6200 i Radeona 9500

// edit: przepraszam, pomyłka. Od GeForce'a 4 Ti 4200
« Ostatnia zmiana: Marzec 08, 2006, 01:08:18 wysłana przez SauRooN »

Offline matyssek

  • Użytkownik

# Marzec 07, 2006, 20:45:12
Ja kodze w DirectX, ale ostatnio zacząłem się uczyć OpenGL'a, zebym mogl je porownac i dokonac wyboru, ale jak na razie moje mozliwosci w oglu nie wyszly poza mozliwosc przesuwania kolorowego trojkacika na ekranie, wiec w tym momencie bardziej jestem za DX :) Szczegolnie podoba mi sie w nim obiektowosc.... mmmm... miodzio :D

pozdrawiam
matyssek

PS.
[..]
W OpenGL też pisałem ale niewiele, tylko jedną grę.
[...]
No właśnie Regedit, jak tam Twoje STA? bo coś ostatnio o tym troche ucichło :P

Offline Majtek

  • Użytkownik

# Marzec 07, 2006, 21:22:36
Przez przeciętne karty rozumiem karty od GeForce 2 i Radeona 8500 w górę, które nie mają ps2.0. EX_framebuffer_object jest dosyć nowym rozszerzeniem, ale, z tego, co wiem, NVidia i ATI wspierają je także w starszych kartach.
GL_EXT_framebuffer_object jest obsługiwany od GeForce'a 6200 i Radeona 9500
ja mam GeForce 5700 i jest to rozszerzenie

A co wersji OpenGL'a to jest już od jakiegoś czasu 2.0 którą łączy w sobie dużo rozszerzeń jak choćby obsługa shaderów

Offline shyha

  • Użytkownik
    • Shyha@Flickr

# Marzec 07, 2006, 22:45:08
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....
Nie, nie - zupełnie nie o to mi chodziło. Aktualna wersja OpenGL to chyba 1.5. Nie wiem dokładnie bo korzystam z OpenGL 1.1 + roszerzenia (które w najnowszej wersji są integralną częścią OpenGL) - Mało tego - każdy kto pisze pod windowsem korzysta z OpengL 1.1 + rozszerzenia - bo nie ma innego wyjścia. A zawdzięczamy to takiej a nie innej polityce Microsoftu (który z wiadomych względów nie lubi OpenGL). Na innych platformach jest OpenGL 1.5 i nie ma problemów z rozszerzeniami (prawie ;D).

Dalej nie wiadomo co ma polityka MS'a do tego czy w OGL są rozszerzenia czy ich nie ma. Wersję OGL masz razem z bibliotekami, których używasz i kartą graficzną. A skoro sam mówisze, że w OGL 1.5 prawie nie ma problemu z rozszerzeniami to utwierdzasz mnie w przekonaniu, że poza brakiem sympatii do MS'a to nie masz żadnego argumentu.

# Marzec 07, 2006, 22:48:16
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....
Nie, nie - zupełnie nie o to mi chodziło. Aktualna wersja OpenGL to chyba 1.5. Nie wiem dokładnie bo korzystam z OpenGL 1.1 + roszerzenia (które w najnowszej wersji są integralną częścią OpenGL) - Mało tego - każdy kto pisze pod windowsem korzysta z OpengL 1.1 + rozszerzenia - bo nie ma innego wyjścia. A zawdzięczamy to takiej a nie innej polityce Microsoftu (który z wiadomych względów nie lubi OpenGL). Na innych platformach jest OpenGL 1.5 i nie ma problemów z rozszerzeniami (prawie ;D).

Dalej nie wiadomo co ma polityka MS'a do tego czy w OGL są rozszerzenia czy ich nie ma. Wersję OGL masz razem z bibliotekami, których używasz i kartą graficzną. A skoro sam mówisze, że w OGL 1.5 prawie nie ma problemu z rozszerzeniami to utwierdzasz mnie w przekonaniu, że poza brakiem sympatii do MS'a to nie masz żadnego argumentu.
Ehh.. Nie piszesz w OpenGL prawda?

Chodzi o to, że z funkcjonalności OpenGL 1.5 można oczywiście korzystać programujac pod Windows, ale trzeba to robić poprzez rozszerzenia. Rozszerzenia ARB o których mówie - są integralną częścią OpenGL 1.5 i nie trzeba ich inicjalizować i siez nimi bawić. A Pod Windows mamy tylko OpenGL 1.1 + ręczna inicjalizacja rozszerzeń ARB.
« Ostatnia zmiana: Marzec 07, 2006, 22:50:59 wysłana przez CzerwonyKapturek »

Offline Mic

  • Użytkownik

# Marzec 07, 2006, 23:38:20
Po za tym zabawe z extensionami mozna ograniczyc stosujac takie biblioteki jak glew. Do zastanowienia jest również przyszłość opengl es oraz linuksa(w tym przypadku sadze ze dosc odlegla - najmniej 4 lata, to w sumie nadaje sie na osobny wątek), ale w sumie i tak warto znać obywa.

Muszę przyznać że różne pomysły micorsoftu na ograniczanie opengl budzą moje zaniepokojenie. Do dzisiaj takie jak OpenGL 1.1 na Windowsach - reszta przez extensiony, a w przyszłości warjacje na Viscie

Offline migajek

  • Użytkownik

# Marzec 08, 2006, 00:01:22
Muszę przyznać że różne pomysły micorsoftu na ograniczanie opengl budzą moje zaniepokojenie. Do dzisiaj takie jak OpenGL 1.1 na Windowsach - reszta przez extensiony, a w przyszłości warjacje na Viscie
wariacje ;) btw moge wiedziec o jakich wariacjach na Viscie mowisz? :|

Offline Nazgob

  • Użytkownik

# Marzec 08, 2006, 01:28:08
Muszę przyznać że różne pomysły micorsoftu na ograniczanie opengl budzą moje zaniepokojenie. Do dzisiaj takie jak OpenGL 1.1 na Windowsach - reszta przez extensiony, a w przyszłości warjacje na Viscie
wariacje ;) btw moge wiedziec o jakich wariacjach na Viscie mowisz? :|

OpenGL ma byc emulowany przez DirectX(wiadomo co to oznacza dla predkosci) ze wzgledu na interfejs graficzny Aero. Ale z tego co wiem bedzie to doyczyc uruchamiania openGL w oknie a wiekszosc gier 3D jest na pelen ekran wiec nie bedzie zle :)

Offline Krzysiek K.

  • Moderator
    • DevKK.net

# Marzec 08, 2006, 02:21:13
Cytuj
Mało tego - każdy kto pisze pod windowsem korzysta z OpengL 1.1 + rozszerzenia - bo nie ma innego wyjścia.
Błąd. Pod Windowsem korzystam z OpenGL 1.5, który udostępnia mi AllegroGL (po prostu automatycznie ładuje rozszerzenia przy inicjalizacji i daje funkcjom nazwy zgodne z OpenGL 1.5).

Cytuj
Na innych platformach jest OpenGL 1.5 i nie ma problemów z rozszerzeniami (prawie).
Załadowanie rozszerzenia i dopisanie ARB, EXT, ATI, czy NV w paru miejscach to żaden problem. Głównym problemem jest to, że dzięki braku ustandaryzowanych rozszerzeń trzeba wszystko testować i kodować kilka razy. Pod Direct3D przydatne rzeczy takie jak różne formaty pikseli, rendertargety, czy pixel shadery 1.x są po prostu w API. W OpenGL każdy producent robił je sobie, jak chciał, a ARB i EXT pod tym względem niedużo uporządkował.

Cytuj
Niemniej jednak uważam że problem nie tkwi tu w API, ale raczej w tym że podejmujemy się trudnego zadania, które będzie tym trudniejsze im bardziej będziemy się "cofać w czasie" (im bardziej kompatybilne wstecz mają być nasze aplikacje)
1. Wielu polskich graczy nadal ma GeForce 2, czy jakiegoś wbudowanego Intela.
2. Z kart, które wymieniłem powyżej, da się naprawdę wiele wycisnąć.
3. To, co powstanie na moim silniku najprawdopodobniej nie będzie wyglądać jak Oblivion, więc głupio by było dawać tak wysokie wymagania.
4. Programowanie pod starszy sprzęt nie jest wyjątkowo trudnym zadaniem, a z Direct3D powinno stać się jeszcze łatwiejsze dzięki bardziej zgeneralizowanemu API.

Cytuj
Ja też kiedyś miałem takie podejście, żeby zaimplementować efekt tak żeby działał na każdym sprzęcie, ale gdy zauważyłem jak szybko rozwija siętechnologia (karty graficzne) stwierdziłem, że nie ma sensu bawić się ze starymi kartami, bo zanim skończę to wszystko implementować pojawi sienowa karta umożliwiająca robić nowe efekty i cała praca, albo pójdzie na marne albo będzie trzeba ją wykonać od nowa (wykorzystujac nowe mozliwości nowej karty).
Wystarczy odpowiednio podejść do problemu świateł, cieni, materiałów i sposobów renderowania tego wszystkiego i odpowiednio uchwycić to w projekcie silnika. :)

Cytuj
A co wersji OpenGL'a to jest już od jakiegoś czasu 2.0 którą łączy w sobie dużo rozszerzeń jak choćby obsługa shaderów
Na wersje OpenGL bym wogóle nie patrzył, bo powstają po prostu przez doklejenie któregoś z wcześniejszych rozszerzeń do samego OpenGL. Jak pisałem wyżej, wczytanie paru wskaźników i dopisanie paru ARB czy EXT nie zmienia praktycznie nic w samej wygodzie API.

Offline shyha

  • Użytkownik
    • Shyha@Flickr

# Marzec 08, 2006, 09:41:28
Cytuj
(...)
Ehh.. Nie piszesz w OpenGL prawda?
Pisałem
Chodzi o to, że z funkcjonalności OpenGL 1.5 można oczywiście korzystać programujac pod Windows, ale trzeba to robić poprzez rozszerzenia. Rozszerzenia ARB o których mówie - są integralną częścią OpenGL 1.5 i nie trzeba ich inicjalizować i siez nimi bawić. A Pod Windows mamy tylko OpenGL 1.1 + ręczna inicjalizacja rozszerzeń ARB.
Właśnie, że nie do końca. Gdybyś miał odpowiednie: nagłówki, liby i dllki to masz OGL1.5, 2.0 i każdą inną wersję bo: możliwości techniczne określane są przez kartę graficzną a to do jakich funkcji masz dostęp z poziomu programu zależy od: sterownika i biblioteki. Sterownik masz, bibliotekę masz zgodną z 1.1. Ot. co. Dalej nie wiem co tu ma coś wspólnego z polityką MS'a.

A tak czy inaczej to i tak musisz sprawdzić, czy karta obsługuje rozszerzenia w wersji 1.5 co się sprowadza do tego co napisał Krzysiek K.
« Ostatnia zmiana: Marzec 08, 2006, 10:00:36 wysłana przez shyha »

# Marzec 08, 2006, 12:09:32
Błąd. Pod Windowsem korzystam z OpenGL 1.5, który udostępnia mi AllegroGL (po prostu automatycznie ładuje rozszerzenia przy inicjalizacji i daje funkcjom nazwy zgodne z OpenGL 1.5).
Hmm - Ja sobie z kolei korzystam z własnego kodu który robi to samo. Nie o to chodzi, że się nie da korzystać z OpenGL 1.5 pod Windows - chodzi o to że jest to utrudnione (a to czy piszesz kod sam czy korzystasz z innej biblioteki nie ma znaczenia)

Głównym problemem jest to, że dzięki braku ustandaryzowanych rozszerzeń trzeba wszystko testować i kodować kilka razy.
ARB standaryzuje rozszerzenia.

Pod Direct3D przydatne rzeczy takie jak różne formaty pikseli, rendertargety, czy pixel shadery 1.x są po prostu w API. W OpenGL każdy producent robił je sobie, jak chciał, a ARB i EXT pod tym względem niedużo uporządkował.
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 ;D ) 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.

Cytuj
Niemniej jednak uważam że problem nie tkwi tu w API, ale raczej w tym że podejmujemy się trudnego zadania, które będzie tym trudniejsze im bardziej będziemy się "cofać w czasie" (im bardziej kompatybilne wstecz mają być nasze aplikacje)
1. Wielu polskich graczy nadal ma GeForce 2, czy jakiegoś wbudowanego Intela.
2. Z kart, które wymieniłem powyżej, da się naprawdę wiele wycisnąć.
3. To, co powstanie na moim silniku najprawdopodobniej nie będzie wyglądać jak Oblivion, więc głupio by było dawać tak wysokie wymagania.
4. Programowanie pod starszy sprzęt nie jest wyjątkowo trudnym zadaniem, a z Direct3D powinno stać się jeszcze łatwiejsze dzięki bardziej zgeneralizowanemu API.
Wyciśnij HDR tone mapping, glow i Deferred Shading.
To miło że kochasz wszystkich rodzimych graczy - i ich stare sprzęty. ;D 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. Dla mnie zabawa z programowaniem GF2 czy VooDoo to żadna zabawa - bo od pojawienia się tych kart na rynku mineła epoka (albo i dwie). Tak też chyba myśli ARB standaryzując tylko przyszłościowe rozszerzenie (i olewajac te przestarzałe).
Ja nie mam zamiaru ograniczać się tylko do polskiego rynku (wogóle nie planuje przyszłości w tym kraju).

Dalej nie wiem co tu ma coś wspólnego z polityką MS'a.
Widać ślepo kochasz Billa G.

A tak czy inaczej to i tak musisz sprawdzić, czy karta obsługuje rozszerzenia w wersji 1.5 co się sprowadza do tego co napisał Krzysiek K.
Nie tylko sprawdzić, ale także zainicjalizować - i nie trzeba by było tego robić dla ARB.

Pozatym wszyscy chyba nie dostrzegacie jednej rzeczy - MS nie robi DX bo nas wszystkich kocha i chce by panował pokój na świecie. To oczywiste, że gdy znaczenie OpenGL'a spadnie (albo gdy wogóle ludzie przestaną w nim programować :D ) to DX będzie poprostu płatny. MS włożył w to kupe pieniędzy, ale jak mu się uda zmonopolizować także rynek gier komputerowych - to pieniądza które zarobili na Windows bedą przy tym marnymi groszami. (Od razu zaznaczam, że nie mam nic przeciwko temu żeby ktoś za cieżką robotę zarabiał ciężką kasę i nie jestem jakiś anty-MS - nie wybieram także OpenGL z powodów ideologicznych - napisałem to poprostu żeby wam dać do myślenia)

Offline shyha

  • Użytkownik
    • Shyha@Flickr

# Marzec 08, 2006, 12:13:18
Dalej nie wiem co tu ma coś wspólnego z polityką MS'a.
Widać ślepo kochasz Billa G.
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ń?

# Marzec 08, 2006, 13:51:58
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.

Jak to robią? - Nie wiem - Jak bym znał metody działania MS to bym tu z wami nie dyskutował, ale podbijał międzynarodowy rynek systemów operacyjnych. MS tworzy Windows i jest (był?) w ARB (no i do tego ma jeszcze kupe kasy)- wiec chyba oczywiste że ma ogromny wpływ na rozwój OpenGL (zwłaszcza pod Win). Na wszystkich platformach jest OpenGL 1.5, a na Win 1.1 + exty - dlaczego? Chciałbym wierzyć, że to tylko taki przypadek i pan Bill G. nie ma z tym nic wspólnego, ale nie jestem aż tak naiwny (plany emulacji OpenGL pod DX to pewnie też tylko taki gest przyjaźni dla piszących pod OpenGL :P). Pozatym to nie ja wymyśliłem to że MS "zwalcza" OpenGL - to nie moja teza - więc nie pytaj mnie dlaczego miliomy ludzi na różnych forach w necie tak uważa.