Uyumluluk ve performans hususları göz önüne alındığında hangi OpenGL sürümünü kodlamalıyım? [kapalı]


19

OpenGL spesifikasyonu güncellendiğinde, yalnızca özellikler eklerler. Teorik olarak, Çekirdek ve Uyumluluk profillerini destekleyen en son ve en büyük donanım süper eski OpenGL1.1 kodunu iyi çalıştırmalıdır. Bunun doğru olduğu ortaya çıktı. OpenGL1.1'i öğrenmek için 12 ay geçirdim ve bunu iyi anladım.

Yeni süslü OpenGL4.2 kitaplarından birinin birkaç bölümünü okudum. Güvendiğim özelliklerin neredeyse tamamı kullanımdan kaldırıldı (Görüntü Listeleri gibi), bu da tüm bunları yapmanın daha iyi yollarının olduğunu varsaymamı sağlıyor.

1.1'in tam olarak TÜM modern donanım tarafından destekleneceğini düşünelim. 1.1 1992 yılında piyasaya sürüldü. Sadece 20 yaşındaki bilgisayarları desteklemek için zor yolu kodlamıyorum. :-p Çoğu oyuncunun yaklaşık 5 yaşındaki orta aralıkta dibe vurmuş bir donanım kullandığını varsaymanın makul olduğunu düşünüyorum.

Yeni yöntemlerin evrensel olarak iki şeyden biri olacak şekilde tasarlandığını düşünüyorum: daha iyi performans veya daha kolay kodlama. Ben her ikisi de olsa bir yerde okumak! XD

Hangi OpenGL sürümü ~ 5 yaşındaki donanım tarafından en yaygın olarak desteklenmektedir? Bu düşünceler göz önüne alındığında hangi sürümün kullanılması en anlamlı?

Yanıtlar:


19

Düşünceleriniz göz önüne alındığında, her sürüm için OpenGL spesifikasyonlarının ne zaman piyasaya sürüldüğünü ve gördüklerimden genel bir bakış açısıyla etkilendiğini görmek için geldim.

FBO'ları, VAO'ları ve diğer şeyleri tanıtan OpenGL 3, yaklaşık 5 yıl önce 11 Temmuz 2008'de piyasaya sürüldü. Tabii ki, o tarihten sonraki tüm kartların hemen OpenGL 3'e sahip olmasını bekleyemezsiniz.

Steam Donanım Anketi'ne bakıldığında, % 40'ı DirectX 10'dur. OpenGL 3 benzer bir grafik kartı gerektirdiğinden, çoğu DirectX 10 kartının en az OpenGL 3 çalıştırabileceğini varsaymak genellikle güvenlidir.

OpenGL 3, doğru hatırladığımda oldukça popüler olan GeForce 8xxx serisine kadar kartlarda destekleniyor. Ayrıca dikkat edilmesi gereken nokta, Intel HD 2000 ve 3000 Grafiklerinin (Sandy Köprüsü) yalnızca OpenGL 3'ü desteklediğidir, bu yüzden bunları hedeflemeyi planlıyorsanız unutmayın.

Sonuç: OpenGL 3 iyi bir bahistir (hedef kitlenize bağlı olarak çoğu oyuncunun muhtemelen ortalamadan daha iyi donanıma sahip olacağını unutmayın).


Bu harika bir cevap. Tam da aradığım içgörü idi.
Suds

3
"Ayrıca dikkat edilmesi gereken nokta, Intel HD 2000 ve 3000 Grafiklerinin (Sandy bridge) yalnızca OpenGL 3'ü desteklemesidir" Not: yalnızca GL 3.1'i desteklerler (çünkü Intel umursamaz). Ve Intel olduğu için, bir tuz tanesi ile "destek" alınmalıdır. Onların donanım olabilir 3.3 destekleyen, ama (yine onlar umurumda değil çünkü) onlar maruz bırakmayın. Intel donanımında OpenGL 3.x kullanmaktan kaçınırım. Gerçekten de, Intel donanımına dayalı gölgelendirici tabanlı herhangi bir şey yapmaktan kaçınırım.
Nicol Bolas

Bu durumda soru ortaya çıkar; Intel donanımı ile pazar ne kadar doymuş? Intel grafiklerini önemsemeye ve OpenGL3.x kullanmaya yine de değmez mi? Yoksa gerçekten önemli olan yeterince intel grafik donanımı var mı?
12'de Suds

1
Bir sorun OSX. En son sürüm 10.7.x yalnızca OpenGL 3.2'yi destekler , 10.6.x yalnızca 3.0'ı (hatta 2.x'i) destekler. 10.5.x karta bağlı olarak büyük ölçüde değişir, 1.3, 1.5 ve 2.0 olasılıklardır. Kullanıcı bir güncelleme için Apple'a para ödemediği sürece bu sistemler sonsuza kadar bu OpenGL sürümlerinde takılı kalacaktır. OpenGL'yi güncelleyecek bir ekran kartı sürücüsü güncellemesi veya OSX için böyle bir şey yoktur. Diğer problemler mini dizüstü bilgisayarlarda kullanılan gömülü Intel yongasetleri. Birçoğu sadece OpenGL 2.0 veya daha kötüdür.
David

Ve sonra hala OpenGL 1.1 sallanan 3DS var ...
kirbyfan64sos

8

Buradan başlıyorum: http://store.steampowered.com/hwsurvey

Örneğin, 4cpus'u hedeflerseniz, kullanıcıların yalnızca% 45'ine ulaşırsınız, ancak 2'ye çalışırsanız,% 90'a yaklaşırsınız.


1
OpenGL'yi nerede gördün? Yalnızca DirectX'i görüyorum (yalnızca Windows'u hedeflemeyi planlıyorsanız dikkat çekici bir şey).
DMan

Grafik kartı arızasına göre ayak işini yaptığınızı tahmin ediyorum
Jimmy

Evet - OpenGL hakkında hiçbir şey görmedim - ancak kart modellerinden alabilirsin, ya da gerçekten, DirectX sürümleri ve OpenGL arasında adil bir korelasyon olacağına inanıyorum.
salmonmoose

3

Bu sorunun cevabı, bahsettiğiniz zaman dilimi içinde yayınlanan Intel grafiklerini çalıştırmanız gerekip gerekmediğine bağlıdır.

Bunu yaparsanız, kendinizi OpenGL 2.1 (hatta 1.5) ile sınırlayın, eğer yapmazsanız 3.x makul görünüyor.

Evet, OpenGL'nin eski sürümleri hala çalışıyor ve evet, bir bakış açısından daha basit görünebilirler. İşlerin şekil dışına çıktığı yer, çok kolay desteklemedikleri şeyleri yapmaya çalıştığınızda (ve siz yapacaksınız). OpenGL 1.1 sadece zor bir yol değil, belirli sonuçlara ulaşmak istiyorsanız genellikle imkansız bir yöntemdir.


1.1'in neden genellikle imkansız olduğuna dair bir örnek eklemem gerekiyor. 1.1 işlevselliği ile kolayca ilişkilendirilebilecek bir tür, çoklu harman geçişleridir. FBO'larınız olmadığından ve çoğunlukla bileşen dokuları başına 8 bitle sınırlı olduğunuzdan, karışım geçtikçe hassasiyeti kaybetmeye başlayacağınızı göreceksiniz. 3/4/5 geçiş kullanın ve sonuç 16 bit veya 8 bit grafik gibi görünmeye (veya daha kötü) başlayacaktır. Bununla birlikte, 1.1 özellik seti ile daha yüksek düzey efektleri (temel çoklu görüntü, hepimizin bildiği bir efekt olabilir) simüle etmek için genellikle birden fazla geçiş gerekir.
Maximus Minimus

Intel HD grafikler (Sandy / Ivy Bridge) bile yalnızca OpenGL 3.1'i destekler ve bu bir yaşındadır. Ucuz (veya düşük güçlü) dizüstü bilgisayarları desteklemek isteyip istemediğinize gelir.
Steve Howard

2
@SteveHoward: Intel HD Graphics OpenGL 4'ü destekleyebilir. Kaynak
Janus Troelsen

Bu makale, yorumumu gönderdikten yaklaşık 3 ay sonra.
Steve Howard

1

Öncelikle, Uyumluluk profiline sahip olmanız koşuluyla (genellikle durum böyle), Görüntü Listeleri gibi OpenGL 1.1 öğeleri yeni bir bağlamda çalışmaya devam edecektir. Tek sorun, konsola özgü grafik kitaplıklarından biri olan OpenGL ES'ye (genellikle OpenGL ES'ye benzer OpenGL'den çıkarılır) veya hatta WebGL'ye (yine de biraz yeniden çalışmayı gerektirir) bağlamayı beklemenizdir.

Şahsen tepe / parça gölgelendiricileri ve VBO'ları kullanmanızı tavsiye ederim. Uzun zamandır varlar ve harika performans iyileştirmeleri sunuyorlar. Bir sınıftaki işlevleri sararsanız, muhtemelen basit bir geri dönüş de sağlayabilirsiniz.

Vertex Array Objects gibi şeyleri de taklit edebilirsiniz.


0

5 yıllık donanımıyla bazı insanlar hala XP kullanıyor. Bu da DirectX 10 veya OpenGL 3 ile kod yazamayacağınız anlamına gelir. Ve OpenGL 3, çerçeve tamponları ve benzeri gibi gerçekten faydalanacağınız birçok özelliğe sahiptir. Dürüst olmak gerekirse, bu özellikleri ekleyebilmeniz için sistem gereksinimlerinizi biraz arttırırım.


8
-1: "5 yaşında bir donanımla bazı insanlar hala XP kullanıyor. Bu da DirectX 10 veya OpenGL 3 ile kod yazamayacağınız anlamına geliyor." Doğru değil. OpenGL 3.x , XP'de iyi çalışır . API / sürücü nedenleriyle yalnızca XP'den kısıtlanan D3D10. Donanımla hiçbir ilgisi yok.
Nicol Bolas

0

3B yazılımın hem "temel" grafik api sürümü hem de "en yeni ve en büyük" api sürümü için kod yollarına sahip olması yaygındır.

Yaygın temel grafik sürümleri D3D9 ve OpenGL 2.1 / GLSL 120'dir. Eski donanım bunları desteklemediğinden, her ikisi de özellikle eksik geometri gölgelendiricileridir.

Başka bir temel seçenek, D3D9, masaüstü OpenGL ve mobil GLES 2.0 üzerinde çalışan GLES 2.0 artı EGL olan ANGLE'dir. Chrome ve Firefox'ta Google chrome ve webgl için arka uçtur.

http://code.google.com/p/angleproject/

Seçtiğiniz "en son ve en büyük" versiyona gelince, bu daha zordur. Hedeflediğiniz api ve donanım ne kadar yakınsa, destekleyebileceğiniz daha iyi görünümlü özellikler - ancak yalnızca en son ve en iyi donanımda.

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.