OpenGL - OpenGL

OpenGL
OpenGL logo (Nov14).svg
Video games outsource real-time rendering calculations to the GPU over OpenGL. Oluşturulan sonuçlar ana belleğe geri gönderilmez, bunun yerine video belleğinin çerçeve arabelleğine gönderilir. Ekran kontrolörü daha sonra bu verileri görüntüleme cihazına gönderecektir.
Video oyunları gerçek zamanlı işleme hesaplamaları için dış kaynak GPU OpenGL üzerinden. Oluşturulan sonuçlar ana belleğe geri gönderilmez, bunun yerine video belleğinin çerçeve arabelleğine gönderilir. Ekran kontrolörü daha sonra bu verileri görüntüleme cihazına gönderecektir.
Orijinal yazar (lar)Silikon Grafikler
Geliştirici (ler)Khronos Grubu
(vakti zamanında ARB )
İlk sürüm30 Haziran 1992; 28 yıl önce (1992-06-30)
Kararlı sürüm
4.6 / 31 Temmuz 2017; 3 yıl once (2017-07-31)
YazılmışC[1]
Tür3D grafikler API
Lisans
  • Açık kaynak S.I.'nin kullanım lisansı[açıklama gerekli ]: Bu, BSD, X ve Mozilla lisansları üzerinde yakından modellenen bir Özgür Yazılım Lisansı B'dir.
  • OpenGL ticari markasını ve logosunu kullanmak isteyen ve uygunluk iddia eden yeni lisans sahipleri için ticari marka lisansı.[2]
İnternet sitesiopengl.org

OpenGL (Grafik Kitaplığını Aç[3]) bir diller arası, çapraz platform uygulama programlama Arayüzü (API) oluşturma için 2D ve 3 boyutlu vektör grafikleri. API, tipik olarak bir Grafik İşleme Ünitesi (GPU), başarmak için donanım hızlandırmalı işleme.

Silicon Graphics, Inc. (SGI) 1991'de OpenGL'yi geliştirmeye başladı ve 30 Haziran 1992'de yayınladı;[4][5] uygulamalar bunu yaygın olarak şu alanlarda kullanır: Bilgisayar destekli tasarım (CAD), sanal gerçeklik, bilimsel görselleştirme bilgi görselleştirme, uçuş simülasyonu, ve video oyunları. 2006'dan beri OpenGL, kar amacı gütmeyen teknoloji konsorsiyum Khronos Grubu.

Tasarım

Grafik ardışık düzen sürecinin bir örneği

OpenGL spesifikasyonu bir özeti tanımlar API 2D ve 3D grafikler çizmek için. API'nin tamamen yazılım içinde uygulanması mümkün olmakla birlikte, çoğunlukla veya tamamen uygulanacak şekilde tasarlanmıştır. donanımda.

API, bir dizi fonksiyonlar müşteri programı tarafından çağrılabilir, bir dizi adlandırılmış tamsayı sabitleri (örneğin, GL_TEXTURE_2D sabiti, ondalık numarası 3553). İşlev tanımları yüzeysel olarak programlama dilindekilere benzer olsa da C, dilden bağımsızdırlar. OpenGL'de pek çok dil bağlamaları en dikkate değer olanlardan bazıları JavaScript bağlayıcı WebGL (API, OpenGL ES 2.0, bir içinden 3B oluşturma için internet tarayıcısı ); C bağlamaları WGL, GLX ve CGL; tarafından sağlanan C bağlama iOS; ve Java ve C bağlamaları Android.

Dilden bağımsız olmasının yanı sıra, OpenGL aynı zamanda çapraz platformdur. Spesifikasyon, bir OpenGL bağlamı edinme ve yönetme konusunda hiçbir şey söylemiyor ve bunu temelin bir ayrıntısı olarak bırakıyor pencere sistemi. Aynı nedenden ötürü, OpenGL tamamen oluşturma ile ilgilidir ve giriş, ses veya pencereleme ile ilgili hiçbir API sağlamaz.

Geliştirme

OpenGL, gelişen bir API'dir. OpenGL özelliklerinin yeni sürümleri, düzenli olarak Khronos Grubu, her biri çeşitli yeni özellikleri desteklemek için API'yi genişletir. Her bir sürümün ayrıntıları, grafik kartı üreticileri, işletim sistemi tasarımcıları ve aşağıdaki gibi genel teknoloji şirketleri dahil olmak üzere Grup üyeleri arasındaki fikir birliğiyle belirlenir. Mozilla ve Google.[6]

Temel API'nin gerektirdiği özelliklere ek olarak, Grafik İşleme Ünitesi (GPU) satıcıları şu şekilde ek işlevsellik sağlayabilir: uzantılar. Uzantılar yeni işlevler ve yeni sabitler getirebilir ve mevcut OpenGL işlevlerindeki kısıtlamaları gevşetebilir veya kaldırabilir. Satıcılar, diğer satıcılardan veya bir bütün olarak Khronos Grubundan desteğe ihtiyaç duymadan özel API'leri ortaya çıkarmak için uzantıları kullanabilir; bu, OpenGL'nin esnekliğini büyük ölçüde artırır. Tüm uzantılar OpenGL Registry tarafından toplanır ve tanımlanır.[7]

Her uzantı, onu geliştiren şirketin adına bağlı olarak kısa bir tanımlayıcıyla ilişkilendirilir. Örneğin, Nvidia adlı kullanıcının tanımlayıcısı, uzantı adının bir parçası olan NV'dir GL_NV_half_float, sabit GL_HALF_FLOAT_NVve işlev glVertex2hNV ().[8] Birden fazla satıcı aynı API'yi kullanarak aynı işlevselliği uygulamayı kabul ederse, EXT tanımlayıcısı kullanılarak paylaşılan bir uzantı serbest bırakılabilir. Bu gibi durumlarda, Khronos Group'un Mimari İnceleme Kurulu, uzantıya açık onaylarını verebilir ve bu durumda ARB tanımlayıcısı kullanılır.[9]

OpenGL'nin her yeni sürümü tarafından sunulan özellikler, tipik olarak, özellikle ARB veya EXT tipi uzantılar olmak üzere, yaygın olarak uygulanan çeşitli uzantıların birleşik özelliklerinden oluşur.

Dokümantasyon

OpenGL Mimari İnceleme Kurulu, API'deki değişiklikleri izlemek için güncellenen spesifikasyonla birlikte bir dizi kılavuz yayınladı. Bunlar genellikle kapaklarının renkleri ile anılır:

Kırmızı Kitap
OpenGL Programlama Kılavuzu, 9th Edition. ISBN  978-0-134-49549-1
OpenGL'yi Öğrenmek için Resmi Kılavuz, Sürüm 4.5, SPIR-V ile
Turuncu Kitap
OpenGL Shading Language, 3. baskı. ISBN  0-321-63763-1
İçin bir eğitim ve referans kitabı GLSL.

Tarihi kitaplar (OpenGL 2.0 öncesi):

Yeşil Kitap
X Pencere Sistemi için OpenGL Programlama. ISBN  978-0-201-48359-8
X11 arabirimi ve OpenGL Yardımcı Programı Araç Seti (GLUT).
Mavi Kitap
OpenGL Referans kılavuzu, 4. baskı. ISBN  0-321-17383-X
Esasen bir basılı kopya çıktısı Unix kılavuzu OpenGL için (man) sayfalar.
İdealleştirilmiş bir OpenGL uygulamasının yapısını gösteren poster boyutunda bir katlanabilir diyagram içerir.
Alfa Kitabı (beyaz kapak)
Windows 95 ve Windows NT için OpenGL Programlama. ISBN  0-201-40709-4
OpenGL ile Microsoft Windows arasında arayüz oluşturma hakkında bir kitap.

İlişkili kitaplıklar

OpenGL'nin en eski sürümleri, OpenGL Yardımcı Kitaplığı (GLU). Aşağıdakiler gibi çağdaş donanımda desteklenmesi muhtemel olmayan basit, kullanışlı özellikler sağladı. mozaikleme ve üretiliyor mipmap'ler ve ilkel şekiller. GLU spesifikasyonu en son 1998'de güncellenmiştir ve şu anda mevcut olan OpenGL özelliklerine bağlıdır. kullanımdan kaldırıldı.

Bağlam ve pencere araç kitleri

OpenGL bağlamı oluşturmanın oldukça karmaşık bir süreç olduğu ve bu süreçler arasında farklılık gösterdiği göz önüne alındığında işletim sistemleri otomatik OpenGL bağlamı oluşturma, çeşitli oyun geliştirme ve kullanıcı arayüzlerinin ortak bir özelliği haline geldi kütüphaneler, dahil olmak üzere SDL, Allegro, SFML, FLTK, ve Qt. Birkaç kitaplık yalnızca OpenGL uyumlu bir pencere oluşturmak için tasarlanmıştır. Böyle ilk kütüphane OpenGL Yardımcı Programı Araç Seti (GLUT), daha sonra yerini aldı freeglut. GLFW daha yeni bir alternatiftir.[10]

  • Bu araç setleri, OpenGL pencereleri oluşturmak ve yönetmek ve girdileri yönetmek için tasarlanmıştır, ancak bunun biraz ötesinde.[11]
  • GLFW - Platformlar arası bir pencereleme ve klavye-fare-kumanda kolu işleyicisi; daha oyun odaklı
  • freeglut - Çapraz platform pencereleme ve klavye fare işleyicisi; API'si GLUT API'nin bir üst kümesidir ve GLUT'tan daha kararlı ve günceldir
  • OpenGL Yardımcı Programı Araç Seti (GLUT) - Eski bir pencereleme işleyicisi, artık kullanılmıyor.
  • Çeşitli "multimedya kitaplıkları", giriş, ses ve oyun benzeri uygulamalar için yararlı olan diğer görevlere ek olarak OpenGL pencereleri oluşturabilir
  • Allegro 5 - Oyun geliştirmeye odaklanan bir C API'sine sahip çapraz platform multimedya kitaplığı
  • Basit DirectMedia Katmanı (SDL) - C API'li bir çapraz platform multimedya kitaplığı
  • SFML - Bir C ++ API'sine ve C #, Java, Haskell ve Go gibi dillere birden çok başka bağlama içeren bir çapraz platform multimedya kitaplığı
  • Widget araç kitleri
  • FLTK - Küçük bir çapraz platform C ++ pencere öğesi kitaplığı
  • Qt - Çapraz platform C ++ widget araç seti. Masaüstü GL ve OpenGL ES arasındaki farkı bile ortadan kaldıran birçok OpenGL yardımcı nesnesi sağlar.
  • wxWidgets - Platformlar arası bir C ++ pencere öğesi araç seti

Uzantı yükleme kitaplıkları

OpenGL uzantılarının tanımlanması ve yüklenmesiyle ilgili yüksek iş yükü göz önüne alındığında, mevcut tüm uzantıları ve işlevleri otomatik olarak yükleyen birkaç kitaplık tasarlanmıştır. Örnekler şunları içerir: GLEE, GLEW ve parlama. Uzantılar ayrıca çoğu dil bağlaması tarafından otomatik olarak yüklenir. JOGL ve PyOpenGL.

Uygulamalar

Mesa 3D bir açık kaynak OpenGL uygulaması. Saf yazılım oluşturma yapabilir ve ayrıca donanım hızlandırmayı kullanabilir. BSD, Linux ve diğer platformlardan yararlanarak Doğrudan İşleme Altyapısı. 20.0 versiyonundan itibaren OpenGL standardının 4.6 versiyonunu uygulamaktadır.

Tarih

1980'lerde, çok çeşitli grafik donanımı ile çalışabilen yazılım geliştirmek gerçek bir zorluktu. Yazılım geliştiricileri, her bir donanım parçası için özel arayüzler ve sürücüler yazdılar. Bu pahalıydı ve çabanın çoğalmasıyla sonuçlandı.

1990'ların başında, Silikon Grafikler (SGI), iş istasyonları için 3D grafik alanında liderdi. Onların IRIS GL API[12] son teknoloji olarak kabul edildi[kaynak belirtilmeli ] ve fiili endüstri standardı haline gelerek, açık standartlara dayalı PHIGS. Bunun nedeni, IRIS GL'nin kullanımının daha kolay olduğu ve desteklediği için Acil mod işleme. Buna karşılık, PHIGS kullanımının zor olduğu ve işlevsellik açısından eski olduğu düşünülüyordu.

SGI'nın rakipleri (dahil Sun Microsystems, Hewlett Packard ve IBM ) ayrıca PHIGS standardına yapılan uzantılarla desteklenen 3D donanımı piyasaya sunmayı başardılar, bu da SGI'ya IrisGL'nin halka açık bir standart olarak bir versiyonunu açık kaynak yapması için baskı yaptı. OpenGL.

Ancak, SGI, IrisGL'den OpenGL'e geçişin önemli yatırımlar gerektireceği birçok müşteriye sahipti. Ayrıca IrisGL, 3D grafiklerle ilgisi olmayan API işlevlerine sahipti. Örneğin, bir pencere, klavye ve fare API'si içeriyordu, çünkü kısmen X Pencere Sistemi ve güneşin Haberler. Ve IrisGL kitaplıkları, lisanslama ve patent sorunları nedeniyle açılmaya uygun değildi[daha fazla açıklama gerekli ]. Bu faktörler, SGI'nın gelişmiş ve özel mülkiyeti desteklemeye devam etmesini gerektirdi. Iris Mucit ve Iris Performer OpenGL için pazar desteği olgunlaşırken programlama API'leri.

IrisGL'nin kısıtlamalarından biri, yalnızca temel donanım tarafından desteklenen özelliklere erişim sağlamasıydı. Grafik donanımı bir özelliği yerel olarak desteklemediyse, uygulama onu kullanamaz. OpenGL, donanım tarafından desteklenmeyen özelliklerin yazılım uygulamalarını sağlayarak, uygulamaların nispeten düşük güçlü sistemlerde gelişmiş grafikler kullanmasına izin vererek bu sorunun üstesinden geldi. OpenGL, donanıma erişimi standartlaştırdı, donanım arayüz programlarının geliştirme sorumluluğunu zorladı (aygıt sürücüleri ) donanım üreticilerine ve pencereleme işlevlerini temeldeki işletim sistemine devreder. Bu kadar çok farklı türde grafik donanımı ile, hepsinin aynı dili bu şekilde konuşmasını sağlamak, yazılım geliştiricilere 3B yazılım geliştirme için daha yüksek düzeyde bir platform sağlayarak dikkate değer bir etki yarattı.

1992'de[13] SGI, OpenGL Mimarisi İnceleme Panosu (OpenGL ARB), gelecekte OpenGL spesifikasyonunu koruyacak ve genişletecek şirketler grubu.

1994 yılında SGI, "OpenGL ++ "sahne grafiği API'si gibi öğeleri içeren (muhtemelen Performans teknolojisi). Spesifikasyon birkaç ilgili taraf arasında dağıtıldı - ancak hiçbir zaman bir ürüne dönüşmedi.[14]

Microsoft yayınlandı Direct3D 1995'te sonunda OpenGL'nin ana rakibi haline geldi. 50'den fazla oyun geliştiricisi bir açık mektup 12 Haziran 1997'de yayımlanan Microsoft'a, şirketi aktif olarak Open GL'yi desteklemeye çağırdı.[15] 17 Aralık 1997'de,[16] Microsoft ve SGI, Fahrenheit OpenGL ve Direct3D arayüzlerini birleştirme (ve bir sahne grafiği API'si de ekleme) amacıyla ortak bir çaba olan proje. 1998'de Hewlett-Packard projeye katıldı.[17] Başlangıçta etkileşimli 3B bilgisayar grafik API'leri dünyasına düzen getirme sözü verdi, ancak SGI'daki finansal kısıtlamalar, Microsoft'taki stratejik nedenler ve genel bir endüstri desteği eksikliği nedeniyle 1999'da terk edildi.[18]

Temmuz 2006'da OpenGL Mimari İnceleme Kurulu, OpenGL API standardının kontrolünü Khronos Group'a devretmek için oy kullandı.[19][20]

Haziran 2018'de, elma tüm platformlarında kullanımdan kaldırılmış OpenGL API'leri (iOS, Mac os işletim sistemi ve tvOS ), geliştiricileri kendi mülkiyetlerini kullanmaya Metal API, 2014 yılında tanıtıldı.[21]

Sürüm geçmişi

OpenGL'nin ilk sürümü olan 1.0 sürümü 30 Haziran 1992'de Mark Segal tarafından yayınlandı ve Kurt Akeley. O zamandan beri, OpenGL zaman zaman spesifikasyonun yeni bir sürümünü yayınlayarak genişletildi. Bu tür sürümler, tüm uyumlu grafik kartlarının desteklemesi gereken ve karşı yeni uzantıların daha kolay yazılabileceği bir temel özellikler kümesini tanımlar. OpenGL'nin her yeni sürümü, bu uzantıların ayrıntıları değiştirilebilir olsa da, grafik kartı satıcıları arasında yaygın bir desteğe sahip olan birkaç uzantıyı birleştirme eğilimindedir.

OpenGL sürüm geçmişi
SürümYayın tarihiÖzellikleri
1.14 Mart 1997Doku nesneleri
1.216 Mart 19983B dokular, BGRA ve paketlenmiş piksel formatlar,[22] Giriş görüntüleme alt kümesi görüntü işleme uygulamaları için kullanışlıdır
1.2.114 Ekim 1998ARB uzantıları kavramı
1.314 Ağustos 2001Çoklu dokunuş, çoklu örnekleme, doku sıkıştırma
1.424 Temmuz 2002Derinlik dokuları, GLSlang[23]
1.529 Temmuz 2003Köşe Tampon Nesnesi (VBO), Tıkanma Sorguları[24]
2.07 Eylül 2004GLSL 1.1, MRT, İki dokunun Gücü Olmayan, Point Sprites,[25] İki taraflı şablon[24]
2.12 Temmuz 2006GLSL 1.2, Piksel Arabellek Nesnesi (PBO), sRGB Dokuları[24]
3.011 Ağustos 2008GLSL 1.3, Doku Dizileri, Koşullu işleme, Çerçeve Arabelleği Nesnesi (FBO)[26]
3.124 Mart 2009GLSL 1.4, Örnekleme, Doku Arabelleği Nesnesi, Tekdüzen Arabellek Nesnesi, İlkel yeniden başlatma[27]
3.23 Ağustos 2009GLSL 1.5, Geometri Gölgelendirici, Çoklu örneklenmiş dokular[28]
3.311 Mart 2010GLSL 3.30, Backports, OpenGL 4.0 spesifikasyonundan mümkün olduğunca çok çalışır
4.011 Mart 2010GLSL 4.00, GPU'da Mozaikleme, 64 bit hassasiyetli gölgelendiriciler[29]
4.126 Temmuz 2010GLSL 4.10, Geliştirici dostu hata ayıklama çıktıları, OpenGL ES 2.0 ile uyumluluk[30]
4.28 Ağustos 2011[31]GLSL 4.20, atomik sayaçlara sahip gölgelendiriciler, örneklenmiş çizim dönüşümü geri bildirimi, gölgelendirici paketleme, performans iyileştirmeleri
4.36 Ağustos 2012[32]GLSL 4.30, GPU paralelliği, gölgelendirici depolama arabellek nesneleri, yüksek kaliteli ETC2 / EAC doku sıkıştırma, artırılmış bellek güvenliği, çoklu uygulama sağlamlık uzantısı, OpenGL ES 3.0 ile uyumluluktan yararlanan hesaplama gölgelendiricileri[33]
4.422 Temmuz 2013[34]GLSL 4.40, Arabellek Yerleştirme Kontrolü, Verimli Eşzamansız Sorgular, Gölgelendirici Değişken Düzeni, Etkili Çoklu Nesne Bağlama, Direct3D uygulamalarının Kolaylaştırılmış Taşıma, Bağlamasız Doku Uzatma, Seyrek Doku Uzatma[34]
4.5Ağustos 11, 2014[7][35]GLSL 4.50, Direct State Access (DSA), Flush Control, Robustness, OpenGL ES 3.1 API ve shader uyumluluğu, DX11 emülasyon özellikleri
4.631 Temmuz 2017[36][37]GLSL 4.60, Daha verimli geometri işleme ve gölgelendirici çalıştırma, daha fazla bilgi, hata bağlamı yok, çokgen ofset kıskaç, SPIR-V, anizotropik filtreleme

OpenGL 2.0

Yayın tarihi: 7 Eylül 2004

OpenGL 2.0, başlangıçta 3Dlabs OpenGL'nin durgunlaştığı ve güçlü bir yönden yoksun olduğu endişelerini gidermek için.[38] 3Dlabs, standarda bir dizi önemli eklemeler önerdi. Bunların çoğu, o zamanlar, ARB tarafından reddedildi ya da başka bir şekilde, 3Dlabs'ın önerdiği biçimde hiçbir zaman meyve vermedi. Bununla birlikte, C tarzı bir gölgeleme dili için teklifleri sonunda tamamlandı ve OpenGL Gölgeleme Dilinin mevcut formülasyonuyla sonuçlandı (GLSL veya GLslang). Değiştirdiği montaj benzeri gölgelendirme dilleri gibi, sabit işlevli köşe ve parça borusunun değiştirilmesine izin verdi gölgelendiriciler ama bu sefer C benzeri yüksek seviyeli bir dilde yazılmış.

GLSL'nin tasarımı, o zamanlar mevcut olan donanımın sınırlarına nispeten az taviz vermesi açısından dikkate değerdi. Bu, eski OpenGL geleneğinin, yalnızca mevcut donanımın durumunu izlemek yerine 3B hızlandırıcılar için iddialı, ileriye dönük bir hedef belirlediğini hatırlattı. Son OpenGL 2.0 spesifikasyonu[39] GLSL desteği içerir.

Longs Peak ve OpenGL 3.0

OpenGL 3.0 yayınlanmadan önce, yeni revizyonun kod adı vardı Uzun Tepe. İlk duyurusu sırasında Longs Peak, OpenGL'nin kullanım ömrü boyunca ilk büyük API revizyonu olarak sunuldu. OpenGL'nin çalışma biçiminde bir revizyondan oluşuyordu ve API'de temel değişiklikler gerektiriyordu.

Taslak, nesne yönetimine bir değişiklik getirdi. GL 2.1 nesne modeli, OpenGL'nin duruma dayalı tasarımı üzerine inşa edilmiştir. Yani, bir nesneyi değiştirmek veya kullanmak için, nesneyi durum sistemine bağlamanız, ardından durumda değişiklikler yapmanız veya bağlı nesneyi kullanan işlev çağrıları gerçekleştirmeniz gerekir.

OpenGL'nin bir durum sistemi kullanması nedeniyle, nesnelerin değiştirilebilir olması gerekir. Yani, bir nesnenin temel yapısı, işleme hattı o nesneyi eşzamansız olarak kullanıyor olsa bile, herhangi bir zamanda değişebilir. Bir doku nesnesi 2D'den 3D'ye yeniden tanımlanabilir. Bu, herhangi bir OpenGL uygulamasının dahili nesne yönetimine bir derece karmaşıklık katmasını gerektirir.

Longs Peak API altında nesne oluşturma, atomik, bir işlev çağrısı ile oluşturulacak bir nesnenin özelliklerini tanımlamak için şablonların kullanılması. Nesne daha sonra birden çok iş parçacığı arasında hemen kullanılabilir. Nesneler de değişmez olacaktır; ancak içeriklerini değiştirebilir ve güncelleyebilirler. Örneğin, bir doku görüntüsünü değiştirebilir, ancak boyutu ve biçimi değiştirilemez.

Geriye dönük uyumluluğu desteklemek için, eski durum tabanlı API yine de mevcut olacak, ancak OpenGL'nin sonraki sürümlerinde eski API aracılığıyla yeni işlevler açığa çıkmayacaktı. Bu, çoğunluk gibi eski kod tabanlarına izin verirdi. CAD diğer yazılımlar yeni API'ye karşı yazılabilir veya ona taşınabilirken çalışmaya devam etmek için.

Longs Peak başlangıçta OpenGL 3.0 adı altında Eylül 2007'de sonuçlandırılacaktı, ancak Khronos Group 30 Ekim'de spesifikasyonu yayınlamadan önce ele almak istediği birkaç sorunla karşılaştığını duyurdu.[40] Sonuç olarak, şartname ertelendi ve Khronos Grubu bir medya karartması son OpenGL 3.0 spesifikasyonunun yayınlanmasına kadar.

Nihai şartname, Longs Peak teklifinden çok daha az devrimci olduğunu kanıtladı. Spesifikasyon, tüm anlık modu ve sabit işlevselliği (gölgelendirici olmayan mod) kaldırmak yerine, bunları kullanımdan kaldırılmış özellikler olarak dahil etti. Önerilen nesne modeli dahil edilmedi ve onu gelecekteki revizyonlara dahil etmek için herhangi bir plan açıklanmadı. Sonuç olarak, API, temel işlevlere yükseltilen birkaç mevcut uzantı ile büyük ölçüde aynı kaldı.

Bazı geliştirici grupları arasında bu karar bir şeye neden oldu,[41] birçok geliştiricinin geçiş yapacaklarını iddia ettiği DirectX Protestoda. Şikayetlerin çoğu, Khronos'un geliştirme topluluğuyla iletişim kuramaması ve birçok kişi tarafından olumlu görülen birçok özelliğin atılması etrafında dönüyordu. Diğer sıkıntılar arasında, OpenGL 3.0 kullanmak için DirectX 10 seviye donanım gereksinimi ve temel özellikler olarak geometri gölgelendiricilerinin ve örnek oluşturmanın olmaması yer alıyordu.

Diğer kaynaklar, topluluk tepkisinin başlangıçta sunulduğu kadar şiddetli olmadığını bildirdi.[42] birçok satıcı güncelleme için destek gösteriyor.[43][44]

OpenGL 3.0

Yayın tarihi: 11 Ağustos 2008

OpenGL 3.0, API'nin gelecekteki revizyonlarını basitleştirmek için bir kullanımdan kaldırma mekanizması getirmiştir. Kullanımdan kaldırıldı olarak işaretlenen bazı özellikler, bir istekte bulunarak tamamen devre dışı bırakılabilir. ileriye uyumlu bağlam pencereleme sisteminden. OpenGL 3.0 özelliklerine bu kullanımdan kaldırılmış özelliklerin yanı sıra yine de erişilebilir, ancak bir tam bağlam.

Kullanımdan kaldırılan özellikler şunları içerir:

  • Tüm sabit işlevli köşe ve parça işleme
  • GlBegin ve glEnd kullanarak doğrudan mod oluşturma
  • Listeleri görüntüle
  • Dizine alınmış renk oluşturma hedefleri
  • OpenGL Gölgeleme Dili 1.10 ve 1.20 sürümleri

OpenGL 3.1

Yayın tarihi: 24 Mart 2009

OpenGL 3.1, geniş hatlar dışında sürüm 3.0'da kullanımdan kaldırılan tüm özellikleri tamamen kaldırdı. Bu sürümden itibaren, yeni özelliklere erişmek mümkün değildir. tam bağlamveya kullanımdan kaldırılan özelliklere erişmek için ileriye uyumlu bağlam. Uygulama, aşağıdaki koşulları desteklerse, önceki kurala bir istisna yapılır. ARB_compatibility uzantısı, ancak bu garanti edilmez.

OpenGL 3.2

Yayın tarihi: 3 Ağustos 2009

OpenGL 3.2, belirtimi bir kısma bölerek, OpenGL 3.0 tarafından sunulan kullanımdan kaldırma mekanizmaları üzerine daha da geliştirildi. çekirdek profil ve uyumluluk profili. Uyumluluk bağlamları, OpenGL 3.1 ile birlikte yayınlanan ARB_compatibility uzantısına eşdeğer olan önceden kaldırılmış sabit işlevli API'leri içerirken çekirdek bağlamlar içermez. OpenGL 3.2 ayrıca GLSL 1.50 sürümüne yükseltme içeriyordu.

OpenGL 4.0

Yayın tarihi: 11 Mart 2010

OpenGL 4.0, 3.3 sürümüyle birlikte piyasaya sürüldü. Direct3D 11'i destekleyebilen donanımlar için tasarlanmıştır.

OpenGL 3.0'da olduğu gibi, OpenGL'nin bu sürümü, Direct3D 11 sınıfı donanımın yeteneklerini tamamen açığa çıkarmak için tasarlanmış çok sayıda oldukça önemsiz uzantı içerir. Aşağıda yalnızca en etkili uzantılar listelenmiştir.

Donanım desteği: Nvidia GeForce 400 serisi ve daha yenisi, AMD Radeon HD 5000 Serisi ve daha yenisi (bazı TeraScale GPU'larda emülasyon yoluyla uygulanan FP64 gölgelendiriciler), Intel HD Grafikleri Intel'de Sarmaşık köprü işlemciler ve daha yeni.[45]

OpenGL 4.1

Yayın tarihi: 26 Temmuz 2010

Donanım desteği: Nvidia GeForce 400 serisi ve daha yenisi, AMD Radeon HD 5000 Serisi ve daha yenisi (bazı TeraScale GPU'larda emülasyon yoluyla uygulanan FP64 gölgelendiriciler), Intel HD Grafikleri Intel'de Sarmaşık köprü işlemciler ve daha yeni.[45]

  • GPU'nun bu spesifikasyonu uygulaması için minimum "maksimum doku boyutu" 16.384 × 16.384'tür.[46]

OpenGL 4.2

Yayın tarihi: 8 Ağustos 2011[31]

  • Atomik sayaçlara ve tek bir doku seviyesine kadar atomik okuma-değiştirme-yazma işlemlerine sahip gölgelendiriciler için destek
  • Karmaşık nesnelerin verimli bir şekilde yeniden konumlandırılmasını ve çoğaltılmasını sağlamak için GPU köşe işlemeden (mozaikleme dahil) yakalanan birden çok veri örneğini çizme
  • Önemli performans iyileştirmeleri için tüm dokuyu GPU'ya yeniden indirmek zorunda kalmadan sıkıştırılmış bir dokunun rastgele bir alt kümesini değiştirme desteği

Donanım desteği: Nvidia GeForce 400 serisi ve daha yenisi, AMD Radeon HD 5000 Serisi ve daha yenisi (bazı TeraScale GPU'larda emülasyon yoluyla uygulanan FP64 gölgelendiriciler) ve Intel HD Grafikleri Intel'de Haswell işlemciler ve daha yeni.[45] (Linux Mesa: Ivy Bridge ve daha yenisi)

OpenGL 4.3

Yayın tarihi: 6 Ağustos 2012[32]

  • Hesaplama gölgelendiricileri Grafik işlem hattı bağlamında GPU paralelliğinden yararlanma
  • Gölgelendirici depolama arabelleği nesneleri, gölgelendiricilerin 4.2'den görüntü yükleme / depolama gibi arabellek nesnelerini ancak işlev çağrıları yerine dil aracılığıyla okumasına ve yazmasına izin verir.
  • Görüntü biçimi parametre sorguları
  • ETC2 / EAC standart bir özellik olarak doku sıkıştırma
  • İle tam uyumluluk OpenGL ES 3.0 API'ler
  • Uygulama geliştirme sırasında hata ayıklama mesajlarını almak için hata ayıklama yetenekleri
  • Veri replikasyonu olmadan dokuları farklı şekillerde yorumlamak için doku görünümleri
  • Artırılmış bellek güvenliği ve çoklu uygulama sağlamlığı

Donanım desteği: AMD Radeon HD 5000 Serisi ve daha yenisi (bazı TeraScale GPU'larda emülasyon yoluyla uygulanan FP64 gölgelendiriciler), Intel HD Grafikleri Intel'de Haswell işlemciler ve daha yeni.[45] (Linux Mesa: Şablon tekstüre içermeyen Ivy Bridge, Haswell ve daha yenisi), Nvidia GeForce 400 serisi ve daha yeni.

OpenGL 4.4

Yayın tarihi: 22 Temmuz 2013[34]

  • Zorunlu arabellek nesnesi kullanım kontrolleri
  • Arabellek nesnelerine zaman uyumsuz sorgular
  • Gölgelendiricilerdeki arayüz değişkenlerinin daha fazla düzen kontrolünün ifadesi
  • Birden çok nesneyi aynı anda verimli bağlama

Donanım desteği: AMD Radeon HD 5000 Serisi ve daha yenisi (bazı TeraScale GPU'larda emülasyon yoluyla uygulanan FP64 gölgelendiriciler), Intel HD Grafikleri Intel'de Broadwell işlemciler ve daha yenisi (Linux Mesa: Haswell ve daha yenisi),[47] Nvidia GeForce 400 serisi ve daha yeni[48] Tegra K1.

OpenGL 4.5

Yayın tarihi: Ağustos 11, 2014[7][35]

  • Doğrudan Durum Erişimi (DSA) - nesne erişimcileri, artırılmış uygulama ve ara katman yazılımı verimliliği ve esnekliği için durumların, nesneleri bağlamlara bağlamadan sorgulanmasını ve değiştirilmesini sağlar.[49]
  • Flush Control - uygulamalar, bağlam değiştirmeden önce bekleyen komutların temizlenmesini kontrol edebilir - yüksek performanslı çok iş parçacıklı uygulamaları etkinleştirir;
  • Sağlamlık - çalışan diğer uygulamaları etkileyen bir GPU sıfırlamasının önlenmesi dahil olmak üzere WebGL tarayıcıları gibi uygulamalar için güvenli bir platform sağlamak;
  • OpenGL ES 3.1 API ve gölgelendirici uyumluluğu - masaüstü sistemlerde en yeni OpenGL ES uygulamalarının kolayca geliştirilmesini ve yürütülmesini sağlamak için.

Donanım desteği: AMD Radeon HD 5000 Serisi ve daha yenisi (bazı TeraScale GPU'larda emülasyon yoluyla uygulanan FP64 gölgelendiriciler), Intel HD Grafikleri Intel'de Broadwell işlemciler ve daha yenisi (Linux Mesa: Haswell ve daha yenisi), Nvidia GeForce 400 serisi ve daha yeni[48] Tegra K1 ve Tegra X1.[50][51]

OpenGL 4.6

Yayın tarihi: 31 Temmuz 2017[7][36][37]

Donanım desteği: AMD Radeon HD 5000 Serisi ve daha yeni (bazı TeraScale GPU'larda emülasyon yoluyla uygulanan FP64 gölgelendiriciler), Intel Haswell ve daha yenisi, Nvidia GeForce 400 serisi ve daha yeni.[48]

Sürücü desteği:

  • Mesa 19.2 üzerinde Linux Intel Broadwell ve daha yenisi için OpenGL 4.6'yı destekler.[52] Mesa 20.0, AMD Radeon GPU'ları destekler,[53] Nvidia Kepler + desteği devam ederken.
  • AMD Adrenalin 18.4.1 Grafik Sürücüsü açık Windows 7 SP1, 10 AMD Radeon ™ HD 7700+, HD 8500+ ve daha yenisi için sürüm 1803 (Nisan 2018 güncellemesi). Nisan 2018'de yayınlandı.[54][55]
  • Intel 26.20.100.6861 grafik sürücüsü açık Windows 10. Mayıs 2019'da yayınlandı.[56][57]
  • NVIDIA GeForce 397.31 Grafik Sürücüsü açık Windows 7, 8, 10 x86-64 sadece biraz, hayır 32 bit destek. Nisan 2018'de yayınlandı[58]

Alternatif uygulamalar

elma kullanımdan kaldırıldı İOS 12 ve macOS 10.14 Mojave'de OpenGL lehine Metal, ancak yine de macOS 10.15'ten itibaren çalışıyor. OpenGL için desteklenen en son sürüm, 2011'den itibaren 4.1'dir.[59][60] Molten'dan tescilli bir kitaplık - yazarları MoltenVK - MoltenGL olarak adlandırılan, OpenGL çağrılarını Metal'e çevirebilir.[61]

Mesa3D, açık kaynaklı bir grafik kitaplığı, bir Çinko OpenGL çağrılarını Vulkan çağrılarına çevirmek için sürücü, böylece yalnızca Vulkan aygıtları masaüstü OpenGL'yi işleyebilir.[62]

Vulkan

Daha önce "Yeni Nesil OpenGL Girişimi" (glNext) olarak adlandırılan Vulkan,[63][64] OpenGL ve OpenGL ES'yi mevcut OpenGL sürümleriyle geriye doğru uyumlu olmayacak tek bir ortak API'de birleştirmek için temelde yeniden tasarlama çabasıdır.[65][66][67]

Vulkan API'nin ilk sürümü 16 Şubat 2016'da yayınlandı.

Ayrıca bakınız

Referanslar

  1. ^ Lextrait, Vincent (Ocak 2010). "Programlama Dilleri İşaretçisi, v10.0". Arşivlenen orijinal 30 Mayıs 2012. Alındı 14 Mart, 2010.
  2. ^ "Ürünler: Yazılım: OpenGL: Lisanslama ve Logolar". SGI. Arşivlenen orijinal 1 Kasım 2012. Alındı 7 Kasım 2012.
  3. ^ "OpenGL Grafik Sistemi: Bir Spesifikasyon" (PDF). 4.0 (Çekirdek Profil). 11 Mart 2010.
  4. ^ "SGI - OpenGL'ye Genel Bakış". Arşivlendi 31 Ekim 2004 tarihli orjinalinden. Alındı 16 Şubat 2007.
  5. ^ Peddie, Jon (Temmuz 2012). "En Güzel Kim?". Bilgisayar Grafik Dünyası. Alındı 30 Mayıs 2018.
  6. ^ "Khronos Üyeliğine Genel Bakış ve SSS". Khronos.org. Alındı 7 Kasım 2012.
  7. ^ a b c d "Khronos OpenGL Kaydı". Khronos Grubu. Alındı 31 Temmuz 2017.
  8. ^ "NV_half_float". OpenGL Kaydı. Khronos Grubu.
  9. ^ "Khronos API Uzantıları Nasıl Oluşturulur". Khronos Grubu. Alındı 31 Temmuz 2017.
  10. ^ "GLUT alternatiflerinin listesi". Khronos Grubu. Alındı 2 Mayıs, 2013.
  11. ^ "İlgili araç setleri ve API'ler". www.opengl.org. OpenGL. Alındı 8 Ekim 2014.
  12. ^ "IRIS GL, SGI'nın mülkü".
  13. ^ "OpenGL ARB'nin Oluşturulması". Arşivlenen orijinal 22 Şubat 2007. Alındı 16 Şubat 2007.
  14. ^ "OpenGL ++ Sonu". Khronos Grubu.
  15. ^ "En İyi Oyun Geliştiricileri OpenGL'yi Aktif Şekilde Desteklemek İçin Microsoft'u Arıyor". Gelecek nesil. Hayır. 32. Medyayı hayal edin. Ağustos 1997. s. 17.
  16. ^ "Fahrenheit Duyurusu". Arşivlenen orijinal 27 Eylül 2007.
  17. ^ "Fahrenheit Üyeleri. 1998". Computergram International. 1998. Arşivlenen orijinal 5 Ekim 2007.
  18. ^ "Fahrenheit Sonu".
  19. ^ "OpenGL ARB, OpenGL spesifikasyonunun kontrolünü Khronos Group'a geçirmek için". Khronos basın açıklaması. 31 Temmuz 2006.
  20. ^ "OpenGL ARB, OpenGL Spesifikasyonunun Kontrolünü Khronos Grubuna Geçecek". AccessMyLibrary Arşivi.
  21. ^ Smith, Ryan (5 Haziran 2018). "Apple Tüm İşletim Sistemlerinde OpenGL'yi Kullanımdan Kaldırıyor; Geliştiricileri Metal Kullanmaya Teşvik Ediyor". www.anandtech.com. Satın Al. Alındı 5 Haziran 2018.
  22. ^ Astle, Dave (1 Nisan 2003). "Windows için OpenGL 1.1'in Ötesine Geçmek". gamedev.net. Alındı 15 Kasım 2007.
  23. ^ Isorna, J.M. (2015). Simulación visual de materiales: teoría, técnicas, análisis de casos. UPC Grau. Arquitectura, urbanisme i edificació (İspanyolca). Universitat Politècnica de Catalunya. s. 191. ISBN  978-84-9880-564-2. Alındı 21 Ağustos, 2019.
  24. ^ a b c "OpenGL Grafik Sistemi: Bir Spesifikasyon" (PDF). 2.1. 1 Aralık 2006.
  25. ^ "Point Primitive".
  26. ^ "OpenGL Grafik Sistemi: Bir Spesifikasyon" (PDF). 3.0. 23 Eylül 2008.
  27. ^ "OpenGL Grafik Sistemi: Bir Spesifikasyon" (PDF). 3.1. 28 Mayıs 2009.
  28. ^ "OpenGL Grafik Sistemi: Bir Spesifikasyon" (PDF). 3.2 (Çekirdek Profil). 7 Aralık 2009.
  29. ^ "Khronos OpenGL 4.0 ile Son Teknoloji, Çapraz Platform Grafik Hızlandırmasını Ortaya Çıkarıyor".
  30. ^ "Khronos, OpenGL 4.1 Spesifikasyonunun Yayınlanmasıyla Platformlar Arası 3D Grafiklerin Gelişimini Yönetiyor".
  31. ^ a b "Khronos, OpenGL 4.2 Spesifikasyonunun Yayınlanmasıyla Çapraz Platform 3D Grafiklerini Zenginleştiriyor".
  32. ^ a b "Khronos, Büyük Geliştirmelerle OpenGL 4.3 Spesifikasyonunu Yayınladı".
  33. ^ "Khronos, Büyük Geliştirmelerle OpenGL 4.3 Spesifikasyonunu Yayınladı".
  34. ^ a b c "Khronos OpenGL 4.4 Spesifikasyonunu Yayınladı".
  35. ^ a b "Khronos Group OpenGL Ekosistemindeki Önemli Gelişmeleri Duyurdu - Khronos Group Basın Bülteni". Khronos Group Inc. Alındı 17 Nisan 2015.
  36. ^ a b "Khronos, SPIR-V Destekli OpenGL 4.6'yı Piyasaya Sürüyor". Khronos Group Inc. Alındı 31 Temmuz 2017.
  37. ^ a b Kessenich, John; Baldwin, Dave. "OpenGL® Gölgeleme Dili, Sürüm 4.60.7". Khronos Group Inc. Alındı 21 Ağustos, 2019.
  38. ^ Abi-Chahla, Fedy (16 Eylül 2008). "OpenGL 3 (3DLabs ve OpenGL’nin Gelişimi)". Tom'un Donanımı. Alındı 24 Ekim 2010.
  39. ^ "OpenGL Grafik Sistemi: Bir Spesifikasyon" (PDF). 2.0. 22 Ekim 2004.
  40. ^ "OpenGL ARB, OpenGL 3.0'da bir güncelleme duyurdu". 30 Ekim 2007. Alındı 31 Ekim, 2007.
  41. ^ "OpenGL 3.0 Yayınlandı, Geliştiriciler Öfkeli - Slashdot". Tech.slashdot.org. Alındı 7 Kasım 2012.
  42. ^ "OpenGL BOF iyi geçti, çatallar görülmedi".
  43. ^ "Yüksek Performanslı Grafikler için Endüstri Standardı". OpenGL. 18 Ağustos 2008. Alındı 31 Temmuz 2017.
  44. ^ "NVIDIA artık erken OpenGL 3.0 sürücüsü sağlıyor".
  45. ^ a b c d "Windows 7/8 / 8.1 64bit için Intel Iris ve HD Grafik Sürücüsü". Intel İndirme Merkezi. Arşivlenen orijinal 2 Nisan 2015.
  46. ^ "Beklenen maksimum doku boyutu - Grafikler ve GPU Programlama". GameDev.net.
  47. ^ "Intel Skylake-S CPU'lar ve Görünür Sızıntıyla Ayrıntılı Olarak Ayrıntılı Olan 100 Serisi Chipsetler". NDTV Aygıtları. 17 Nisan 2015.
  48. ^ a b c Michael Larabel (31 Temmuz 2017). "NVIDIA, OpenGL 4.6 Desteği ile 381.26.11 Linux Sürücüsünü Piyasaya Sürüyor". Phoronix.
  49. ^ "Direct3D'nin en iyi özelliklerinden biriyle OpenGL 4.5 yayınlandı". Ars Technica. Alındı 17 Nisan 2015.
  50. ^ "SG4121: NVIDIA GPU'lar için OpenGL Güncellemesi". Ustream. Arşivlenen orijinal 17 Mayıs 2015. Alındı 17 Nisan 2015.
  51. ^ Kilgard, Mark. "NVIDIA GPU'lar için OpenGL 4.5 Güncellemesi". Alındı 17 Nisan 2015.
  52. ^ Michael Larabel (21 Ağustos 2019). "Intel'in OpenGL Linux Sürücüsü Artık Mesa 19.2 İçin OpenGL 4.6 Desteğine Sahip". Phoronix.
  53. ^ Michael Larabel (27 Kasım 2019). "AMD'nin RadeonSI Sürücüsü Nihayet OpenGL 4.6'yı Etkinleştiriyor". Phoronix.
  54. ^ "AMD Adrenalin 18.4.1 Grafik Sürücüsü Çıktı (OpenGL 4.6, Vulkan 1.1.70) - Geeks3D". www.geeks3d.com. Alındı 10 Mayıs, 2018.
  55. ^ "Radeon ™ Software Adrenalin Edition 18.4.1 Sürüm Notları". support.amd.com. Alındı 10 Mayıs, 2018.
  56. ^ "Intel Grafik Sürücüsü 25.20.100.6861 Yayınlandı (OpenGL 4.6 + Vulkan 1.1.103) | Geeks3D". Alındı 16 Mayıs 2019.
  57. ^ "Windows® 10 DCH Sürücüleri". Intel DownloadCenter. Alındı 21 Ağustos, 2019.
  58. ^ "NVIDIA GeForce 397.31 Grafik Sürücüsü Çıktı (OpenGL 4.6, Vulkan 1.1, RTX, CUDA 9.2) - Geeks3D". www.geeks3d.com. Alındı 10 Mayıs, 2018.
  59. ^ Cunningham, Andrew (7 Ekim 2019). "macOS 10.15 Catalina: The Ars Technica incelemesi". Ars Technica.
  60. ^ Axon, Samuel (6 Haziran 2018). "OpenGL desteğinin sonu ve ayrıca Apple'ın açılış konuşmasında paylaşmadığı diğer güncellemeler". Ars Technica. Alındı 19 Ekim 2020.
  61. ^ "İOS ve macOS'ta Vulkan ve daha hızlı OpenGL ES". Erimiş. Alındı 19 Ekim 2020.
  62. ^ "Çinko". Mesa 3D Grafik Kitaplığı en son belgeleri.
  63. ^ Dingman, Hayden (3 Mart 2015). "DirectX 12'yi hedefleyen güçlü, platformdan bağımsız oyun teknolojisi Vulkan ile tanışın". bilgisayar Dünyası. Alındı 3 Mart, 2015.
  64. ^ Bright, Peter (3 Mart 2015). "Khronos, Vulkan'ı tanıttı: Modern sistemler için tasarlanmış OpenGL". Ars Technica. Alındı 3 Mart, 2015.
  65. ^ "Khronos Yeni Nesil OpenGL Girişimini Duyurdu". AnandTech. Alındı 20 Ağustos 2014.
  66. ^ "OpenGL 4.5 yayınlandı, yeni nesil OpenGL tanıtıldı: Platformlar arası Mantle katili, DX12 rakibi". Alındı 20 Ağustos 2014.
  67. ^ "Khronos OpenGL-Next Hakkında Slaytlarını Yayınladı". Phoronix. Alındı 22 Ağustos 2014.

daha fazla okuma

Dış bağlantılar