Oyun geliştiricileri neden Windows'u tercih ediyor?


396

OpenGL platformlar arası olsa bile, DirectX'in OpenGL'den daha kolay mı yoksa daha mı iyi olduğu? Neden Windows için olduğu gibi Linux için gerçekten güçlü oyunlar görmüyoruz?


55
Yanlış öncül - oyun geliştiricilerin pencereleri tercih ettiğine dair kanıt nerede? Sanırım @ user17674 daha doğru bir şekilde sahipti - platformlar için daha fazla satış yapabilmek ve daha fazla para kazanmak için geliştirmek istiyorlar :-)
Rory Alsop

258
Virüs geliştiricileri ayrıca Windows'u tercih eder. Hepsi kullanıcı tabanı ile ilgili.
CesarGon

4
Neden Windows programcıları OpenGL yerine DirectX'i tercih ediyorlar, muhtemelen tarihsel olarak daha ilginç bir sorudur. Aşağıdaki Carmack röportajına olan bağlantının gösterebileceği gibi, DX eskiden nefret ediyordu. MS'in Xbox ve modern yeniden yazmalar daha popüler hale gelene kadar onu desteklemesi için yeterli kullanıcıyı nasıl tuttuğunu bilmek ilginç olurdu. Ya da belki de her zaman yeterince iyiydi, bu yüzden millet onunla sıkışmış.
CodexArcanum

100
İnsanlar neden banka soyuyorlar? Çünkü paranın olduğu yer burası .
GrandmasterB

7
@CesarGon: Sadece kullanıcı tabanından değil, aynı zamanda geliştirme kolaylığı nedeniyle.
Giorgio

Yanıtlar:


1154

Buradaki cevapların çoğu gerçekten çok iyi. Ancak, OpenGL ve Direct3D (D3D) sorunu muhtemelen ele alınmalıdır. Bu da ... tarih dersini gerektirir.

Ve başlamadan önce, OpenGL hakkında Direct3D'den daha fazla şey biliyorum . Hayatımda hiçbir zaman bir D3D kodu satırı yazmadım ve OpenGL üzerine dersler yazdım. Söyleyeceğim şey bir önyargı meselesi değil. Bu sadece bir tarih meselesidir.

Çatışmanın Doğuşu

Bir gün, bazen 90'ların başlarında, Microsoft etrafına baktı. SNES ve Sega Genesis'in harika olduklarını, pek çok aksiyon oyunu oynadıklarını gördüler . Ve DOS’u gördüler . Geliştiriciler konsol oyunları gibi DOS oyunlarını kodladı: doğrudan metale. Ancak, SNES oyunu yapan bir geliştiricinin kullanıcının hangi donanıma sahip olduğunu bildiği konsollardan farklı olarak, DOS geliştiricileri birden fazla olası yapılandırma için yazmak zorunda kaldı. Ve bu göründüğünden daha zordur.

Microsoft'un daha büyük bir problemi vardı: Windows. Bakın, Windows, donanıma ne olursa olsun hemen hemen izin veren DOS'un aksine, donanıma sahip olmak istedi. Uygulamalar arasında işbirliğini sağlamak için donanıma sahip olmak gerekir. İşbirliği, oyun geliştiricilerin nefret ettiği şeydir, çünkü harika olmak için kullanabilecekleri değerli donanım kaynaklarını kullanır.

Windows'ta oyun geliştirmeyi teşvik etmek için Microsoft'un düşük seviyeli, Windows tarafından yavaşlatılmadan çalıştırılan ve tüm çapraz donanıma sahip düzgün bir API'ye ihtiyacı vardı . Tüm grafikler, ses ve giriş donanımı için tek bir API.

Böylece, DirectX doğdu.

3D hızlandırıcılar birkaç ay sonra doğdu. Microsoft da bir sorunla karşılaştı. DirectX’in grafik bileşeni olan DirectDraw’a bakın, yalnızca 2D grafiklerle ilgileniyor: grafik belleği ayırma ve belleğin farklı ayrılmış bölümleri arasında bit harmanlama işlemi yapma.

Yani Microsoft, ara katman biraz satın alınan ve O edildi Direct3D Version 3. içine moda evrensel reviled. Ve iyi bir sebeple; D3D v3 koduna bakmak, Ahit Sandığı'na bakmak gibidir.

Id Software'den Old John Carmack o çöp kutusuna bir bakış attı ve "Vidala!" Dedi. ve başka bir API'ye yazmaya karar verdim: OpenGL.

Bakın, Microsoft’un çok kafalı canavarın bir bölümü, SGI’da Windows için bir OpenGL uygulaması için çalışmakla meşguldü. Buradaki fikir, tipik GL uygulamalarının geliştiricilerini mahkemeye çıkarmaktı: iş istasyonu uygulamaları. CAD araçları, modelleme, bu tür şeyler. Oyunlar akıllarındaki en uzak şeydi. Bu öncelikle bir Windows NT olayıydı, fakat Microsoft Win95'e de eklemeye karar verdi.

İş istasyonu geliştiricilerini Windows’a çekmenin bir yolu olarak Microsoft, bu yeni çıkıntılı 3D grafik kartlarına erişerek onlara rüşvet vermeye çalışmaya karar verdi. Microsoft, Yüklenebilir İstemci Sürücüsü protokolünü uyguladı: bir grafik kartı üreticisi, Microsoft'un yazılım tabanlı OpenGL uygulamasını donanım tabanlı bir sürümle geçersiz kılabilir. Varsa, kod otomatik olarak yalnızca bir donanım OpenGL uygulamasını kullanabilirdi.

İlk günlerde, tüketici düzeyindeki video kartlarında OpenGL desteği yoktu. Bu, Carmack'in SGI iş istasyonunda Quake'i OpenGL'ye (GLQuake) taşımasını engellemedi. GLQuake readme'den okuyabildiğimiz gibi:

Teorik olarak, glquake, doku nesnesi uzantılarını destekleyen herhangi bir uyumlu OpenGL üzerinde çalışacaktır, ancak gereken her şeyi hızlandıran çok güçlü bir donanım olmadığı sürece, oyun kabul edilemez. Herhangi bir yazılım öykünme yolundan geçmesi gerekiyorsa, performans muhtemelen saniyede bir kare altında gerçekleşir.

Şu anda (Mart '97), makul ölçüde glquake oynayabilen tek standart opengl donanım, ÇOK pahalı bir kart olan bir intergraph realizm. 3dlabs performanslarını önemli ölçüde artırıyor, ancak mevcut sürücülerle hala oynamak için yeterince iyi değil. Şu anki 3dlabs sürücülerinin parlama ve permedia panoları için sürücüleri tam ekrandan çıkarken NT'yi çökertebilir, bu yüzden 3dlabs donanımında glquake çalıştırmayı önermiyorum.

3dfx, glquake'in gereksinim duyduğu her şeyi uygulayan bir opengl32.dll sağladı, ancak tam bir opengl uygulaması değil. Diğer opengl uygulamaları onunla çalışmak pek mümkün değildir, bu yüzden temel olarak bir "glquake sürücüsü" olarak düşünün.

Bu miniGL sürücülerinin doğumuydu. Bunlar, donanımın çoğu OpenGL işlevselliğini uygulayabilecek kadar güçlü hale gelmesiyle sonuçta tam OpenGL uygulamalarına dönüştü. nVidia, eksiksiz bir OpenGL uygulaması sunan ilk kişi oldu. Diğer birçok satıcı mücadele etti, bu nedenle geliştiricilerin Direct3D'yi tercih etmelerinin bir nedeni: daha geniş bir donanım yelpazesinde uyumlu olmaları. Sonunda sadece nVidia ve ATI (şimdi AMD) kaldı ve her ikisi de iyi bir OpenGL uygulamasına sahipti.

OpenGL Yükselen

Böylece sahne ayarlanır: Direct3D ve OpenGL. D3D v3'ün ne kadar kötü olduğunu düşünen gerçekten şaşırtıcı bir hikaye.

OpenGL Mimari İnceleme Kurulu (ARB), OpenGL'nin korunmasından sorumlu olan organizasyondur. Birkaç uzantı yayınlarlar, uzantı deposunu korurlar ve API'nin yeni sürümlerini oluştururlar. ARB, bazı OS yapımcılarının yanı sıra grafik endüstrisi oyuncularının çoğundan oluşan bir komitedir. Apple ve Microsoft çeşitli zamanlarda ARB üyesi olmuştur.

3Dfx Voodoo2 ile çıkıyor. OpenGL'nin daha önce yapamadığı bir şey olan çoklu dokunuş yapabilen ilk donanım bu. 3Dfx OpenGL'e karşı güçlü bir şekilde çalışırken, bir sonraki çoklu dokunan grafik çipinin (TNT1) yapımcıları NVIDIA onu çok sevdi. Böylece ARB bir uzantı yayınladı: GL_ARB_multitexture, çok-yapıya erişime izin verecek.

Bu arada, Direct3D v5 çıkıyor. Şimdi, D3D, bir kedinin kusabileceği bir şey yerine gerçek bir API haline geldi. Sorun? Çoklu dokunma yok.

Hata.

Şimdi, bu kişi olması gerektiği kadar canını yakmayacak, çünkü insanlar çoklu dokunuşları fazla kullanmadılar. Direkt olarak değil. Çoklu dokunma performansı biraz acı çekti ve çoğu durumda çoklu geçişe kıyasla değmezdi. Ve elbette, oyun geliştiricileri, oyunlarının, çoklu dokunuşları olmayan eski donanımlar üzerinde çalışmasını sağlamayı sever, bu yüzden birçok oyun onsuz gönderilir.

D3D böylece bir erteleme verildi.

Zaman geçiyor ve NVIDIA, gelecek iki yıl boyunca grafik kartlarında rekabete son veren GeForce 256'yı (GeForce GT-250 değil; ilk GeForce) kullanıyor. Ana satış noktası, donanımda köşe dönüşümü ve aydınlatma (T&L) yapabilme yeteneğidir. Sadece bu değil, NVIDIA OpenGL'yi o kadar çok sevdi ki, T&L motorları etkin bir şekilde OpenGL idi. Neredeyse tam anlamıyla; Anladığım kadarıyla kayıtlarından bazıları aslında OpenGL numaralandırıcılarını doğrudan değer olarak aldı .

Direct3D v6 çıkıyor. Sonunda çok yüzeyli ama ... donanım yok T&L. OpenGL , 256'dan önce yazılımda kullanılmasına rağmen, her zaman bir T&L boru hattına sahipti. Bu yüzden NVIDIA'nın yazılım uygulamalarını bir donanım çözümüne dönüştürmesi çok kolaydı. D3D v7'ye kadar D3D sonunda donanım T&L desteğine sahip olamazdı.

Shader Şafağı, OpenGL Alacakaranlık

Ardından GeForce 3 çıktı. Ve aynı anda birçok şey oldu.

Microsoft, yine geç kalmayacaklarına karar vermişti. Böylece NVIDIA'nın yaptıklarına bakmak ve sonra gerçeği kopyalamak yerine, kendilerine gitme ve onlarla konuşma gibi şaşırtıcı bir pozisyon aldı. Sonra birbirlerine aşık oldular ve küçük bir konsola sahiplerdi.

Dağınık bir boşanma daha sonra başladı. Ama bu başka bir zaman için.

PC için bunun anlamı, GeForce 3'ün D3D v8 ile aynı anda ortaya çıkmasıydı. GeForce 3'ün D3D 8'in gölgelendiricilerini nasıl etkilediğini görmek de zor değil. Shader Model 1.0'ın piksel gölgelendiricileri, NVIDIA'nın donanımına oldukça özeldi. NVIDIA'nın donanımını soyutlamak için hiçbir girişimde bulunulmadı; SM 1.0, GeForce 3'ün yaptığı her şeydi.

ATI, Radeon 8500 ile performans grafik kartı yarışına atlamaya başladığında bir sorun vardı. 8500'ün piksel işleme hattı NVIDIA'nın eşyalarından daha güçlüydü. Microsoft, temelde "8500 ne yaparsa yap" olan Shader Model 1.1'i yayınladı.

Bu D3D'nin parçası bir başarısızlık gibi gelebilir. Fakat başarısızlık ve başarı derecedir. Ve epik başarısızlık OpenGL-arazi oluyordu.

NVIDIA OpenGL'yi çok severdi, bu yüzden GeForce 3 hit olduğunda bir miktar OpenGL eklentisi yayınladılar. Özel OpenGL uzantıları: yalnızca NVIDIA. Doğal olarak, 8500 ortaya çıktığında, hiçbirini kullanamadı.

En azından D3D 8 ülkesinde, SM 1.0 gölgelendiricinizi ATI donanımında çalıştırabilirsiniz. Elbette, 8500’ün soğukluğundan yararlanmak için yeni gölgelendiriciler yazmanız gerekiyordu, ama en azından kodunuz çalıştı .

OpenGL’de Radeon 8500’de her türlü gölgelendiricinin bulunması için ATI’nin bir dizi OpenGL eklentisi yazması gerekiyordu. Özel OpenGL uzantıları: yalnızca ATI. Yani sadece sahip olmak, bir NVIDIA codepath ve ATI codepath gerekli shaderları hiç.

Şimdi, “OpenGL'in güncel kalmasını sağlayan OpenGL ARB neredeydi?” Diye sorabilirsiniz. Pek çok komitenin sıklıkla son bulduğu yer: aptal olmak.

Bakın, yukarıdaki ARB_multitexture'dan bahsettim, çünkü tüm bunları derinden etkiliyor. ARB (dışarıdan gelenlerin bakış açısından) gölgelendirici fikrinden tamamen uzak durmak istiyor gibiydi. Sabit fonksiyonlu boru hattına yeterince konfigüre edilebilirlik tokatlarsa, gölgelendirici boru hattının kabiliyetine eşit olabileceklerini belirlediler.

Böylece ARB, uzantının ardından uzantıyı yayınladı. İçinde "texture_env" kelimeleri bulunan her bir uzantı, bu yaşlanma tasarımını yama etmeye yönelik bir başka girişimdi. Kayıt defterini kontrol edin: ARB ve EXT uzantıları arasında , bu uzantıların sekiz tanesi vardı . Birçoğu OpenGL çekirdek versiyonlarına yükseltildi.

Microsoft, şu anda ARB'nin bir parçasıydı; D3D 9 isabetinde kaldıkları yerden ayrıldılar. Böylece OpenGL'yi bir şekilde sabote etmek için çalıştıkları tamamen mümkün. Şahsen bu teoriden iki nedenden şüpheliyim. Birincisi, bunu yapmak için diğer ARB üyelerinden yardım almak zorunda kalacaklardı, çünkü her üye yalnızca bir oy alacak. Ve en önemlisi iki, ARB'nin işleri düzeltmek için Microsoft'un yardımına ihtiyacı yoktu. Bunun hakkında daha fazla kanıt göreceğiz.

Sonunda, hem ATI hem de NVIDIA (her iki aktif üye) tarafından tehdit altında olan ARB, sonunda gerçek montaj tarzı gölgelendiriciler sağlayacak kadar başlarını çekti.

Daha aptalca bir şey ister misin?

Donanım T&L Önce OpenGL'nin sahip olduğu bir şey . Bu ilginç. Donanım T&L’den mümkün olan maksimum performansı elde etmek için vertex verilerinizi GPU’da saklamanız gerekir. Sonuçta, aslında vertex verilerinizi kullanmak isteyen GPU'dur.

D3D v7'de Microsoft, Vertex Tamponları kavramını ortaya koydu. Bunlar, köşe verilerini depolamak için GPU belleği alanlarına ayrılır.

OpenGL’nin buna ne zaman denk geldiğini bilmek ister misiniz? Oh, NVIDIA, OpenGL’nin (özel NVIDIA uzantıları olduğu sürece) her şeyin aşığı olması, GeForce 256’nın ilk vuruşunda vertex dizi aralığı uzantısını yayınladı. Fakat ARB ne zaman benzer işlevsellik sağlamaya karar verdi?

İki yıl sonra . Bu, köşe ve parça gölgelendiricileri (D3D dilinde piksel) onayladıktan sonraydı . ARB'nin verteks verilerini GPU hafızasında saklamak için çapraz platform çözümü geliştirmesi bu kadar uzun sürdü. Yine, donanım T&L’nin maksimum performans elde etmek için ihtiyaç duyduğu bir şey .

Hepsini mahvetmek için bir dil

Böylece, OpenGL geliştirme ortamı bir süre kırıldı. Donanımlar arası gölgelendiriciler, donanımlar arası GPU vertex depolaması yokken, D3D kullanıcıları her ikisinden de keyif aldılar. Kötüleşebilir mi?

Sen ... bunu söyleyebilirdin. 3D Labs'a girin .

Kim onlar, sorabilirsiniz? OpenGL'nin asıl katili olduğumu düşündüğüm bir şirketti. Elbette, ARB'nin genel yetersizliği, OpenGL'yi D3D'ye sahip olması gerektiği zaman savunmasız bıraktı. Fakat 3D Labs belki de OpenGL'nin şu andaki piyasa durumu için aklımdaki en büyük sebep. Buna neden olmak için ne yapmış olabilirler?

OpenGL Gölgelendirme Dilini tasarladılar.

Bakın, 3D Labs ölmekte olan bir şirketti. Pahalı GPU'ları, NVIDIA'nın iş istasyonu pazarındaki artan baskısıyla marjinalleştirildi. NVIDIA'nın aksine, 3D Labs ana pazarda herhangi bir varlığa sahip değildi; NVIDIA kazandıysa, öldüler.

Onlar yaptı.

Bu nedenle, ürünlerini istemeyen bir dünyada alakalı kalmak için, 3D Labs, "OpenGL 2.0" olarak adlandırdıkları bir şey için sunumlar düzenleyen bir Oyun Geliştirici Konferansı'na geldi. Bu OpenGL API'sinin eksiksiz, sıfırdan bir yeniden yazımı olacaktır. Ve bu mantıklı; OpenGL’nin API’sinde o sırada çok fazla sıkıntı yaşandı (not: o kıtlık hala var). Sadece doku yükleme ve ciltlemenin nasıl çalıştığına bakın; bu yarı kemerli.

Tekliflerinin bir kısmı gölgelendirme diliydi. Doğal olarak. Ancak, mevcut platformlar arası ARB uzantılarının aksine, gölgelendirme dili "üst düzey" idi (C, gölgelendirme dili için üst düzeydir. Evet, gerçekten).

Şimdi, Microsoft kendi yüksek seviyeli gölgeleme dili üzerinde çalışıyordu. Bunlar, Microsoft’un tüm kolektif hayallerinde, “Üst Düzey Gölgelendirme Dili” (HLSL) olarak adlandırıldı. Fakat onların dilleri temelde farklı bir yaklaşımdı.

3D Laboratuarlarının gölgelendirici diliyle ilgili en büyük sorun, yerleşik olmasıydı. Bakın, HLSL Microsoft'un tanımladığı bir dildi. Bunun için bir derleyici yayınladılar ve D3D'ye besleyeceğiniz Shader Model 2.0 (veya daha yeni shader modelleri) montaj kodunu oluşturdular. D3D v9 günlerinde, HLSL hiçbir zaman doğrudan D3D'ye dokunmamıştır. Güzel bir soyutlama oldu, ama tamamen isteğe bağlıydı. Ve bir geliştirici her zaman derleyicinin arkasına geçme ve çıktıyı maksimum performans için ince ayar yapma fırsatını buldu.

3D Labs dilinin hiçbiri yoktu . Sürücüye C benzeri bir dil verdin ve gölgelendiriciyi üretti. Hikayenin sonu. Bir montaj gölgelendiricisi değil, başka bir şeyi beslediğiniz bir şey değil. Bir gölgelendiriciyi temsil eden gerçek OpenGL nesnesi.

Bunun anlamı, OpenGL kullanıcılarının derleme benzeri dilleri derlemeye başlayan geliştiricilere açıktır. Derleyici hataları yeni vaftiz OpenGL Gölgelendirme Dili'nde (GLSL) yaygınlaştı . Daha da kötüsü, birden fazla platformda doğru şekilde derlemek için bir gölgelendirici bulmayı başardıysanız (ortalama bir başarı yok), yine de günün en iyi duruma getiricilerine maruz kaldınız . Olabildiğince optimal değildi.

Bu GLSL'deki en büyük kusur olsa da, tek kusur değildi. Çok uzak .

D3D’de ve OpenGL’deki eski montaj dillerinde, tepe ve parça (piksel) gölgelendiricileri karıştırıp eşleştirebilirsiniz. Aynı arabirimle iletişim kurdukları sürece, herhangi bir uyumlu gölgelendirici ile herhangi bir köşe gölgelendiriciyi kullanabilirsiniz. Üstelik kabul edebilecekleri uyumsuzluk seviyeleri bile vardı; Köşe gölgelendiricisi, parça gölgelendiricinin okumadığı bir çıktı yazabilir. Ve bunun gibi.

GLSL hiçbirinde yoktu. Vertex ve fragman gölgelendiricileri, 3D Labs'ın "program nesnesi" olarak adlandırdığı şeye birleştirildi. Dolayısıyla, köşe ve parça programlarını paylaşmak istiyorsanız, birden fazla program nesnesi oluşturmanız gerekiyordu. Bu da ikinci en büyük soruna neden oldu.

Bakın, 3D Labs zeki olduklarını düşünüyordu. GLSL'nin derleme modelini C / C ++ 'a dayandırdılar. Bir .c veya .cpp alıp bir nesne dosyasına derleyin. Sonra bir veya daha fazla nesne dosyasını alıp bir programa bağlayın. Demek GLSL böyle işler: gölgelendiricinizi (tepe noktası veya parçası) gölgelendirici nesnesine derlersiniz. Sonra bu gölgelendirici nesnelerini bir program nesnesine koyar ve gerçek programınızı oluşturmak için bunları birbirine bağlarsınız.

Bu, ana gölgelendiricilerin çağırabileceği fazladan kod içeren “kütüphane” gölgelendiricileri gibi potansiyel fikirlerin olmasına izin verirken, uygulamada kastedilen, gölgelendiricilerin iki kez derlenmesiydi . Derleme aşamasında bir kez ve bir kez bağlama aşamasında. Özellikle NVIDIA'nın derleyicisinin, derlemeyi iki kez çalıştırmasıyla biliniyordu. Bir çeşit nesne kodu aracı üretmedi; sadece bir kez derledi ve cevabı attı, sonra bağlantı anında tekrar derledi.

Köşe gölgelendiricinizi iki farklı parça gölgelendiriciye bağlamak isteseniz bile, D3D'den çok daha fazla derleme yapmanız gerekir. Özellikle C benzeri bir dilin derlenmesi programın yürütülmesinin başlangıcında değil, tamamen çevrimdışı yapıldığı için.

GLSL ile ilgili başka sorunlar da vardı. ARB nihayetinde dili onayladığı ve birleştirdiği için suçlamayı 3D Labs'a koymak belki de yanlış gözüküyor (ancak "OpenGL 2.0" girişiminin başka hiçbir şeyi yoktu). Ama bu onların fikriydi.

Ve işte gerçekten üzücü olan kısım: 3D Labs haklıydı (çoğunlukla). GLSL, HLSL'nin olduğu gibi vektör tabanlı bir gölgeleme dili değildir. Bunun nedeni, 3D Laboratuarların donanımının skaler donanım (modern NVIDIA donanımına benzer) olmasına rağmen, pek çok donanım üreticisinin donanımlarıyla birlikte gittiği yöndeydi.

"Yüksek seviye" bir dil için derleme çevrimiçi bir modelle gitmeye haklıydılar. D3D buna nihayetinde bile geçti.

Sorun, 3D Laboratuarlarının yanlış zamanda doğru olmasıydı . Ve geleceğe dönük olarak çalışırken, çok erken geleceğini çağırmak çalışırken, onlar kenara hediye . OpenGL'nin her zaman T&L işlevselliği olasılığına sahip olduğuna benziyor. Bunun dışında OpenGL'nin T&L boru hattı donanım T&L'den önce hala faydalıyken , GLSL dünyayı yakalamadan önce bir sorumluluktu.

GLSL şimdi iyi bir dil . Ama şimdilik? O korkunçtu. Ve OpenGL bunun için acı çekti.

Apotheosis'e Doğru Düşmek

3D Laboratuarlarının ölümcül darbeye çarptığını iddia ederken, tabutun içindeki son çiviyi süren ARB'nin kendisidir.

Bu duymuş olabileceğiniz bir hikaye. OpenGL 2.1, OpenGL bir sorunla karşılaştı. Çok fazla eski mirası vardı . API artık kullanımı kolay değildi. Her şeyi yapmanın 5 yolu vardı ve en hızlısı olan hiçbir fikir yoktu. Basit öğreticilerle OpenGL'yi "öğrenebilirsiniz", ancak size gerçek performans ve grafiksel güç sağlayan OpenGL API'sini gerçekten öğrenmediniz.

Böylece ARB, OpenGL’nin bir başka icatını tekrar denemeye karar verdi. Bu, 3D Labs'in "OpenGL 2.0" ına benziyordu, ancak daha iyiydi çünkü ARB onun arkasındaydı. Buna "Uzun Peak" dediler.

API'yi geliştirmek için biraz zaman ayırmanın nesi kötü? Bu kötüydü çünkü Microsoft kendilerini savunmasız bırakmıştı. Bakın, bu Vista geçiş zamanındaydı.

Vista ile Microsoft, ekran sürücülerinde ihtiyaç duyulan bazı değişiklikleri yapmaya karar verdi. Sürücüleri, grafik belleği sanallaştırması ve diğer birçok şey için işletim sistemine göndermeye zorladılar.

Biri bunun aslını ya da gerçekten mümkün olup olmadığını tartışabilirken, gerçek şu ki: Microsoft, D3D 10'un yalnızca Vista (ve üstü) olduğunu kabul etti. D3D 10 yeteneğine sahip bir donanıma sahip olsanız bile , Vista kullanmadan D3D 10 uygulamalarını çalıştıramazsınız.

Ayrıca Vista'yı da hatırlayabilirsiniz ... um, sadece işe yaramadığını söyleyelim. Bu yüzden düşük performans gösteren bir işletim sisteminiz, yalnızca bu işletim sistemiyle çalışan yeni bir API'niz ve bu API ve işletim sisteminin önceki nesilden daha hızlı bir şey yapması için gereken yeni bir donanım nesliniz vardı .

Ancak, geliştiriciler olabilir OpenGL aracılığıyla D3D 10 sınıf özelliklerine erişmek. Eğer ARB Longs Zirvesi'nde çalışmakla meşgul olmasaydı yapabilirlerdi.

Temel olarak, ARB API'yi daha iyi hale getirmek için iyi bir buçuk yıl süren bir buçuk yıl çalıştı. OpenGL 3.0 gerçekten ortaya çıktığında, Vista'nın kullanımı benimsendi, Win7 Vista'yı geride bırakmak için köşe başındaydı ve oyun geliştiricilerin çoğu D3D-10 sınıfı özellikleri zaten umursamadılar. Sonuçta, D3D 10 donanımı D3D 9 uygulamalarını iyi idare etti. Bilgisayardan konsola bağlantı noktalarının yükselmesiyle (veya gemiyi konsol geliştirmeye atlayan PC geliştiricileri. Seçiminizi yapın) geliştiricilerin D3D 10 sınıfı özelliklere ihtiyaçları yoktu.

Şimdi, eğer geliştiriciler WinXP makinelerinde OpenGL aracılığıyla daha önce bu özelliklere erişebilseydi, o zaman OpenGL geliştirmesi kolda çok ihtiyaç duyulan bir çekimi almış olabilir. Ancak ARB fırsatlarını kaçırdı. Ve en kötüsünü bilmek ister misin?

İki kıymetli yıl boyunca API'yi sıfırdan yeniden kurmaya çalışırken harcamalarına rağmen ... yine de başarısız oldular ve statükoya geri döndüler (değer kaybı mekanizması hariç).

Dolayısıyla, ARB sadece önemli bir fırsat penceresini kaçırmakla kalmadı, aynı zamanda onları bu şansı kaçıran görevi bile yapmadılar. Her yerde epik destansı bir başarısızlık var.

Ve bu OpenGL ve Direct3D'nin hikayesi. Kaçırılmış fırsatların, kaba aptallığın, kasıtlı körlüğün ve basit aptallığın öyküsü.


24
Bunu bir yere mi yazdın, yoksa kafanın tepesinden mi yazdın?
Kristofer Hoch

38
@ Kristofer: Oluşturması bir saat kadar süren bir şey için "kafanın üstünden" diyebilir misin, bilmiyorum ama bir yere yazmamıştım.
Nicol Bolas

18
@ F.Aquino: Bunu, FPS oyunlarının motorun kendisinden ziyade kullandığı renderleme sistemine atfetmeye istekli misiniz? CS, Quake'e dayanan Half-Life 1'e dayanıyor olsa da? Üzgünüm; Satın almıyorum. Verilmiş, yeni FPS'lerin merkezinde yer alan çok sayıda e-spor turnuvası olmasına rağmen, yeni FPS'lerin e-spor potansiyeli olmadığı fikrini satın almıyorum. CS'nin bazı oyunculara yaptığı çekiciliği aynı tutamayabilirler , ancak bu oyuncuların tüm FPS e-sporlarını yaptıklarını düşünmek gibi hata yapmazlar.
Nicol Bolas,

165
Vay. Bu şeylerin çoğunu bile umursamıyorum ve hala harika bir okuma!
Peter Rowell

12
Which they, in all of Microsoft's collective imagination, called... the High Level Shading Language (HLSL).Bu konuda 6 dakikadan fazla bir süre boyunca LOLled.
ApprenticeHacker

133

Soru, 'oyun editörleri' değil, 'oyun geliştiricileri' olduğunda herkesin kullanıcı tabanına odaklanmasının garip olduğunu buldum.

Benim için, bir geliştirici olarak, Linux kanlı bir karmaşa. Çok fazla sürüm var, masaüstü yöneticisi, kullanıcı arabirimi kitleri, vb ... Çalışmamı açık kaynak olarak dağıtmak istemiyorsam, kullanıcının yeniden derleyebileceği (yeniden denemeyi), böylece paketlerin, kütüphanelerin ve ayarları, bu bir kabus !

Öte yandan, Microsoft (çoğu zaman) inanılmaz geriye dönük uyumluluk ve platform istikrarı sağlıyor. Tek bir kapalı kaynak yükleyiciye sahip tüm makine çeşitlerini hedeflemek mümkündür; örneğin, Windows XP, Vista ve 7, 32 ve 64 bit tadı çalıştıran bilgisayarlar, uygun DX veya VC yeniden dağıtılabilir bileşenleri vb. Olmadan ...

Son bir şey, LÜTFEN AÇILIŞ VE DIRECTX'İ KARŞILAŞTIRMA İNTERNET DURDURMA HER ŞEYİNDE LÜTFEN! Direct3D ile OpenGL'yi kıyaslayın ya da bunu yapma . DirectX, OpenGL'in sunmadığı giriş desteği, ses desteği, film oynatma vb.


40
“Benim için, bir geliştirici olarak, Linux kanlı bir karmaşa.” Aslında! Fedora ve Ubuntu ile bir ortamda çalışıyorum. Sadece ikisi arasında bile sorunlarımız var. (Ben bir Linux fanboy olduğumu eklemeliyim.)
David Poole

48
@ jv42: Bu yaygın bir yanılgı gibi görünüyor: Neredeyse tüm bu sürümlerin ve masaüstü yöneticilerinin ve UI kitlerinin, vb. bir oyun kurmak ve çalışmakla oldukça alakasız. Oyununuz (gönderildiği gibi) libGL, libX11 ve libasound (veya libopenal veya libao veya liboss) 'dan daha fazlasına bağlıysa, yanlış bir şey yapıyorsunuz demektir.
greyfade

19
@greyfade "Oyununuz (gönderildiği gibi) libGL, libX11 ve libasound (veya libopenal veya libao veya liboss) 'dan daha fazla şeye bağlıysa, yanlış bir şey yapıyorsunuz demektir." - Ve sonra libao-0.0.4alpha'ya bağlanırsınız ve kullanıcı libao-0.0.5beta'ya sahiptir ve hiçbir şey çalışmaz.
quant_dev

17
Tüm Linux dağıtımlarında çalışacak şekilde bir ikili paketlemek o kadar da zor değil. Heck, Blender geliştiricileri her sürümde bunu yapar. Blender'ın yalnızca bir tane (iyi iki, 32 bit ve 64 bit) Linux sürüm paketi var.
datenwolf

8
Linux kullanıcıları oyunlar için daha fazla para ödüyorlar. Bakınız: koonsolo.com/news/linux-users-show-their-love-for-indie-game ve 2dboy.com/2009/10/26/pay-what-you-want-birthday-sale-wrap-up
Alexander

88

Çünkü gezegende Linux ve Mac'ten daha fazla Windows kullanıcısı var. Gerçek şu ki, insanlar hangisi için en büyük pazara sahiplerse bir şeyler yaparlar.
Aynı cep telefonları ile gider: Android ve iPhone harika oyunlar var ama Windows Mobile ve Symbian ...


24
@ Mahmoud Hossam: Bu doğru değil. OpenGL kullanmak, tüm uygulamanızın sadece * nix ortamında sihirli bir şekilde çalışacağı anlamına gelmez, grafik motorunun çalışacağı anlamına gelir (ve o zaman bile, Windows’ta tuhaflıklar olmadığı anlamına gelmez (örneğin) Linux'ta ve tersi var). Tüm sepet bu değil ve kesinlikle çoklu platformlar için kodlarını korumanın önemli bir maliyeti var.
Ed S.

5
@Mahmoud: Kesinlikle. Ve yine de Linux / Mac OS işletim sistemine geçmeyi zahmet etmeyecekseniz, neden yerel kütüphaneyi kullanmıyorsunuz? DirectX, Windows'ta OpenGL'den çok daha iyi desteklenir.
Dean Harding,

10
@Mahmoud: Sorunun bütününü "geliştiriciler neden Windows’u tercih ediyor" sorusudur. Cevap: Çünkü oyuncuların kullandığı şey bu. Eğer pazarınızın sadece% 2'sini oluşturuyorsa, Linux / Mac'e aktarmanın bir anlamı yoktur ve bu durumda, yine de bağlantı kurmayacaksanız OpenGL'i kullanmanın bir anlamı yoktur.
Dean Harding,

4
@Mahmoud, insanların Linux'a geçiş yapmalarını sağlamak oyun geliştiricisinin işi değil.
GrandmasterB

6
@John 10+ milyon World of Warcraft oyuncusu sizinle bir şeyler konuşmak istiyor. Ve bu sadece bir oyun.
Marcelo

50

Çünkü Windows% 90'dan fazla pazar payına sahip ve Linux (özellikle Linux hakkında sorduğunuzdan beri) yazılım için ödeme yapmaktan hoşlanmayan birçok kullanıcı için bir üne sahiptir. Bunun doğru olup olmadığı veya ne kadar doğru olduğu önemli değil; algı oradadır ve insanların kararlarını etkiler.


1
Geliştiriciler OpenGL kullanıyorsa, hem Windows hem de Linux'u destekleyecektir, bu nedenle ödeme yapmak isteyen ve daha iyi olduğuna inandıkları için Linux kullanan Linux kullanıcıları çekmek gerçekten de pazarlama avantajı sağlayacaktır.
M.Sameer

9
OpenGL'yi kullanıyor olsanız bile, Linux pazarının haklı çıkarmayacağı çapraz platform geliştirme ve test etme maliyetleri vardır. Directx aynı zamanda (ne yazık ki) şu anda PC oyunları için OpenGL'den daha iyi bir platform - OpenGL'de inşa edilen PC'lerde çok az yeni oyun var.
Martin Beckett,

25
Çapraz platform oluşturma "OpenGL için sadece kod" kadar kolay değildir.
Sistem Aşağı

13
Bu aslında doğru değil, Linux kullanıcılarının yazılım için para ödemeyecekleri. Humble Indie Bundle (ödemek istediğiniz para için alabileceğiniz bir oyun paketi) şimdi iki kez yapıldı ve Linux kullanıcılarına her paket için Windows kullanıcılarından daha fazla ödeme yaptığını gösterdi.
Htbaa

9
@Htbaa Elbette daha fazla para ödediler, umutsuzlardı, muhtemelen işletim sistemlerinde oynayabilecekleri tek oyundu.
Marcelo

11

Windows büyük bir kuruluş tarafından desteklendiğinden, on yıldan daha uzun bir süre önce oyun geliştirmenin platformlarında gerçekleşmesini istediklerine karar verdi .

Bu Mac için doğru değildi ve şimdi doğru değil. İOS için bile değil. Apple, iOS oyun geliştirme araçları sağlamıyor. Ancak bu, nispeten az rekabetle birlikte büyük bir pazar (1995'te PC'lerden daha fazla iPhone var), bu yüzden insanlar her nasılsa yapıyorlar.

Linux'a gelince, herhangi bir öncelik belirleyebilecek bir tür merkezi kurum bile yoktur. Linux'un hangi yöne gittiği, bir sürü çok iyi, ama biraz dünya dışı programcılar tarafından daha az belirlenir.

Bugün bir PC oyunu oluşturmak için 2d / 3d sanatçılara, oyun tasarımcılarına, senaryolara, aktörlere, test edicilere ve neye ihtiyacınız yok. Gerçek programlamaya gelince, sadece gerçek bir oyun motoru (CryEngine, Unreal Engine, Quake Engine, Source Engine) kullanabilirsiniz. Yani her şeyi gerçek bir programcı olmadan yapabiliyor olabilirsiniz.

Bu nedenle ve işletmelerin doğası gereği, programcılar hangi platformun seçildiğini söyleyemezler. Ve genellikle, yöneticiler Microsoft'un önerdiği bir şey olan desteği ve açık kaynaklı olmayan düşünce biçimlerine bir şekilde elverişli olan şeyleri ele almak için destek ararlar.

Bu nedenle, çoğu ticari son kullanıcı yazılımı geliştirme işlemi pencerelerde gerçekleştirilir.
Flash oyunlar üreten bir şirket için çalışıyorum ve bu nedenle belirli bir platforma bağlı değil. Ancak, hepimiz pencerelerde gelişiriz, çünkü kullandığımız araçların çoğu Linux için mevcut değil.


2
“Yani, her şeyi gerçek bir programcı olmadan yapabiliyor olabilirsiniz.” İğneciliği unuttun.
Allon Guralnek

@ AllonGuralnek: Orada iğneleme yok. Büyük oyunların klasik oyun geliştirmesinde, programcılar içerik ve davranış sağlamak için motorlar ve araçlar yaratacaklar (görsel editörler veya gerçek komut dosyası yoluyla) ve oyun / seviye / görev tasarımcıları bu araçları kullanacak. Çalışan ve yeterince güçlü bir motor satın alırsanız, temel olarak birinci adımı kesebilirsiniz.
back2dos

2
Tek bir kod satırı yazmadan yaratılan oldukça dikkat çekici bir oyun için özel bir örneğiniz var mı?
Allon Guralnek

1
@AllonGuralnek: Kimsenin olmadan oyun oluşturmak olacaktır söylemedi kodu , ancak olmadan programcılar . Tamamen oyun değiştiren bir mod oluşturmak için programcı olmanıza gerek yok. DotA , kafamın üstünde düşünebildiğim en popüler olanı.
back2dos

1
@ AllonGuralnek: Hayır. Kod yazan kişiler kod yazan kişilerdir. Seviye tasarımcının belli bir komut dosyası yazma anlayışına sahip olması gerekir. Çoğu programcının genellikle belirli miktarda yönetim becerisine sahip olması gerekir. Birincisini programcı, ikincisini de yönetici yapmaz. Ayrıca, DotA hakkındaki değerlendirmeleriniz yanlış. Birincisi tamamen oyun değiştiriyor, bir RTS'yi yeni bir türe dönüştürüyor ve ikincisi ESWC
back2dos

10

Bazılarının söylediği gibi, en önemli kısım kullanıcı tabanıdır. PC kullanıcılarının% 95'i Windows kullanıyor. PC oyuncuları neredeyse yalnızca Windows kullanıyor. Mac veya Linux kullananlar bile, çoğu sanallaştırma veya öykünme yoluyla Windows oyunlarını çalıştırır (çok, çok az istisna dışında).

Ancak demografik her şey değildir. Platformu oyun geliştiricileri için daha cazip hale getirmek için Microsoft'un yaptığı kısmı küçümsemem. Temel olarak , ücretsiz , en önemlisi XNA Game Studio için tam özellikli araçlara sahip olacaksınız . Bu, yalnızca Windows için değil, Xbox360 için de geliştirmeye izin verir . Ve WP7 telefonları için bile en son sürüm. Açıkçası, bu Microsoft aracı olduğundan, OpenGL değil, DirectX kullanıyor.


3
Seyahat eden okuyucular için not: Nisan 2014 itibariyle, XNA resmen ölmüş olacak. Son sürüm (4.0) 2010'da yayınlandı ve şu an (2013) ile gün batımı arasında yeni bir sürüm görmeyecek.
Aren

1
Seyahat eden okuyucular için bir başka not: Windows 8 (ve üstü) geliştirme artık gelecekte ücretsiz olmayacak .
fouric

6

Ewwww, bilmiyorum. Sadece Linux kullanıyorum. Windows oluşturmak için Windows'a çift önyükleme yapıyorum ve Mac'i Mac için kullanıyorum, ancak bu kadar.

İşin püf noktası, yıllar boyunca geliştirdiğimiz bir platformlar arası çerçevedir. Oyunlarımız bunun üzerine inşa edilmiştir ve Linux / OpenGL, Mac / OpenGL ve Windows / Direct3D'de (ve yakında iOS / OpenGL'de) aynı şekilde davranır.

Kuşkusuz şirketim AAA başlıkları yapmıyor, bu yüzden bunlar için geçerli olmayabilir, ancak en iyi gündelik oyunları yapıyoruz (bkz. Web sitesi - CSI: NY, Yazan Cinayet ve önümüzdeki iki 2011, önemli lisansları kullanan başlık örnekleridir). Sherlock Holmes 1 ve 2'nin Kayıp Vakaları da oldukça başarılıydı)

Gedit + gcc + gdb + valgrind'den başka bir şey için vazgeçmedim.


3
gedit programlama için underrated
Alexander

2
@Alexander, küçümseyen bile açıklama yapmaya başlamıyor
Shahbaz

3
Üzgünüm, sonunda hükmettiğimden vazgeçtim. Şimdi gvim kullanıyorum ve çok daha mutluyum :)
ggambett

4
  1. Eylemsizlik. Geçmişte Windows'u kullandıysanız, başka bir şeye geçmek güçlüktür. Windows'taysanız, DirectX'in OpenGL'den daha iyi çalışması daha kolay ve daha olasıdır.
  2. Pazar payı. Windows'un masaüstündeki pazar payı, sırayla Linux'tan daha büyük olan OS X'ten daha büyük. Para konuşur.
  3. Marka. DirectX, SDL gibi şeylerden daha iyi bilinir (bu, DirectX'in OpenGL'nin ötesine geçen bazı özelliklerinin çoğaltılması için gereken bir türdür).
  4. Daha az karışıklık. Kullanıcının Linux'u yalnızca OpenGL 1.4 veya OpenGL 2+ sürümlerini destekliyor mu? Modern OpenGL'ye giriş gibi bir OpenGL 2.0 eğitimini kullanabilir misiniz? Bölüm 1: Sürüm Linux'unuzdaki Grafik Boru Hattı ?

Bugünlerde Linux, oyunların geliştirilmesine gelince daha çok merak uyandırıyor ve çoğu geliştirici mali olarak Linux sürümünden önce bir OS X portu sürümünden daha iyi durumda olacaktı (Steam gibi şeylere bakın). O zaman bile konsol piyasası, oyunlar için bir araya getirilen bu iki platformdan daha değerlidir ...

Mono platform istiyorsanız, DirectX gayet iyi. Eğer platformlar arası olmak istiyorsanız, diğer platformlardan en azından bazılarında OpenGL ile gitmek zorunda kalacaksınız.


2
4. soruya verilen cevap: 2+. Mesa3D, OpenGL 2.1'e kadar destekler; bu, X11 için 3D donanımı için tüm grafik sürücülerinin Mesa sürüm 6.8'den bu yana en az OpenGL 2.1'i desteklediği anlamına gelir. Bu, son birkaç yıl içinde piyasaya sürülen tüm Linux dağıtımlarını ve NVIDIA ve AMD'nin 3.0 ve üstü sürümleri desteklediği ikili sürücüleri kapsar. Bu intel895 kullanıcıları içermez, ancak kullanımdan kaldırılmıştır.
greyfade

1
Korkarım bu durum böyle değil. İ915 / i945 (GMA 900/950) yonga setlerine sahip bilgisayarlar (hala) satılıyor ve kullanımdan kaldırılmıyorlar. Birkaç ay öncesindeki modern dağıtımlarda bile (Ubuntu 11.04 / Fedora 15) glxinfo, 1.4'ten daha yüksek olmayan bir OpenGL versiyonunu döndürür (Mesa 7.11-devel). Böyle Intel donanım basitçe edemez softpipe varsayılan olarak kullanılabilir olana kadar bu yüzden yazılım yardımı olmadan sonraki sürümleri yapmak, bu tür kartların Linux yüksek bir sürüm OpenGL yapmak asla. OpenGL 2.0'ı (veya daha üstü) hedeflemek, çok çeşitli Linux masaüstü sistemlerinde çalışan bir programı durduracaktır ...
Anon

Buna rağmen endişeyi göremiyorum. Aynı yonga setleri Windows'ta sınırlamaları var, bu yüzden grafik ağırlıklı oyunların çoğu yine de
greyfade

4

Cevap açıktır. Oyun yazmanın amacı para kazanmaktır. Daha son kullanıcılar Windows kullanıyor, bu nedenle daha büyük bir pazar var ve bir Windows oyunundan bir Linux oyunundan daha fazla para kazanmayı umuyorsunuz. Bu kadar basit.

Kendine 'Neden birileri yapıyor ...' sorusunu sorarsan, paranın dünyayı dolaştırdığını unutma.


1
); Evet ama bir çapraz platform oyunu yapmak ve sadece windows kullanıcıları daha alabilirsiniz
M.Sameer

Platformlar arası olmak her şey değildir. Alacağınız ekstra kullanıcı sayısı nispeten düşük bir yüzdeyse, ekstra geliştirme maliyetini ve devam eden destek maliyetini onlardan alacağınız ekstra miktarla dengelemeniz ve gerçek zor verilere dayalı bilinçli bir karar vermeniz gerekir. Buna küresel olarak doğru ya da yanlış cevap yoktur, ancak her bir program için doğru ya da yanlış olan bir cevap vardır ve bir program için doğru olan başka bir program için yanlış olabilir.
Maximus Minimus,

4

Araçlar, araçlar, araçlar.

Aşağı indiği şey bu. Windows'ta geliştirin ve gezegendeki en iyi geliştirme araçlarından bazılarına erişin. Hiçbir şey uzaktan bile Visual Studio'nun hata ayıklayıcısına yaklaşmıyor, DirectX Hata Ayıklama Çalışmaları harika, PIX harika ve karşılaştırılabilir eşdeğerler sadece diğer platformlarda / API'lerde mevcut değil. Elbette, orada bazı iyi şeyler var; Diğer platformlardaki araçların kötü olduğunu söylemiyorum, ancak MS'in sağladığı paketin çok ötesinde (onurlu istisna: Valgrind) bile komik değil.

Alt satırda bu araçlar size yardımcı olur. İşleri halletmenize yardımcı olurlar, üretken olmanıza yardımcı olurlar, belgelenen gibi davranamayan bir API ile güreşmek yerine kendi kodunuzdaki hatalara odaklanmanıza yardımcı olurlar.


PIX olduğu müthiş. Can sıkıcı bir piksele tıklayarak ve ne olduğunu görünce gölgeleri ayıklayın!
Chris Pitman

4

Bu yüzden tüm bu cevapların üzerinden geçtim ve Walmart raflarında bulunan konsol oyunlarında kod yazan bir oyun geliştiricisi olarak, çok farklı bir cevabım var.

Dağıtım.

Nintendo konsolunda olmak istiyorsan, Nintendo'nun iznini almak zorundasın, Nintendo'nun fabrikalarından satın al, Nintendo'nun genel giderlerini ödemelisin, Walmart'la pazarlık et, depo ile uğraş, üretim için, kutulara basmak, gemi için paraya ihtiyacın var. , tüm sigorta yapmak için, et cetera.

Eğer XBox'a girmek istiyorsanız, XBLA olduğundan emin olun, ama yine de Microsoft’un nimetine ihtiyacınız var, sıranızı beklemelisiniz, sadece bir yama çıkarmak için onbinlerce dolar var.

İOS'ta, yine de Apple'ın tamamına ihtiyacınız var ve onlar sizi heyecanla çekebilir (ve yaparlar).

Steam'de, hala Valve'ın iznine veya yeşil ışığına ve çok paraya ihtiyacınız var.

.

Windows'ta? Bir web sitesi ve indirme butonu ayarladınız.

.

Diğer platformların değerli olmadığını söylemiyorum. Ama var bu yüzden * çok * korkunç şeyler bana da, sadece bir sitede bir ikili tokat ve işine konsantre edememek vaadi, bir oyun geliştirmeye çalışırken oluyor - en azından Başlamak için - gerçekten birçok potansiyel başarısızlık engelini azaltır.

“XBLA limanını daha sonra, işler sabit kaldığında yapabiliriz” zihniyeti.

Ve bunun bir dereceye kadar Linux için de iyi olduğundan emin olun ve eğer yedi müşteri iyiyse oradan başlayabilirsiniz.

Ancak Windows'un üç büyük avantajı var: gerçekten açık geliştirme, gerçekten açık dağıtım ve ilginç şeylerle ilgilenen çok büyük, çok aktif bir müşteri tabanı.

Başka nereden başlayacağımı hayal etmek zor.


3

DirectX'in Tarihçesi ve Bu Makale hakkında daha fazla şey okumanız gerektiğini düşünüyorum .

MS'in OpenGL üzerinden DX'i seçtiğini düşünüyorum çünkü insanları kendi işletim sistemlerini kullanmaya kilitlemek istiyorlar.


4
hayır, onlar OGL Windows için optimize edilmemiştir, çünkü vb vb girişi kontrol sesi içermemekte, yeni donanım ve işletim sistemi gelişmelerin yararlanmak için hızla genişledi edilemez DX yarattı ..
jwenting

2
iow DX, performans nedenleriyle Windows için ve Microsoft'un bu şekilde kalmasına ve yeni teknolojiyi mümkün olduğu kadar hızlı bir şekilde kullanmasına izin vermesi için uzmanlaşmıştır. OpenGL, 5 yıl önce, belki de daha fazla olan grafik donanım desteği düzeyinde kaldı, çünkü bu çok büyük bir çaba.
46'da jwenting

1
@jwenting Performansın başka platformlara aktarılmamasının tek sebebi olduğunu sanmıyorum, demek istediğim eğer taşımak istiyorlarsa, en azından açık kaynaklı olacaklardı ve uygulamak için topluluğa bırakacaklardı. o.
Mahmoud Hossam,

1
C # kaynağını açmamışlar, dil şartnamesini standart birimlere sunmuşlar. Microsoft, bu standartların bir üyesidir ve her zaman böyle şeyler yapar (örneğin, html, javascript ve diğer standartlara büyük katkıları vardır). Açık kaynak kullanımı, derleyici ve kütüphaneler için kaynak kodunun APL gibi bir şey altında yayınlanması anlamına gelirdi.
jwenting

1
@jwenting: Kayıt için Gallium3D çerçevesini hedef alan Direct3D 10 ve 11'in Linux'ta uygulaması var. (Ve bunun Wine ile ilgisi yok.) Ayrıca, "OGL Windows için optimize edilmedi" iddiasına katılmıyorum. Bu bir OpenGL sınırlaması değil, donanım sürücüsü uygulamaları konusudur.
greyfade

1

Politika ve kontrol ile ilgili çok şey var. 90'ların sonunda, SGI ve MS aslında çabaları birleştirmeye karar verdiler:

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

SGI projeye ağır yatırım yaptı, MS yapmadı. SGI, MS'e, MSI'nın SGI'dan daha fazlasına ihtiyaç duyuyordu. Gerisi tarih.

D3D ve OpenGL iki farklı API'dir, gereksinimlerinize uygun olanı seçmek geliştiriciye kalmıştır.


0

Çünkü Linux bir masaüstü sistemi olarak korkunç derecede başarısız oldu. Birinin daha önce belirttiği gibi, Linux geliştiriciler için bir karışıklıktır (farklı kütüphaneler, ui araç setleri vb.)

Diğer bir sorun, freetardism ve tescilli yazılım için destek eksikliği. Nvidia, Linux için her zaman iyi (tescilli) sürücüler sağlar, ancak Ubuntu ve diğer dağıtımlar onu göndermez. Linux için Windows'ta olduğu gibi bir ikili sürücü arayüzü de yoktur. (BinaryApiNonsense.txt adlı bir metin dosyası veya Çekirdek kaynaklarında bir şey var) Linux'ta yalnızca Nvidia donanımının doğru şekilde desteklendiğini söylemiştim. ID yazılımlarının çoğunu, Linux altında Nvidia donanımını kullanarak oynayabilirsiniz.

Bir sonraki şey geliştirme araçları. MSFT mükemmel C ++ desteği sağlar ve Visual Studio hata ayıklayıcısı, C ++ ile ilgili gdb'den daha iyidir. Son fakat en az değil, Photoshop gibi başka araçlar da eksik. Ayrıca, net hızlı bir şekilde GUI araçları oluşturmanıza olanak sağlar. Birçok oyun stüdyosu araçlarını .net çerçevesini kullanarak iç kullanım için kodlar.

Neredeyse unutuyordum: Grafik sistemi korkunçtu, sadece X11'i taşıdıkları günlerde, çünkü işe yarayan en kolay şeydi. OSx ve Win’in sahip olduğu modern bir grafik sistemini uygun bir şekilde tasarlayıp uygulayamamışlardır.


4
Hmm? Intel ve Intel kartlarım Linux'ta iyi çalışıyor ... Ve X11'in nesi yanlış? Her zaman istemci-sunucu mimarisi nedeniyle diğer işletim sistemlerinde (özellikle Windows) alternatiflerinden daha iyi olduğunu hissettim.
alternatif

Hayır, glxinfo yazmazlar ve havanın iyi olup olmadığını görürler! X11 korkunç bir örnektir invisiblethings.blogspot.com/2010/08/…
Nils

ve son cümleyi okursanız, Linus'un kendisi de çekirdek seviyesindeki yamayı uyguladı - X11 yamasını değil.
alternatif

1
Grafik sistemi hakkında pek bir şey bilmiyorum (bir noktaya sahip olabilirsiniz) ama Linux'un bir masaüstü sistemi olarak başarısız olduğunu söylemek doğru değil ya da en azından doğru değil. Windows'tan Linux'a taşındım ve o zamandan beri çok üretken hissediyorum. Linux'un performansı, kullandığım tüm makinelerde Windows'tan üstündür ve üstündür. Ayrıca C ++ kodlamıyorum ve Eclipse'in Visual Studio'ya kıyasla C ++ IDE olarak nerede durduğunu bilmek istiyorum.
M.Sameer

Alev makinelerini yere koy. Genel kabul görmüş fikrin, VS'in en iyi IDE olduğu olduğunu düşünüyorum. Ancak, Eclipse hala genç ve gidecek yolu var - göreceğiz. Ancak Linux'ta her şeyin komut dosyası ne kadar kolay ve uygulanabilir olduğunu seviyorum!
Vorac,
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.