DirectX vs. OpenGL

0

Chciałem się was spytać czy wy też nie odnosicie wrażenia, że w większości przypadków DirectX jest szybszy od OpenGL? Gdy robiłem programy do wizualizacji 3D w Matlabie(v.6.5), to po skompilowaniu były one wolniejsze od podobnych napisanych przy użyciu DirectX(v.9b). nawet, gdy użyłem wszystkich optymalizacji.

0

Moje spostrzezenia:

  1. OpenGL generuje dokladniejsze ksztalty.
  2. DiretctX jest zwykle szybszy, jezeli nie generujemy bardzo zlozonych ksztaltow.
  3. Jezeli zalezy ci na szybkosci - wybierz DirectX, jezeli na dokladnosci i przenosnosci - OpenGL
  4. W typowych zastosowaniach, jezeli generujemy ksztalt w czasie rzeczywistym, to nie jest on nigdy tak skomplikowany, aby wybranie ktorejkolwiek technologii mialo jakies istotne przelozenie na szybkosc. Jezeli renderujemy obraz przez tych kilkaminut (albo godzin...) to zazwyczaj i tak zalezy mi juz wtedy bardziej na dokladnosci.
  5. Jak dla mnie OpenGL jest bardziej przemyslanym interfejsem, ale tryb Immediate jest nawet zblizony do OpenGL (jak na listach zasuwamy :) ). Ale Retained jest IMHO prostszy.

Jakbym cos namieszal, to przepraszam, ale ostatnie DirectX z jakim sie bawilem to bylo DirectX 5... dosyc dawno temu :)

0

No właśnie widać, że dawno używałeś DirectX, bo teraz nie ma w nim takiego podziału na te tryby. Jako przykład dałem porównanie DirectX w wersji 9.0b a aplikacja wykorzystująca tą bibliotekę generowała o niebo lepsze efekty niz ta w OpenGL.Co do dokładności to według mnie było odwrotnie np. w obiektach 3D OpenGl widać było wkurzające "prześwity" i to właśnie przy dość złożonych kształtach (kilkadziesiąt tys. polygonów).

0

Ekhm...

  1. OpenGL generuje dokladniejsze ksztalty.

Chyba nie za bardzo rozumiem o co ci chodzi. Przeciez OpenGL i DirectX to sa tylko interfejsy programistyczne. Wpuszczaja one wierzcholki do karty i rysuja, wiec ja moga generowac ladniejsze ksztalny ?! lol :-D Przeciez wszystko zalezy od zaladowanej siatki. DirecX i OpenGL rysuja prkatycznie IDENTYCZNIE.

  1. DiretctX jest zwykle szybszy, jezeli nie generujemy bardzo zlozonych ksztaltow.

Poddaje watpliwosci stwierdzenie, ze w ogole wiesz jak dziala dx, lub/i ogl. Przeciez nie mozna powiedziec ze cos jest szybsze a cos wolniejsze. W dx zastosujesz IB i VB, w ogl DrawArray/DrawElements (ew listy wyswietlania), a wszystko jest porownywalnie wydajne. Czmu niby DirectX mialby byc wolniejszy od OpenGL, podczas rysowania bardzo zlozonych ksztaltow ? [diabel]

  1. Jezeli zalezy ci na szybkosci - wybierz DirectX, jezeli na dokladnosci i przenosnosci - OpenGL

No i znow pokazujesz jak malo wiesz o dx i ogl. Jak juz wspomnialem wyzej oba API sa porownywalne pod wzgledem szybkosci, wszystko zalezy tez od umiejetnosci programisty. poza tym jesli chodzi ci o dokladnosc rysowania i uwazaz ze OpenGL jest bardziej dokladny, no to LOL, bo wszystko jest rysowane bardzo podobnie, w koncu to karta graficzna przetwarza i wyswietla wszystko na ekranie, a dx lub ogl maja z tym tyle wspolnego ze hoho. Bardziej dokladny, jest dx, jesli chodzi o mozliwosci projektowania, poniewaz mozna ustawic min bardzo duzo parametrow inicjalizacyjnych, dla poszczegolnego interfejstu, mozna ustawic przeznaczenie buforow, tekstur, typ przydzielanej pamieci. Oczywiscie w ogl mozna zrobic to samo, ale trzeba uzywac extow, ktore sie roznia ati/nv, a w dx jest wszystko razem.

0

void, jeśli uważasz, że wydajność w obu bibliotekach 3D jest porównywalna, to dlaczego większość testów 3D dzieli się na test w DirectX i OpenGl?
Poza tym przykład (QuakeII):
Producent wydaje grę w dwóch wersjach bibliotek. Kod źródłowy jest kompilowany raz do jednej, raz do drugiej wersji. Umiejętności programisty już nie są istotne w tym przypadku, bo algorytm generowania wierzchołków jest taki sam w obu wersjach. Każdy chyba widział, że testy tej gry dla obu bibliotek różniły się. To przeszłość, a teraz co się dzieje?Każda nowa gra wspiera tylko DirectX. Dlaczego, przecież nie ze względu na karty, które wspierają obie wersje? Przecież wykonanie gry na wieloplatformowy OpenGL byłoby rozsądniejsze no nie ?No chyba, że dostają jakieś bonu$y z Micro$oftu ;).

0

Zauwaz ze DirectX to caly zestaw narzedzi do tworzenia gier, dlatego wiekszosc programistow wlasnie woli to api, bo sie po prostu im to bardziej oplaca. OpenGL to tylko sam rendering, reszte trzeba sobie dobrac, a przy dx, ma sie wszystko w jednym miejscu+dokumentacja zawsze pod reka, czy to na dysku, czy online.
A testy jesli sa, no to sie zgodze, ze sa aby porownac wydajnosc obu api. Extow do ogl jest coraz wiecej, przy dx niczym sie nie trzeba matrwic, tylko m$ w czasie uaktualniania dx dodaje nowe rzeczy. Gdy uzywasz ogl, to sam jestes skazany na wybranie odpowiednich rozszerzen i wlasnie w tym przejawia sie roznica wydajnosci.

0

void: ja pisze z perspektywy uzytkownika koncowego. Takie sa moje wrazenia, jak odpalam (glownie gry) i widze, ze przy DX dziala szybciej niz przy OGL i ze przy OGL wyglada to latwiej. Jak juz wspominalem DX bawilem sie baaardzo dawno i zawsze to byla wiedza pobiezna.
W DX9 nie ma tego podzialu? Coz, chyba powinienem sie doszkolic... Ale na razie i tak tylko w DX8, bo DX9 to nie dla mojej karty zabawka :)

0

Nie chciało mi się czytać wszystkich wywodów, ale kiedyś zrobiłem bardzo dokładne testy porównawcze OpenGL, Direct3D, Heidi w 3ds max i różnice prędkości w niektórych przyladkach były przeogromne!

Więc nie pisz, że są tak samo wydajne bo nie są.

0

Dryobates: A wiesz czemu dziala szybciej ? Juz napisalem, ze dx ma wszystkie mozliwosci karty "w sobie", a przy ogl trzeba uzywac rozszerzen, no i roznica jest dlatego ze programisci musza sami wybrac odpowiednie exty dla odpowiednich kart, a nie zawsze to robia, lub nie zawsze wybieraja odpowiednie.
Marooned: Popatrz ty sie opierasz na roznicy wydajnosci w maxie, a ja na roznicy w tym co kiedys sam pisalem.
Wiecie co tez moze byc przyczyna tych roznic wydajnosci ? Wcale nie to ze jedno api jest wolniejsze od drugiego, tylko to ze dx zawiera w sobie taka fajna biblioteke interfejsow - d3dx, czyli operacjach na macierzach, wektorach, quatach, siatkach, teksturach i wielu wielu innych. Ogl oczywiscie tego nie ma i to od umiejetnosci programisty zalezy jak sobie to wszystko napisze, a z tego co sie orientuje, to operacje matematyczne w d3dx optymalizowane sa pod mmx,sse.
Jesli uzywac by czystego api, tylko i wylacznie do narysowania trojkatow to roznicy w wydajnosci by nie bylo.
Podsumuje to tak: Oba api sa dobre do grafiki 2d/3d, a ich wydajnosc zalezna jest od umiejetnosci programisty. Przesiadajac sie z jednego na drugie, majac nadzieje ze otrzyma sie znaczny wzrost wydajnosci, jest po prostu smieszne.

0

dobre podsumowanie Void :) nie zabieralem zdania w dyskusji, bo nie mialem okazji do cwiczen z dx. natomiast ogl z pewnoscia nie jest byle jakim standardem i mimo byc moze subiektywnych wrazen na korzysc dx nie nalezy go ignorowac. tym bardziej ze rozwoj ogl rowniez nie stoi w miejscu... zastanawia mnie jedno w takim razie - jesli dx nie ma swego odpowiednika do extow z ogl i zawiera obsluge kart roznych producentow jako wbudowana, to jak to sie dzieje, ze wychodzace nowosci ze swiata gier, ostatnio pojawiajace sie tylko na dx zwykle foruja karty jednego producenta???

0

Pewnie jakies uklady, tak jak ID Soft. (DOOMIII) i nVidia :P Z tym ze w tym przypadku chodzi o OpenGL. A tak na serio, to ms stara sie jak moze aby dx byl kompatybilny z jak najwieksza iloscia sprzetu, ale oni tez nie sa w stanie wszystkiego zrobic. Pewnie chodzi tylko o sprawy marketingowe ;)

1 użytkowników online, w tym zalogowanych: 0, gości: 1