Dlaczego twórcy gier wolą system Windows?

396

Czy to, że DirectX jest łatwiejszy lub lepszy niż OpenGL, nawet jeśli OpenGL jest wieloplatformowy? Dlaczego nie widzimy naprawdę potężnych gier dla systemu Linux, tak jak istnieją dla systemu Windows?

M.Sameer
źródło
55
Fałszywa przesłanka - gdzie są dowody na to, że twórcy gier wolą okna? Myślę, że @ user17674 miał to dokładniej - chcą tworzyć platformy, aby móc sprzedawać więcej i zarabiać więcej :-)
Rory Alsop
258
Twórcy wirusów preferują także system Windows. Chodzi o bazę użytkowników.
CesarGon
4
Dlaczego programiści Windows wolą DirectX od OpenGL, jest to prawdopodobnie bardziej interesujące pytanie z historycznego punktu widzenia. Jak może wskazywać poniższy link do wywiadu Carmacka, DX był nienawidzony. Interesujące byłoby wiedzieć, w jaki sposób utrzymywało wystarczającą liczbę użytkowników, aby MS mógł je obsługiwać, dopóki Xbox i nowoczesne przepisywania nie uczyniły go bardziej popularnym. A może po prostu zawsze było wystarczająco dobre, więc ludzie się z tym trzymali.
CodexArcanum
100
Dlaczego ludzie rabują banki? Bo tam są pieniądze .
GrandmasterB
7
@CesarGon: Nie chodzi tylko o bazę użytkowników, ale także o łatwość programowania.
Giorgio

Odpowiedzi:

1155

Wiele odpowiedzi tutaj jest naprawdę bardzo dobrych. Ale prawdopodobnie należy rozwiązać problem OpenGL i Direct3D (D3D) . A to wymaga ... lekcji historii.

I zanim zaczniemy, wiem znacznie więcej o OpenGL niż o Direct3D . Nigdy w życiu nie napisałem wiersza kodu D3D i napisałem samouczki na temat OpenGL. Więc to, co zamierzam powiedzieć, nie jest kwestią uprzedzeń. To po prostu kwestia historii.

Narodziny konfliktu

Pewnego dnia, na początku lat 90., Microsoft rozejrzał się. Widzieli, że SNES i Sega Genesis są niesamowici, uruchamiają wiele gier akcji i tym podobne. I widzieli DOS . Programiści kodowali gry DOS, takie jak gry konsolowe: bezpośrednio do metalu. Jednak w przeciwieństwie do konsol, gdzie twórca gry SNES wiedział, jaki sprzęt będzie posiadał użytkownik, programiści DOS musieli pisać dla wielu możliwych konfiguracji. A to jest trudniejsze niż się wydaje.

A Microsoft miał większy problem: Windows. Widzisz, Windows chciał mieć sprzęt, w przeciwieństwie do DOS, który praktycznie pozwala programistom robić wszystko. Posiadanie sprzętu jest niezbędne do współpracy między aplikacjami. Współpraca jest tym, czego nienawidzą twórcy gier, ponieważ pochłania cenne zasoby sprzętowe, których mogliby używać, aby być niesamowitym.

Aby promować tworzenie gier w systemie Windows, Microsoft potrzebował jednolitego interfejsu API, który był niskiego poziomu, działał w systemie Windows bez spowalniania go, a przede wszystkim między sprzętem . Jeden interfejs API dla całej grafiki, dźwięku i sprzętu wejściowego.

Tak narodził się DirectX .

Akceleratory 3D urodziły się kilka miesięcy później. Microsoft napotkał kłopoty. Zobacz, DirectDraw, komponent graficzny DirectX, zajmował się tylko grafiką 2D: alokacją pamięci graficznej i robieniem bitów pomiędzy różnymi przydzielonymi sekcjami pamięci.

Tak więc Microsoft kupił trochę oprogramowania pośredniego i przekształcił go w wersję Direct3D 3. To było powszechnie oczerniane. I nie bez powodu; patrzenie na kod D3D v3 jest jak wpatrywanie się w Arkę Przymierza.

Stary John Carmack z Id Software rzucił okiem na śmieci i powiedział: „Pieprzyć to!” i postanowiłem napisać w kierunku innego API: OpenGL.

Zobacz, inna część bestii z wieloma głowami, jaką jest Microsoft, była zajęta pracą z SGI przy implementacji OpenGL dla Windows. Chodziło tutaj o to, by osądzić twórców typowych aplikacji GL: aplikacji na stacje robocze. Narzędzia CAD, modelowanie, tego typu rzeczy. Gry były najdalszą rzeczą, jaką mieli na myśli. Było to przede wszystkim kwestia systemu Windows NT, ale Microsoft postanowił dodać go również do Win95.

Aby zachęcić deweloperów stacji roboczych do systemu Windows, Microsoft postanowił przekupić ich dostępem do tych nowych kart graficznych 3D. Microsoft wdrożył protokół Installable Client Driver: producent kart graficznych może zastąpić implementację OpenGL oprogramowania Microsoft wersją sprzętową. Kod może automatycznie użyć sprzętowej implementacji OpenGL, jeśli jest dostępna.

Na początku karty wideo na poziomie konsumenckim nie obsługiwały OpenGL. To nie powstrzymało Carmacka przed przeniesieniem Quake'a na OpenGL (GLQuake) na jego stacji roboczej SGI. Jak możemy przeczytać w pliku Readme GLQuake:

Teoretycznie glquake będzie działał na każdym zgodnym OpenGL, który obsługuje rozszerzenia obiektów tekstur, ale jeśli nie jest to bardzo wydajny sprzęt, który przyspiesza wszystko, czego potrzeba, gra nie będzie akceptowana. Jeśli będzie musiał przejść przez dowolną ścieżkę emulacji oprogramowania, wydajność będzie prawdopodobnie znacznie mniejsza niż jedna klatka na sekundę.

W tym czasie (marzec 97) jedynym standardowym sprzętem opengl, który potrafi rozsądnie grać w glake, jest realizacja międzygraph, która jest BARDZO drogą kartą. 3dlabs znacznie poprawił swoją wydajność, ale dzięki dostępnym sterownikom nadal nie jest wystarczająco dobry do gry. Niektóre z obecnych sterowników 3dlabs dla kart glint i permedia mogą również zawieszać system NT podczas wychodzenia z trybu pełnoekranowego, więc nie polecam uruchamiania glquake na sprzęcie 3dlabs.

3dfx dostarczył plik opengl32.dll, który implementuje wszystko, czego potrzebuje glquake, ale nie jest to pełna implementacja opengl. Inne aplikacje OpenGL raczej nie będą z nim współpracować, więc rozważ to w zasadzie „sterownik glquake”.

To narodziny sterowników miniGL. W końcu przekształciły się one w pełne implementacje OpenGL, ponieważ sprzęt stał się wystarczająco silny, aby zaimplementować większość funkcji OpenGL w sprzęcie. nVidia jako pierwsza zaoferowała pełną implementację OpenGL. Wielu innych producentów miało problemy, co jest jednym z powodów, dla których programiści woleli Direct3D: byli kompatybilni na szerszej gamie sprzętu. Ostatecznie pozostały tylko nVidia i ATI (obecnie AMD) i oba miały dobrą implementację OpenGL.

Ascendent OpenGL

Zatem ustawiono scenę: Direct3D vs. OpenGL. To naprawdę niesamowita historia, biorąc pod uwagę, jak zły był D3D v3.

OpenGL Architectural Review Board (ARB) jest organizacją odpowiedzialną za utrzymanie OpenGL. Wydają szereg rozszerzeń, utrzymują repozytorium rozszerzeń i tworzą nowe wersje interfejsu API. ARB to komitet złożony z wielu graczy z branży graficznej, a także niektórych twórców systemów operacyjnych. Apple i Microsoft były w różnym czasie członkiem ARB.

3Dfx wychodzi z Voodoo2. Jest to pierwszy sprzęt, który może wykonywać multiteksturowanie, czego OpenGL nie mógł zrobić wcześniej. Podczas gdy 3Dfx zdecydowanie sprzeciwiał się OpenGL, NVIDIA, twórcy kolejnego wieloukładowego układu graficznego (TNT1), pokochali go. ARB wydało więc rozszerzenie: GL_ARB_multitexture, które pozwoliłoby na dostęp do multiteksturowania.

Tymczasem wychodzi Direct3D v5. Teraz D3D stał się faktycznym API , a nie czymś, co kot może zwymiotować. Problem? Bez multiteksturowania.

Ups

Teraz nie zaszkodziłoby to tak bardzo, jak powinno, ponieważ ludzie nie używali wielu metod multiteksturowania. Nie bezpośrednio. Multiteksturowanie trochę pogorszyło wydajność, aw wielu przypadkach nie było tego warte w porównaniu z wielokrotnym podaniem. I oczywiście twórcy gier lubią zapewniać, że ich gry działają na starszym sprzęcie, który nie miał funkcji multiteksturowania, więc wiele gier jest dostarczanych bez niego.

D3D otrzymało zatem ulgę.

Czas mija, a NVIDIA wdraża GeForce 256 (nie GeForce GT-250; pierwszy GeForce), prawie kończącą się konkurencję na kartach graficznych przez następne dwa lata. Główną zaletą jest możliwość transformacji wierzchołków i oświetlenia (T&L) w sprzęcie. Mało tego, NVIDIA tak bardzo kochała OpenGL, że ich silnik T&L skutecznie był OpenGL. Niemal dosłownie; jak rozumiem, niektóre z ich rejestrów faktycznie przyjmowały enumeratory OpenGL bezpośrednio jako wartości.

Wyjdzie Direct3D v6. Nareszcie multitekstura, ale ... żadnych sprzętowych T&L. OpenGL zawsze miał potok T&L, chociaż przed 256 był zaimplementowany w oprogramowaniu. Dlatego NVIDIA bardzo łatwo przekonwertowała swoją implementację oprogramowania na rozwiązanie sprzętowe. Byłoby to dopiero w wersji D3D v7, dopóki D3D nie będzie w końcu obsługiwać sprzętowej specyfikacji T&L.

Dawn of Shaders, Twilight of OpenGL

Potem pojawiła się GeForce 3. I wiele rzeczy wydarzyło się jednocześnie.

Microsoft zdecydował, że już się nie spóźnią. Zamiast więc patrzeć na to, co robi NVIDIA, a następnie kopiować to po fakcie, zajęli zdumiewające stanowisko, że poszli do nich i rozmawiali z nimi. A potem zakochali się i mieli małą konsolę razem.

Później doszło do niechlujnego rozwodu. Ale to na inny czas.

Dla PC oznaczało to, że GeForce 3 pojawił się jednocześnie z D3D v8. I nietrudno zobaczyć, jak GeForce 3 wpłynął na shadery D3D 8. Shadery pikseli w Shader Model 1.0 były wyjątkowo specyficzne dla sprzętu NVIDIA. Nie podjęto żadnej próby wyodrębnienia sprzętu NVIDIA; SM 1.0 był dokładnie tym, co zrobił GeForce 3.

Gdy ATI zaczęło wskakiwać do wyścigowej karty graficznej z Radeonem 8500, pojawił się problem. Procesor przetwarzania pikseli w 8500 był potężniejszy niż NVIDIA. Microsoft wydał Shader Model 1.1, który w zasadzie brzmiał „Cokolwiek robi 8500”.

To może brzmieć jak awaria ze strony D3D. Ale porażka i sukces są kwestiami stopni. A epicka porażka miała miejsce w krainie OpenGL.

NVIDIA uwielbiała OpenGL, więc kiedy trafiła GeForce 3, wydała mnóstwo rozszerzeń OpenGL. Zastrzeżone rozszerzenia OpenGL: tylko NVIDIA. Oczywiście, kiedy pojawił się 8500, nie mógł użyć żadnego z nich.

Zobacz, przynajmniej na ziemi D3D 8, możesz uruchomić swoje shadery SM 1.0 na sprzęcie ATI. Oczywiście, musiałeś napisać nowe shadery, aby skorzystać z chłodu 8500, ale przynajmniej twój kod działał .

Aby mieć jakiekolwiek shadery na Radeon 8500 w OpenGL, ATI musiało napisać wiele rozszerzeń OpenGL. Zastrzeżone rozszerzenia OpenGL: tylko ATI. Potrzebna była więc ścieżka kodowa NVIDIA i ścieżka kodowa ATI, żeby w ogóle mieć shadery .

Teraz możesz zapytać: „Gdzie był OpenGL ARB, którego zadaniem było utrzymywanie aktualności OpenGL?” Tam, gdzie często kończy się wiele komitetów: głupota.

Widzicie, wspominałem o ARB_multitexture powyżej, ponieważ ma to głęboki wpływ na to wszystko. ARB wydawało się (z zewnątrz), że chce całkowicie uniknąć pomysłu shaderów. Doszli do wniosku, że jeśli narzucą wystarczającą konfigurowalność na potok o stałej funkcji, mogą równać się możliwości potoku cieniującego.

Tak więc ARB wydało rozszerzenie po rozszerzeniu. Każde rozszerzenie ze słowami „texture_env” było kolejną próbą załatania tego starzejącego się projektu. Sprawdź rejestr: między rozszerzeniami ARB i EXT wykonano osiem takich rozszerzeń. Wiele z nich awansowało do podstawowych wersji OpenGL.

Microsoft był w tym czasie częścią ARB; opuścili go w chwili uderzenia D3D 9. Jest więc całkiem możliwe, że pracowali w jakiś sposób nad sabotażem OpenGL. Osobiście wątpię w tę teorię z dwóch powodów. Po pierwsze, musieliby uzyskać pomoc od innych członków ARB, ponieważ każdy członek otrzymuje tylko jeden głos. A co najważniejsze dwa, ARB nie potrzebował pomocy Microsoftu, żeby coś zepsuć. Zobaczymy dalsze tego dowody.

W końcu ARB, prawdopodobnie zagrożone zarówno przez ATI, jak i NVIDIA (obaj aktywni członkowie) ostatecznie wyciągnęło głowę na tyle długo, aby zapewnić rzeczywiste shadery w stylu asemblera.

Chcesz coś jeszcze głupszego?

Sprzętowe T&L. Najpierw coś OpenGL . Cóż, to interesujące. Aby uzyskać maksymalną możliwą wydajność ze sprzętowych T&L, musisz przechowywać dane wierzchołków na GPU. W końcu to procesor GPU rzeczywiście chce użyć danych wierzchołków.

W D3D v7 Microsoft wprowadził koncepcję buforów wierzchołków. Są to przydzielone obszary pamięci GPU do przechowywania danych wierzchołków.

Chcesz wiedzieć, kiedy OpenGL ma ich odpowiednik? Och, NVIDIA, będąc miłośnikiem wszystkich rzeczy OpenGL (o ile są zastrzeżonymi rozszerzeniami NVIDIA), wydała rozszerzenie zakresu macierzy wierzchołków, gdy GeForce 256 po raz pierwszy uderzył. Ale kiedy ARB zdecydował się zapewnić podobną funkcjonalność?

Dwa lata później . Było to po tym, jak zatwierdzili shadery wierzchołków i fragmentów (piksele w języku D3D). Tyle czasu zajęło ARB opracowanie wieloplatformowego rozwiązania do przechowywania danych wierzchołków w pamięci GPU. Znowu coś, czego sprzętowe T&L potrzebuje, aby osiągnąć maksymalną wydajność.

Jeden język, który ich zrujnuje

Tak więc środowisko programistyczne OpenGL zostało na pewien czas złamane. Żadnych shaderów między urządzeniami, żadnych sprzętowych magazynów wierzchołków GPU, podczas gdy użytkownicy D3D cieszyli się obydwoma. Czy może być gorzej?

Ty ... możesz to powiedzieć. Wejdź do 3D Labs .

Kim oni są, możesz zapytać? Są nieistniejącą firmą, którą uważam za prawdziwych zabójców OpenGL. Jasne, ogólna nieudolność ARB sprawiła, że ​​OpenGL jest podatny na ataki, kiedy powinien był posiadać D3D. Ale 3D Labs to chyba największy powód, dla którego mam na myśli obecny stan rynkowy OpenGL. Co mogliby zrobić, aby to spowodować?

Zaprojektowali język cieniowania OpenGL.

Zobacz, 3D Labs była umierającą firmą. Ich drogie procesory graficzne zostały zmarginalizowane przez rosnącą presję firmy NVIDIA na rynek stacji roboczych. I w przeciwieństwie do NVIDIA, 3D Labs nie były obecne na głównym rynku; jeśli NVIDIA wygra, umrą.

Które zrobili.

Dlatego, chcąc pozostać aktualnymi w świecie, który nie chciał swoich produktów, 3D Labs pojawiło się na Game Developer Conference, w której prezentacje prezentowano pod nazwą „OpenGL 2.0”. Byłoby to kompletne, od podstaw przepisanie API OpenGL. I to ma sens; w tym czasie w API OpenGL było dużo cruft (uwaga: cruft nadal istnieje). Wystarczy spojrzeć na działanie ładowania i wiązania tekstur; jest częściowo tajemny.

Częścią ich propozycji był język cieniujący. Naturalnie. Jednak w przeciwieństwie do obecnych rozszerzeń ARB na wiele platform, ich językiem cieniowania był „wysoki poziom” (C jest wysokim poziomem dla języka cieniowania. Tak, naprawdę).

Teraz Microsoft pracował nad własnym językiem cieniowania wysokiego poziomu. Które, zgodnie ze wspólną wyobraźnią Microsoftu, nazwali ... High Shading Language (HLSL). Ale ich podejście do języków było zupełnie inne.

Największym problemem z językiem shadera 3D Labs było to, że był on wbudowany. Zobacz, HLSL był językiem zdefiniowanym przez Microsoft. Wydali dla niego kompilator, który wygenerował kod asemblera Shader Model 2.0 (lub nowsze modele shaderów), który zostałby przekazany do D3D. W D3D v9 dni D3D nigdy nie dotknął HLSL bezpośrednio. To była ładna abstrakcja, ale była całkowicie opcjonalna. Deweloper zawsze miał okazję pójść za kompilatorem i dostosować wydajność, aby uzyskać maksymalną wydajność.

Język 3D Labs tego nie miał . Nadałeś kierowcy język podobny do C, a on wytworzył moduł cieniujący. Koniec opowieści. Nie moduł cieniujący asemblera, nie coś, co karmisz czymś innym. Rzeczywisty obiekt OpenGL reprezentujący moduł cieniujący.

Oznaczało to, że użytkownicy OpenGL byli otwarci na kaprysy programistów, którzy dopiero zaczynali kompilować kompilowanie języków podobnych do asemblera. Błędy kompilatora szalały w nowo ochrzczonym OpenGL Shading Language (GLSL). Co gorsza, jeśli udało ci się poprawnie skompilować moduł cieniujący na wielu platformach (nie lada wyczyn), nadal podlegałeś optymalizatorom dnia. Które nie były tak optymalne, jak mogłyby być.

Chociaż była to największa wada w GLSL, nie była to jedyna wada. Jak dotąd .

W D3D oraz w starszych językach asemblera w OpenGL można mieszać i dopasowywać shadery wierzchołków i fragmentów (pikseli). Tak długo, jak komunikują się z tym samym interfejsem, można używać dowolnego modułu cieniującego wierzchołków z dowolnym zgodnym modułem cieniującym fragmentów. Były nawet poziomy niezgodności, które mogli zaakceptować; moduł cieniujący wierzchołek mógłby zapisać dane wyjściowe, których moduł cieniujący fragmentów nie odczytał. I tak dalej.

GLSL tego nie miał. Shadery wierzchołków i fragmentów zostały połączone w coś, co 3D Labs nazwał „obiektem programu”. Więc jeśli chcesz współdzielić programy wierzchołków i fragmentów, musisz zbudować wiele obiektów programu. A to spowodowało drugi największy problem.

Widzisz, 3D Labs uważało, że są sprytni. Oparli model kompilacji GLSL na C / C ++. Bierzesz .c lub .cpp i kompilujesz w plik obiektowy. Następnie bierzesz jeden lub więcej plików obiektowych i łączysz je w program. Tak właśnie kompiluje się GLSL: kompilujesz moduł cieniujący (wierzchołek lub fragment) w obiekt modułu cieniującego. Następnie umieszczasz te obiekty cieniujące w obiekcie programu i łączysz je ze sobą, aby utworzyć rzeczywisty program.

Chociaż pozwoliło to na potencjalne fajne pomysły, takie jak posiadanie „bibliotekowych” modułów cieniujących, które zawierały dodatkowy kod, który mogły wywoływać główne moduły cieniujące, w praktyce oznaczało to, że moduły cieniujące były kompilowane dwukrotnie . Raz na etapie kompilacji i raz na etapie łączenia. Szczególnie kompilator NVIDIA był znany z tego, że w zasadzie dwukrotnie uruchomił kompilację. Nie wygenerował jakiegoś pośredniego kodu obiektowego; po prostu go skompilował i wyrzucił odpowiedź, a następnie skompilował ponownie w czasie łączenia.

Więc nawet jeśli chcesz połączyć swój moduł cieniujący wierzchołki z dwoma różnymi modułami cieniującymi fragmentów, musisz wykonać dużo więcej kompilacji niż w D3D. Zwłaszcza, że ​​kompilacja języka podobnego do C była wykonywana offline , a nie na początku wykonywania programu.

Były inne problemy z GLSL. Być może niewłaściwe jest obwinianie 3D Labs, ponieważ ARB ostatecznie zaakceptowało i włączyło język (ale nic więcej z ich inicjatywy „OpenGL 2.0”). Ale to był ich pomysł.

A oto bardzo smutna część: 3D Labs miał rację (głównie). GLSL nie jest wektorowym językiem cieniowania takim, jak wtedy HLSL. Stało się tak, ponieważ sprzęt 3D Labs był sprzętem skalarnym (podobnym do nowoczesnego sprzętu NVIDIA), ale ostatecznie byli w dobrym kierunku, w którym wielu producentów sprzętu poszło ze swoim sprzętem.

Mieli rację, wybierając model kompilacji online dla języka „wysokiego poziomu”. D3D nawet przeszedł na to ostatecznie.

Problem polegał na tym, że 3D Labs miały rację w niewłaściwym czasie . Starając się przywołać przyszłość zbyt wcześnie, starając się być przyszłościowym, odrzucają teraźniejszość . Brzmi podobnie do tego, jak OpenGL zawsze miał możliwość korzystania z T&L. Tyle tylko, że potok R&L OpenGL wciąż był przydatny przed sprzętowymi RCP, a GLSL był odpowiedzialnością, zanim świat go dogonił.

GLSL jest teraz dobrym językiem . Ale na razie? To było okropne. A OpenGL cierpiał z tego powodu.

Spadanie w kierunku apoteozy

Podczas gdy utrzymuję, że 3D Labs zadało śmiertelny cios, to sam ARB wbił ostatni gwóźdź do trumny.

To historia, o której słyszałeś. Do czasu OpenGL 2.1 OpenGL miał problem. Miał dużo starszego crufta. Interfejs API nie był już łatwy w użyciu. Było 5 sposobów na robienie rzeczy i nie ma pojęcia, który był najszybszy. Możesz „nauczyć się” OpenGL za pomocą prostych samouczków, ale tak naprawdę nie nauczyłeś się interfejsu API OpenGL, który dał ci prawdziwą wydajność i moc graficzną.

ARB postanowił więc spróbować ponownie wymyślić OpenGL. Było to podobne do „OpenGL 2.0” 3D Labs, ale lepiej, ponieważ ARB za tym stoi. Nazwali to „Longs Peak”.

Co jest takiego złego w tym, że poświęca się trochę czasu na ulepszenie API? To było złe, ponieważ Microsoft naruszył się. Widzisz, to było w momencie przejścia na system Vista.

W systemie Vista Microsoft zdecydował się wprowadzić bardzo potrzebne zmiany w sterownikach ekranu. Zmusili sterowniki do poddania się systemowi operacyjnemu w celu wirtualizacji pamięci graficznej i różnych innych rzeczy.

Chociaż można dyskutować o zaletach tego lub o tym, czy było to faktycznie możliwe, fakt pozostaje taki: Microsoft uznał, że D3D 10 to tylko Vista (i wyżej). Nawet jeśli posiadasz sprzęt zdolny do obsługi D3D 10, nie możesz uruchomić aplikacji D3D 10 bez systemu Vista.

Możesz również pamiętać, że Vista ... um, powiedzmy, że nie wyszło dobrze. Miałeś więc słabo działający system operacyjny, nowy interfejs API, który działał tylko w tym systemie operacyjnym, oraz nową generację sprzętu, który wymagał tego interfejsu API i systemu operacyjnego, aby zrobić coś więcej niż być szybszym niż poprzednia generacja.

Jednak programiści mogli uzyskać dostęp do funkcji klasy D3D 10 za pośrednictwem OpenGL. Cóż, mogliby, gdyby ARB nie był zajęty pracą nad Longs Peak.

Zasadniczo ARB spędził dobry rok i pół do dwóch lat pracy, aby ulepszyć API. Do czasu, gdy faktycznie pojawiła się OpenGL 3.0, zaczęła się adaptacja Vista, Win7 był już tuż za nimi, a większość twórców gier nie dbała o funkcje klasy D3D-10. W końcu sprzęt D3D 10 działał dobrze z aplikacjami D3D 9. Wraz ze wzrostem liczby portów PC-na-konsolę (lub deweloperów PC przeskakujących z platformy na konsolę. Wybieraj), programiści nie potrzebowali funkcji klasy D3D 10.

Teraz, jeśli programiści mieli dostęp do tych funkcji wcześniej za pośrednictwem OpenGL na maszynach WinXP, to rozwój OpenGL mógł zostać bardzo potrzebny. Ale ARB stracił okazję. A chcesz poznać najgorszą część?

Pomimo spędzenia dwóch cennych lat na odbudowie API od zera ... nadal nie powiodły się i po prostu wróciły do ​​status quo (z wyjątkiem mechanizmu amortyzacji).

Dlatego ARB nie tylko przegapiło kluczowe okno okazji, ale nawet nie wykonało zadania, które sprawiło, że stracili tę szansę. Dość duża epicka porażka dookoła.

I taka jest opowieść o OpenGL vs. Direct3D. Opowieść o utraconych szansach, rażącej głupocie, celowej ślepocie i zwykłej głupocie.

Nicol Bolas
źródło
24
Czy miałeś to gdzieś napisane, czy pisałeś, gdy byłeś na głowie?
Kristofer Hoch
38
@Kristofer: Nie wiem, czy można to nazwać „z czubka głowy”, aby skomponować coś, co zajęło około godziny, ale nie napisałem go gdzieś.
Nicol Bolas,
18
@ F.Aquino: Więc chcesz przypisać to systemowi renderowania, z którego korzystają gry FPS, a nie sam silnik? Mimo że CS jest oparty na Half-Life 1, który opiera się na Quake? Przepraszam; nie kupuję tego. To prawda, że ​​nie kupuję założenia, że ​​nowe FPS nie mają potencjału e-sportowego, mimo że istnieje wiele turniejów e-sportowych skupionych wokół nowszych FPS. Mogą nie mieć tej samej atrakcyjności co CS dla niektórych graczy, ale nie popełniają błędu myśląc, że ci gracze składają się na wszystkie e-sporty FPS.
Nicol Bolas,
165
Łał. Nie dbam nawet o większość z tych rzeczy i nadal jest to świetna lektura!
Peter Rowell,
12
Which they, in all of Microsoft's collective imagination, called... the High Level Shading Language (HLSL).LOLled przez ponad 6 minut.
ApprenticeHacker
133

Dziwne było dla mnie to, że wszyscy koncentrują się na bazie użytkowników, gdy pytanie brzmi „twórcy gier”, a nie „redaktorzy gier”.

Dla mnie, jako programisty, Linux to cholerny bałagan. Jest tak wiele wersji, menedżerów pulpitu, zestawów interfejsu użytkownika itp. Jeśli nie chcę rozpowszechniać swojej pracy jako open source, użytkownik może (próbować) ponownie skompilować, aby pasowała do jego unikalnej kombinacji pakietów, bibliotek i ustawienia, to koszmar !

Z drugiej strony Microsoft zapewnia (przez większość czasu) niesamowitą kompatybilność wsteczną i stabilność platformy. Możliwe jest celowanie w całą gamę maszyn za pomocą jednego instalatora z zamkniętym źródłem, na przykład komputery z systemem Windows XP, Vista i smakami 7, 32 i 64 bity, bez zainstalowanych odpowiednich redystrybucji DX lub VC itp.

Jeszcze jedna rzecz, PROSZĘ WSZYSTKIEGO W INTERNECIE PRZERWAĆ PORÓWNANIE OPENGL I DIRECTX! Porównaj Direct3D z OpenGL lub nie rób tego . DirectX zapewnia obsługę wejścia, obsługę dźwięku, odtwarzanie filmów itp., Których nie oferuje OpenGL.

jv42
źródło
40
„Dla mnie, jako programisty, Linux to cholerny bałagan”. W rzeczy samej! Pracuję w środowisku z Fedorą i Ubuntu. Mamy problemy nawet między tymi dwoma. (Muszę dodać, że jestem fanem Linuksa.)
David Poole,
48
@ jv42: Wydaje się to powszechnym błędnym przekonaniem: prawie wszystkie te wersje, menedżery pulpitu i zestawy interfejsu użytkownika itp. są zupełnie nieistotne dla uruchomienia gry i działania. Jeśli twoja gra (w dostarczonej wersji) zależy od czegoś więcej niż libGL, libX11 i libasound (lub libopenal, libao lub liboss), robisz coś źle.
greyfade
19
@greyfade „Jeśli twoja gra (w dostarczonej wersji) zależy od czegoś więcej niż libGL, libX11 i libasound (lub libopenal, libao lub liboss), robisz coś źle”. - A następnie link do libao-0.0.4alpha, a twój użytkownik ma libao-0.0.5beta i nic nie działa.
quant_dev 30.06.11
17
Pakowanie pliku binarnego tak, aby działał we wszystkich dystrybucjach Linuksa, nie jest trudne. Heck, programiści Blendera robią to z każdym wydaniem. Jest tylko jeden (dobrze dwa, 32-bitowy i 64-bitowy) pakiet wydania Linuksa Blendera.
datenwolf
88

To dlatego, że na świecie jest więcej użytkowników systemu Windows niż Linux i Mac. Prawda jest taka, że ​​ludzie robią rzeczy dla tych, którzy mają największy rynek.
To samo dotyczy telefonów komórkowych: Android i iPhone mają świetne gry, ale Windows Mobile i Symbian nie ...

Arjun Bajaj
źródło
24
@Mahmoud Hossam: To nieprawda. Korzystanie z OpenGL nie oznacza, że ​​cała aplikacja będzie po prostu magicznie działać w środowisku * nix, oznacza to, że silnik graficzny będzie (i nawet wtedy nie oznacza, że ​​nie ma dziwactwa na (na przykład) systemie Windows, który nie działa istnieją w systemie Linux i odwrotnie). To nie jest cały koszyk, a utrzymanie kodu na wielu platformach jest zdecydowanie znaczne.
Ed S.
5
@Mahmoud: Dokładnie. A jeśli i tak nie zamierzasz przejmować się portowaniem na Linux / Mac OS, to dlaczego nie skorzystać z biblioteki natywnej? DirectX jest znacznie lepiej obsługiwany w systemie Windows niż OpenGL.
Dean Harding
10
@Mahmoud: cała przesłanka tego pytania brzmi „dlaczego programiści wolą Windows”. Odpowiedź: ponieważ tego właśnie używają gracze. Nie ma sensu portowanie na Linux / Mac, jeśli stanowi tylko 2% twojego rynku, a w takim przypadku nie ma sensu używać OpenGL, jeśli i tak nie zamierzasz portować.
Dean Harding
4
@Mahmoud, zadaniem twórców gier nie jest zachęcanie ludzi do przejścia na Linuksa.
GrandmasterB
6
@John 10+ milionów graczy World of Warcraft chciałoby z tobą porozmawiać. A to tylko jedna gra.
Marcelo
50

Ponieważ Windows ma ponad 90% udziału w rynku, a Linux (ponieważ konkretnie pytałeś o Linuksa) ma reputację wielu użytkowników, którzy nie lubią płacić za oprogramowanie. Nieważne, czy to prawda, czy jak prawda jest prawdą; postrzeganie istnieje i wpływa na decyzje ludzi.

Mason Wheeler
źródło
1
Jeśli programiści użyją OpenGL, będzie on obsługiwał zarówno system Windows, jak i Linux, więc korzyścią marketingową będzie przyciągnięcie użytkowników Linuksa, którzy są skłonni zapłacić i używają Linuksa, ponieważ uważają, że jest lepiej.
M.Sameer
9
Nawet przy użyciu OpenGL tworzenie i testowanie różnych platform wiąże się z kosztami, których rynek Linux nie uzasadnia. Directx jest obecnie (niestety) lepszą platformą do grania na PC niż OpenGL - na OpenGL powstało niewiele nowych gier na PC.
Martin Beckett
25
Platformowanie między platformami nie jest tak proste, jak „tylko kod dla OpenGL”.
System Down
13
To nieprawda, że ​​użytkownicy Linuksa nie zapłacą za oprogramowanie. Pakiet Humble Indie (pakiet gier, za które można zapłacić za dowolną kwotę, którą chcesz zapłacić) został już wykonany dwukrotnie i za każdym razem pokazywał użytkownikom Linuksa, że ​​płacą za pakiet więcej niż użytkownicy systemu Windows.
Htbaa
9
@Htbaa Oczywiście, że zapłacili więcej, byli zdesperowani, to prawdopodobnie jedyne gry, w które mogli grać w swoim systemie operacyjnym.
Marcelo
11

Ponieważ system Windows jest wspierany przez ogromną organizację, która ponad dziesięć lat temu zdecydowała, że chce, aby tworzenie gier odbywało się na ich platformie .

To nie było prawdą w przypadku komputerów Mac i nie jest to teraz prawdą. Nawet na iOS. Apple nie zapewnia narzędzi do tworzenia gier na iOS. Ale to ogromny rynek (jest więcej iPhone'ów niż na PC w 1995 roku) przy stosunkowo niewielkiej konkurencji, więc ludzie i tak to robią.

Jeśli chodzi o Linuksa, nie ma nawet żadnej centralnej instytucji, która mogłaby ustalić jakiekolwiek priorytety. Kierunek, w którym podąża Linux, jest mniej determinowany przez grupę bardzo dobrych, ale nieco nieziemskich programistów.

Aby stworzyć grę na PC dzisiaj, potrzebujesz wielu artystów 2d / 3d, projektantów gier, scenarzystów, aktorów, testerów i nie tylko. Co do faktycznego programowania, możesz po prostu użyć rzeczywistego silnika gry (CryEngine, Unreal Engine, Quake Engine, Source Engine). Więc możesz być w stanie zrobić to wszystko bez żadnych prawdziwych programistów.

Z tego powodu oraz ze względu na charakter firm programiści nie mają wiele do powiedzenia, która platforma jest wybrana. Zazwyczaj menedżerowie szukają wsparcia, które Microsoft twierdzi, że oferuje, i radzą sobie z rzeczami, które w jakiś sposób można wykorzystać w ich wzorach myślowych, czego nie jest w przypadku oprogramowania typu open source.

Z tego powodu większość komercyjnych programów dla użytkowników końcowych opracowuje się w systemie Windows.
Pracuję dla firmy, która tworzy gry flash i dlatego nie jest powiązana z konkretną platformą. Jednak wszyscy rozwijamy się w systemie Windows, ponieważ większość używanych przez nas narzędzi nie jest dostępna dla systemu Linux.

back2dos
źródło
2
„Więc możesz być w stanie zrobić wszystko bez prawdziwych programistów”. Zapomniałeś sarkazmu.
Allon Guralnek
@AllonGuralnek: Nie ma tam sarkazmu. W klasycznym tworzeniu dużych gier programiści będą tworzyć silniki i środki do dostarczania treści i zachowania (poprzez edytory wizualne lub rzeczywiste skrypty), a następnie projektanci gier / poziomów / misji użyją tych środków. Jeśli kupisz działający i wystarczająco mocny silnik, możesz w zasadzie wyciąć krok pierwszy.
back2dos,
2
Czy masz konkretny przykład rozsądnej gry, która została stworzona bez pisania jednego wiersza kodu?
Allon Guralnek
1
@AllonGuralnek: Nie powiedziałem, że ktoś będzie tworzył gry bez kodu , ale bez programistów . Nie musisz być programistą, aby stworzyć całkowicie zmieniający się mod. DotA jest najbardziej popularnym, jaki mogę wymyślić z czubka głowy.
back2dos,
1
@AllonGuralnek: Nie. Ludzie, którzy piszą kod to ludzie, którzy piszą kod. Wymagane jest, aby projektant poziomów posiadał pewną znajomość skryptów. Często wymaga się od wielu programistów posiadania pewnych umiejętności zarządzania. To nie czyni pierwszego programistą, a drugiego menedżerem. Również twoja ocena DotA jest błędna. Po pierwsze całkowicie zmienia grę, zmieniając RTS w nowy gatunek, a po drugie jest uważany za oddzielną grę przez wiele lig eSports, w tym ESWC
back2dos
10

Jak niektórzy już powiedzieli, najważniejszą częścią jest baza użytkowników. 95% użytkowników komputerów korzysta z systemu Windows. Gracze na PC korzystają prawie wyłącznie z systemu Windows. Nawet ci, którzy używają Maca lub Linuksa, najczęściej uruchamiają gry Windows poprzez wirtualizację lub emulację (z bardzo, bardzo nielicznymi wyjątkami).

Ale demografia to nie wszystko. Nie doceniłbym tego, co Microsoft robi, aby platforma była bardziej atrakcyjna dla twórców gier. Zasadniczo otrzymujesz w pełni funkcjonalny zestaw narzędzi za darmo , co najważniejsze, XNA Game Studio . Umożliwia to nie tylko programowanie dla systemu Windows, ale także dla Xbox360 . A dzięki najnowszej edycji nawet dla telefonów WP7. Oczywiście, ponieważ jest to narzędzie Microsoft, używa DirectX, a nie OpenGL.

vartec
źródło
3
Uwaga dla czytelników podróżujących w czasie: od kwietnia 2014 r. XNA będzie oficjalnie martwy. Ostatnia wersja (4.0) została opublikowana w 2010 roku i od tej pory (2013) nie będzie nowej wersji.
Aren
1
Kolejna uwaga dla czytelników podróżujących w czasie: opracowywanie systemu Windows 8 (i nowszych wersji) nie będzie już darmowe w przyszłości.
Fouric
6

Ewwww, ja nie. Używam Linuksa prawie wyłącznie. Uruchamiam podwójnie system Windows, aby tworzyć kompilacje Windows i używam Maca dla kompilacji Mac, ale to wszystko.

Sztuką jest platforma międzyplatformowa, którą rozwijaliśmy przez lata. Nasze gry są na tym zbudowane i zachowują się identycznie w Linux / OpenGL, Mac / OpenGL i Windows / Direct3D (a wkrótce w iOS / OpenGL).

Wprawdzie moja firma nie robi tytułów AAA, więc może nie mieć do nich zastosowania, ale robimy najlepsze gry codzienne (patrz strona internetowa - CSI: NY, Murder She Wrote i dwa nadchodzące 2011s to przykłady tytułów wykorzystujących ważne licencje, The Lost Cases of Sherlock Holmes 1 i 2 również były całkiem udane)

Nie zrezygnowałbym z gedit + gcc + gdb + valgrind za cokolwiek innego.

ggambett
źródło
3
gedit jest niedoceniany w programowaniu
Alexander
2
@Alexander, niedoceniany nawet nie zaczyna wyjaśniać
Shahbaz
3
Przepraszam, w końcu zrezygnowałem z gedit. Teraz używam gvim i jestem znacznie szczęśliwszy :)
ggambett
4
  1. Bezwładność. Jeśli korzystałeś z systemu Windows w przeszłości, przejście na coś innego jest kłopotliwe. Jeśli korzystasz z systemu Windows, DirectX jest łatwiejszy i bardziej prawdopodobne, że będzie działał lepiej niż OpenGL.
  2. Udział w rynku. Udział systemu Windows w komputerze na rynku jest większy niż w systemie OS X, który z kolei jest większy niż w systemie Linux. Pieniądze mówią.
  3. Marka. DirectX jest lepiej znany niż rzeczy takie jak SDL (jest to coś, czego potrzebujesz do replikacji niektórych funkcji DirectX wykraczających poza OpenGL).
  4. Mniej zamieszania. Czy Linux użytkownika będzie obsługiwał tylko OpenGL 1.4 lub OpenGL 2+? Czy możesz skorzystać z samouczka OpenGL 2.0, takiego jak Wprowadzenie do współczesnego OpenGL. Rozdział 1: Potok grafiki w twojej wersji Linux?

W dzisiejszych czasach Linux jest bardziej ciekawostką, jeśli chodzi o tworzenie gier, a większość programistów lepiej byłoby fiskalnie zrobić wersję portu OS X przed wersją Linuksa (patrz rzeczy takie jak Steam). Nawet wtedy rynek konsol jest wart więcej niż te dwie platformy połączone w gry ...

Jeśli chcesz mono platformy, DirectX jest w porządku. Jeśli chcesz być wieloplatformowy, istnieje duża szansa, że ​​będziesz musiał korzystać z OpenGL przynajmniej na niektórych innych platformach.

Anon
źródło
2
Odpowiedź na pytanie 4 brzmi: 2+. Mesa3D obsługuje do OpenGL 2.1, co oznacza, że ​​wszystkie sterowniki graficzne dla sprzętu 3D dla X11 obsługują przynajmniej OpenGL 2.1 od wersji Mesa 6.8. Dotyczy to wszystkich dystrybucji Linuksa wydanych w ciągu ostatnich kilku lat oraz sterowników binarnych obsługiwanych przez NVIDIA i AMD w wersji 3.0 i nowszych. Nie dotyczy to użytkowników intel895, ale zostali wycofani.
greyfade
1
Obawiam się, że tak nie jest. Komputery z mikroukładami i915 / i945 (GMA 900/950) są (wciąż) sprzedawane i nie są przestarzałe. Nawet w nowoczesnych dystrybucjach sprzed kilku miesięcy (Ubuntu 11.04 / Fedora 15) glxinfo zwróci wersję OpenGL nie wyższą niż 1.4 (Mesa 7.11-devel). Taki sprzęt Intela po prostu nie może zrobić późniejszych wersji bez pomocy oprogramowania, więc dopóki softpipe nie będzie domyślnie dostępny, Linux na takich kartach nigdy nie zrobi wyższej wersji OpenGL. Ukierunkowanie na OpenGL 2.0 (lub nowszą wersję) zatrzyma program działający na wielu systemach Linux-owskich ...
Anon
Mimo to nie dostrzegam obaw. Te same mikroukłady mają ograniczenia w systemie Windows, więc i tak większość gier obciążonych grafiką byłaby wykluczona .
greyfade
4

Odpowiedź jest oczywista. Celem napisania gry jest zarabianie pieniędzy. Więcej użytkowników końcowych korzysta z systemu Windows, dlatego istnieje większy rynek i można oczekiwać, że zarobisz więcej na grze na Windows niż na Linuksie. To takie proste.

Jeśli kiedykolwiek zadajesz sobie pytanie „Dlaczego ktoś robi ...”, pamiętaj tylko, że pieniądze sprawiają, że świat się kręci.

Russell Horwood
źródło
1
Tak, ale możesz stworzyć grę wieloplatformową i uzyskać więcej niż tylko użytkowników systemu Windows;)
M.Sameer
Bycie wieloplatformowym to nie wszystko. Jeśli liczba dodatkowych użytkowników jest stosunkowo niewielka, musisz zrównoważyć dodatkowe koszty rozwoju i bieżące koszty pomocy technicznej z dodatkowymi korzyściami uzyskanymi od nich i podjąć świadomą decyzję na podstawie rzeczywistych twardych danych. Nie ma globalnie poprawnej lub złej odpowiedzi na to pytanie, ale istnieje odpowiedź, która jest dobra lub zła dla każdego programu, a to, co jest dobre dla jednego programu, może być złe dla innego.
Maximus Minimus,
4

Narzędzia, narzędzia, narzędzia.

Do tego się sprowadza. Programuj w systemie Windows, a uzyskasz dostęp do jednych z najlepszych narzędzi programistycznych na świecie. Nic nie zbliża się nawet do debugera Visual Studio, środowiska uruchomieniowe debugowania DirectX są niesamowite, PIX jest niesamowity, a porównywalne odpowiedniki po prostu nie istnieją na innych platformach / interfejsach API. Jasne, jest tam kilka dobrych rzeczy; Nie twierdzę, że narzędzia na innych platformach są złe, ale te, które zapewniają MS, są tak daleko przed paczką (zaszczytny wyjątek: Valgrind), że to nawet nie jest śmieszne.

Najważniejsze jest to, że te narzędzia ci pomogą. Pomagają ci załatwiać sprawy, pomagają ci być produktywnym, pomagają ci skupić się na błędach we własnym kodzie, zamiast zmagać się z API, które nigdy nie zachowuje się tak, jak zostało to udokumentowane.

Maximus Minimus
źródło
PIX jest niesamowity. Debugowanie shaderów przez kliknięcie uciążliwego piksela i zobaczenie, co się stało, jest świetne!
Chris Pitman,
4

Przejrzałem więc wszystkie te odpowiedzi i jako twórca gier, który ma kod do gier konsolowych, które były na półkach Walmart, mam zupełnie inną odpowiedź.

Dystrybucja.

Widzisz, jeśli chcesz być na konsoli Nintendo, musisz uzyskać pozwolenie Nintendo, kupić od fabryk Nintendo, zapłacić koszty ogólne Nintendo, negocjować z Walmart, zająć się magazynowaniem, potrzebujesz pieniędzy z góry na produkcję, na drukowanie pudełek, na wysyłkę , aby zrobić wszystkie ubezpieczenia, i tak dalej.

Jeśli chcesz mieć XBox, na pewno jest XBLA, ale nadal potrzebujesz błogosławieństwa Microsoftu, musisz poczekać na swoją kolej, dziesiątki tysięcy dolarów, aby wydać łatkę itp.

Na iOS nadal potrzebujesz Apple'a, a oni mogą (i robią) kapryśnie cię pociągnąć.

Na Steamie nadal potrzebujesz pozwolenia Valve lub zielonego światła i dużo pieniędzy.

.

W systemie Windows? Konfigurujesz witrynę internetową i przycisk pobierania.

.

Nie twierdzę, że inne platformy nie są cenne. Ale kiedy próbujesz stworzyć grę, dzieje się tak * wiele * okropnych rzeczy, że dla mnie jest to obietnica binarnego umieszczenia pliku binarnego na stronie i skupienia się na pracy - przynajmniej na początek - naprawdę obniża wiele potencjalnych barier awarii.

„Możemy zrobić port XBLA później, gdy rzeczy będą stabilne”.

I w mniejszym stopniu pewne, że jest to w porządku również dla Linuksa, a jeśli siedmiu klientów jest dobrych, możesz zacząć od tego.

Ale Windows ma trzy ogromne zalety: autentycznie otwarty rozwój, naprawdę otwarte wdrożenie oraz bardzo dużą, bardzo aktywną bazę klientów, która jest zainteresowana dziwacznymi rzeczami.

Trudno sobie wyobrazić, od czego wolałbym zacząć.

John Haugeland
źródło
3

Myślę, że powinieneś przeczytać więcej o historii DirectX i tym artykule .

Myślę, że MS wybrało DX zamiast openGL, ponieważ lubią blokować ludziom korzystanie z własnego systemu operacyjnego.

Mahmoud Hossam
źródło
4
nie, stworzyli DX, ponieważ OGL nie jest zoptymalizowany dla systemu Windows, nie można go szybko rozszerzyć, aby skorzystać z nowego sprzętu i systemu operacyjnego, nie zawiera dźwięku, sterowania itp. itd.
Jwenting
2
iow DX specjalizuje się w systemie Windows ze względu na wydajność i umożliwia Microsoft utrzymanie go w ten sposób i szybkie wdrażanie nowych technologii w miarę ich udostępniania. OpenGL utknął na poziomie obsługi sprzętu graficznego, który istniał 5 lat temu, a może nawet więcej, ponieważ jest to wysiłek komitetu.
jwenting
1
@jwenting Nie sądzę, żeby wydajność była jedynym powodem, dla którego nie przenieśli jej na inne platformy, to znaczy, gdyby chcieli to przenieść, przynajmniej mogliby to zrobić na zasadzie open source i zostawić społeczności do wdrożenia to.
Mahmoud Hossam
1
nie otworzyli źródła C #, podali specyfikację języka organom normalizacyjnym. Microsoft jest członkiem organów normalizacyjnych i robi takie rzeczy przez cały czas (mają one duży wkład na przykład w html, javascript i inne standardy). Otwarte źródło oznaczałoby uwolnienie kodu źródłowego kompilatora i bibliotek pod czymś takim jak APL.
jwenting
1
@jwenting: Dla przypomnienia istnieje implementacja Direct3D 10 i 11 w systemie Linux, która jest ukierunkowana na platformę Gallium3D. (I nie ma to nic wspólnego z Wine.) Nie zgodziłbym się również z twoją tezą, że „OGL nie jest zoptymalizowany dla Windows”. To kwestia implementacji sterowników sprzętowych, a nie ograniczenie OpenGL.
greyfade
1

Wiele ma związek z polityką i kontrolą. Pod koniec lat 90. SGI i MS faktycznie zgodziły się połączyć wysiłki:

http://en.wikipedia.org/wiki/Fahrenheit_graphics_API

MS nie zainwestowało w projekt dużych środków. SGI potrzebowało MS bardziej niż MS potrzebowało SGI. Reszta jest historią.

D3D i OpenGL to dwa bardzo różne interfejsy API, do programisty należy wybór odpowiedniego dla swoich potrzeb.

zgasić
źródło
0

Po prostu dlatego, że Linux strasznie zawiódł jako system stacjonarny. Jak ktoś wcześniej zauważył, Linux jest bałaganem dla programistów (różne biblioteki, zestawy narzędzi interfejsu użytkownika itp.)

Kolejnym problemem jest freetardizm i brak wsparcia dla prawnie zastrzeżonego oprogramowania. Nvidia zawsze zapewnia dobre (zastrzeżone) sterowniki dla Linuksa, jednak Ubuntu i inne dystrybucje tego nie dostarczają. Nie ma również interfejsu binarnego sterownika dla Linuksa jak dla Windows. (Istnieje plik tekstowy o nazwie binaryApiNonsense.txt lub coś w źródłach jądra). Powiedziawszy, że tylko sprzęt Nvidia jest poprawnie obsługiwany pod Linuksem. Możesz grać w większość gier z oprogramowaniem ID przy użyciu sprzętu Nvidia pod Linuksem.

Następne narzędzia programistyczne. MSFT zapewnia doskonałą obsługę C ++, a debugger Visual Studio jest lepszy niż gdb w odniesieniu do C ++. Wreszcie brakuje dalszych narzędzi, takich jak Photoshop. Ponadto .net pozwala szybko tworzyć narzędzia GUI. Wiele studiów gier koduje swoje narzędzia do użytku wewnętrznego za pomocą .NET Framework.

Prawie zapomniałem: system graficzny jest okropny, w czasach, gdy właśnie przenieśli X11, ponieważ była to najłatwiejsza rzecz, która działała. Nie udało im się właściwie zaprojektować i wdrożyć nowoczesnego systemu graficznego, który mają OSx i Win.

Nils
źródło
4
Hmm Moje karty Intel i ATI działają dobrze w systemie Linux ... A co jest nie tak z X11? Zawsze czułem, że jest znacznie lepszy niż alternatywy dla innych systemów operacyjnych (szczególnie Windows) ze względu na architekturę klient-serwer.
alternatywny
Nie, nie wpisują glxinfo i widzą, że pogoda jest w porządku, czy nie! X11 jest okropnie zepsuty tylko przykład theinvisiblethings.blogspot.com/2010/08/…
Nils
a jeśli przeczytasz ostatnie zdanie, sam Linus zaimplementował łatkę poziomu jądra - nie łatkę X11.
alternatywny
1
Niewiele wiem o systemie graficznym (możesz mieć rację), ale stwierdzenie, że Linux nie działa, ponieważ system stacjonarny jest nieprawdziwy lub przynajmniej niedokładny. Przeprowadziłem się z systemu Windows na Linux i od tego czasu czuję się bardzo produktywny. Wydajność Linuksa jest i była lepsza niż Windows na wszystkich używanych komputerach. Nie koduję również C ++ i chcę wiedzieć, gdzie Eclipse stoi jako IDE C ++ w porównaniu do Visual Studio.
M.Sameer
Odłóż miotacze ognia. Myślę, że ogólnie przyjętą opinią jest to, że VS jest najlepszym IDE. Jednak Eclipse jest wciąż młody i ma jeszcze wiele do zrobienia - zobaczymy. Jednak po prostu uwielbiam to, jak łatwo wszystko jest skryptowalne i możliwe do potoku w Linuksie!
Vorac,