OpenGL
Geçtiğimiz hafta DirectX teknolojisine yüzeysel olarak –sizleri sıkmamaya özen göstererek- değinmeye çalışmıştım. Bu hafta da aynı şekilde teknik detaylara inmeden OpenGL’i irdelemeye çalışacağım. Ancak bu sefer yalnız değilim. Yazıyı hazırlarken yaptığım araştırmalar sırasında ricalarımı hiç tereddüt etmeden kabul eden Türkiye’nin ilk üç boyutlu gerçek zamanlı strateji oyunu projesi Civilization Of Ottoman’da proje yöneticisi ve yazılım geliştiricisi olarak görev yapan Gürcan Serbest’in sorularıma verdiği cevapları da yazının içinde bulabileceksiniz.
OpenGL
OpenGL’i basitçe, ‘iki ya da üç boyutlu grafikleri çizmeye yarayan uygulama geliştirme arayüzüdür’ şeklinde tanımlayabiliriz. İki ya da üç boyutlu grafikleri çizebilmesi açısından DirectX’e benzese de Windows’un dışında Linux ve MacOS içinde ücretsiz olarak kullanılabilir olma özelliği ile DirectX’ten ayrılır. OpenGL basit ilkelerden karmaşık üç boyutlu sahneler çizebilen 700’ün üzerinde fonksiyondan oluşur. 1992’de çıkan ilk sürümünden bu yana OpenGL, sanal gerçekçilik, bilimsel görselleştirmeler, uçuş simülasyonları ve video oyunlarında bolca kullanılmıştır. OpenGL teknolojisi, Khronos Group adındaki kar amacı gütmeyen bir birlik tarafından yönetilmektedir. Bu birliğe Apple, Google, Nokia, Sony, Intel, AMD, Nvidia, IBM gibi devlerin de aralarında bulunduğu yüze yakın firma üyedir. En büyük rakip DirectX’in sahibi Microsoft ise tahmin edileceği üzere bu birliğe üye olmamıştır.
Kütüphanenin Tarih Bölümü
1990’ların başında Silicon Graphics(SGI) üç boyutlu grafik piyasasının lideri durumundadır. SGI, o yıllarda standartlara dayalı PHIGS’ı gölgeleyen IRISGL’yi geliştirir. IRISGL ani renderlama modunu içerdiğinden dolayı ilgili kesimlerce çabucak kabul görür. Bunun yanında PHIGS ise işlevsellik açısından kullanımı zor ve modası geçmiş kabul edilir. Her şeye rağmen 1990’ların en popüler 3D API’si olan PHIGS, OpenGL’nin yükselişine de zemin hazırlamıştır.
SGI’nın rakipleri (Hewlett Packard, IBM, Sun MicroSystems vs…) PHIGS standartlarını destekleyen 3D donanımlarını piyasaya sürerler. SGI’nın pazar payını kaybetmeye başlamasında 3D donanım üreticilerinin pazara girmelerinin büyük oranda etkisi olmuştur. SGI bunun üzerine pazarı etkilemeye yönelik olarak IRISGL API’sini açmaya karar verir. Ancak daha sonra kendisi bu kararı, lisans ve patent durumlarına aykırı olabileceği gerekçesiyle uygun bulmaz. (Ayrıca IRISGL’nin üç boyutlu grafiklere uygun olmayan API’leri vardı). Çok sayıda yazılım müşterisi olan SGI, IrısGL’yi OpenGL olarak değiştirip, OpenGL pazarda olgunlaşırken, rakiplerin müşterilerini birkaç yıllığına SGI’da tutmayı planlar. Bu sırada da eski IrısGL müşterilerine destek vermeyi de sürdürecektir.
Sonuç olarak SGI, OpenGL standardını çıkartır. 1992’de OpenGL inceleme kurulu kurulur ve bu kurul OpenGL’yi korumak ve genişletmek adına çalışmaya başlar.
Grafik donanımı bir özelliği desteklemediğinde, söz konusu uygulamada o özelliği kullanamaz. OpenGL donanım tarafından desteklenmeyen özellikler için yazılım desteği sağlayarak, bu sorunu çözer ve nispeten daha düşük güçte çalışan bilgisayarlarda gelişmiş grafikleri kullanan uygulamaların çalışmasına da izin verir.
Microsoft 1995’te Direct3D ile OpenGL’nin en büyük rakibi olur. 17 Aralık 1997’de Microsoft ile SGI Direct3D ile OpenGL’i birleştirme kararı alıp ‘Fahrenheit’ projesini başlatırlar. Ancak Microsoft stratejik nedenlerden, SGI ise maddi sebeplerden dolayı geri adım atar ve proje 1999’da iptal olur.
31 Temmuz 2006’ya gelindiğinde OpenGL’nin kontrolünün artık -yazının başında belirttiğim- Khronos Group’ta olacağı SIGGRAPH’da (Grafik Yazılım Konferansında) duyurulur.
OpenGL ES
OpenGL ES, PDA, mobil telefonlar, video oyun konsolları gibi sistemler için tasarlanmıştır. Diğer bir ifade ile masaüstü bilgisayarlar dışındaki sistemler için uyarlanan OpenGL’in bir koludur. Aynı OpenGL gibi Khronos Group tarafından yönetilir.
OpenGL ES’in ilk versiyonuyla birlikte Android ve Symbian işletim sistemleri için 3D graphics API’si resmi olarak çıkmıştır. Ayrıca ilk sürümün bir diğer önemli –belki de en önemli- özelliği PlayStation 3 için de destekleniyor olmasıdır. İkinci sürümüyle beraber iPad, iPhone 3GS ve üzeri, iPod Touch ürünleri desteklenmeye başlanmıştır. Blackberry ile Samsung’un bir çok telefonuna da destek gelmiştir. Nokia tarafında ise, Nokia N8 akıllı telefonu ile Maemo işletim sistemli N900 listeye alınmıştır.
Uzun süredir güncellenmeyen OpenGL ES’in ‘Haiti’ kod adlı v3.0 sürümü içinse OpenGL’in 20. Yıldönümünde çıkabileceği belirtiliyor.
Gürcan Serbest’le OpenGL…
OpenGL ilk gününden bu yana çeşitli sürümleri ile geliştiricilerin karşısına çıktı. Her sürümde çağ atlayan yenilikleri ile bugünkü haline geldi. DirectX’in üstünlüğünü yıkmak için canla başla savaştı. Zaman zaman öne geçtiği tarafları olsa da genelde DirectX’in ve doğal olarak Microsoft’un baskısı altında kaldı.
Tolga CANATAN: DirectX her zaman bir adım önde olarak görülür… Bir geliştiricinin gözünden bunun sebebini açıklayabilir misiniz?
Gürcan SERBEST : Bir geliştirici olarak benim için DirectX’in OpenGL’den daha iyi API’lere sahip olması ve kendisini sürekli geliştirmesinin yanında, DirectX’e daha fazla üretici desteği verilmesi onu her zaman bir adım önde tutar. Dünya’nın en çok kullanılan işletim sistemi olan Windows’un DirectX’in grafik sürücülerine daha iyi destek vermesi önemli bir unsurdur.
OpenGL’in getirdiği özelliklerin bir kısmı DirectX’in gerisinde kalsa da, kimi teknolojilere bakacak olursak DirectX’ten pek de bir farkı yok. Pixel Shader’da buna iyi bir örnek olarak gösterilebilir.
T.C: DirectX 11’e karşılık OpenGL 4.0 var ve ikiside Pixel Shader 5.0 destekliyor. OpenGL artık DirectX’e kafa tutabiliyor mu?
G.S: OpenGL’in gelişmesinin DirectX’e göre daha yavaş olduğu doğrudur fakat OpenGL bugüne kadar her yeni versiyonunda çığır açacak özelliklerle gelmiştir. OpenGL’in hali hazırda DirectX 11’e göre teknik üstünlükleri mevcuttur tabi fakat burada kolay öğrenebilme, kaynağa erişim sunulan imkanlar ve API’ye olan destek konusu gibi tam olarak teknik olmayan konularda işin içine girdiğinde OpenGL’in maalesef DirectX’e kafa tutamadığını düşünüyorum.
OpenGL’in rekabet edebilme açısından şüphesiz ki en güçlü silahlarından birisi de açık kaynaklı olmasıdır. Bir sıralama yapacak olursak da, bunun ardından OpenGL’in çeşitli platformlara aynı anda verdiği destek gelir.
T.C: OpenGL’in açık kaynaklı olması bir avantaj gibi gözükse de Windows tabanında hala ilk tercih DirectX gibi gözüküyor. Siz bu konuda ne düşünüyorsunuz?
G.S: Windows’un DirectX grafik sürücülerine daha iyi bir destek vermesi bu tercihi tetikliyor. Ayrıca üreticiler şu an için DirectX’e OpenGL’e oranla daha çok destek veriyorlar. Ayrıca sunduğu API’ler tarafında grafik programcılarının işlerini çok daha kolaylaştırdığını ve üreticilerin verdiği destekle grafik programcıların bilgiye daha hızlı ulaştığını unutmamak gerekir.
Oyuncuların gözünden DirectX ya da OpenGL olmasının pek bir önemi olmayabilir, ancak geliştiricilerin tarafından bakıldığında durum değişiyor. Hangisini nerede tercih edeceğiniz çok önemli. Bakalım bir oyun geliştiricisi olarak Gürcan Serbest bu konuda ne düşünüyor…
T.C: OpenGL ya da DirectX…Hangisinden nasıl faydalanacağınıza karar verirken sizi en çok neler etkiler?
G.S: Öncelikle oyunun çalışmasının hedeflendiği platformlar tabi ki bu konularda önemli bir rol tutuyor. Windows için bir oyun geliştiriliyorsa sunulan daha fazla destek ve api’den dolayı DirectX tercih edilir. Hedef platform’un seçilecek kütüphaneye sağladığı desteğin seçim konusunda en önemli unsur olarak görüyorum. Ayrıca öğrenim kolaylığı bilgiye hızlı ulaşım sunulan imkanlar oyun geliştirme maaliyetlerinin düşürülmesindede bir faktör teşkil ediyor.
Konsollara dönecek olursak, OpenGL’i en çok kullanan konsol tahmin edebileceğiniz üzere Microsoft ürünü değil. Playstation OpenGL’in geliştirilmesine büyük destek veriyor. Nitekim Sony firması OpenGL’in geliştirilmesinden sorumlu olan Khronos Group’un da üyesi durumunda.
T.C: Konsollarda (özellikle PS3’te) OpenGL’in konumunu nasıl görüyorsunuz?
G.S: DirectX sonuçta rakip firmanın ürünüdür. Bu konuda Sony kozlarını Microsoft’a kaptırmamak için OpenGL’i desteklemeye ve güçlenmesine katkıda bulunmaya devam edecektir inancındayım.
‘Oyun’ denildiği zaman akla ilk gelen donanım parçası ‘ekran kartı’dır. Ekran kartı üreticilerinden iki dev firma Nvidia ve AMD OpenGL’e tam destek veriyor.
T.C: Ekran kartı üreten firmalar arasındaki rekabet her geçen gün kızışıyor. Sizce OpenGL’de bu rekabetten payını alıyor mu?
G.S: OpenGL bu rekabetten tabi ki payını alıyor. Üretici firmalar her geçen gün OpenGL’e daha fazla destek veriyor çünkü hala OpenGL’in DirectX’e göre yatsınamaz bir platform üstünlüğü var. Birçok platform hala OpenGL kullanıyor. Fakat üretici firmalar popüler olana daha çok destek verdiği için maalesef DirectX kadar bu rekabetten hakkıyla payını alamıyor.
Teknik konulardan uzak olup OpenGL’in yapısını ya da işleyişini yüzeysel olarak dahi anlayamamak normaldir. Önemini kavramak isteyip de teknik bilgiden uzak durmayı tercih eden ‘oyuncular’ olacaktır. İşte o ‘oyuncular’ için basit bir tanım…
T.C: Size 10 yaşındaki bir çocuk ‘OpenGL nedir?’ diye sorsa, ona yapacağınız açıklama ne olurdu ? Bize OpenGL’i basit bir örnekle açıklayabilir misiniz?
G.S: Oyuncaklarının dolu olduğu raflı bir dolaba benzetmek sanıyorum en düzgün tanım olur. OpenGL, kullanmak istediğiniz oyuncakları sizin için saklayan ve bu oyuncakların kullanım kontrollerini içeren akıllı bir dolaptır diyebilirim.
1990’larda oyun oynamaya başlayıp da, günümüze kadar DirectX ya da OpenGL ile karşılaşmamak mümkün değil. Bir şekilde, bir yerlerden oyuncuların hayatına girmiştir bu iki teknoloji. Peki ya hiç girmemiş olsalardı?
T.C: DirectX ya da OpenGL ile hiç tanışmamış olsaydık, oyun sektörü ne durumda olurdu?
G.S: Birileri çıkar ve mutlaka başka bir kütüphane’yi bizlere sunardı. Bu kütüphane belki şu anın -+ 10 yıl olabilirdi. Ama şu an geldiğimiz seviyeye geleceğimizinden şüphem yok. Donanım üreticilerinin donanımlarını satması için daha güçlü ürünler ve bu ürünleri kullanacak yazılımlar şart.
OpenGL yıllardır geliştirilmeye devam ediliyor. Microsoft’un çok iyi pazarladığı DirectX’in altında kalmamak için devamlı güncelleniyor. Öyle görünüyorki, aralarındaki bu sıkı rekabet yıllar boyu da devam edecek
T.C: John Carmack geçen yıl DirectX’in OpenGL’den daha iyi API’lere sahip olduğunu ve kendisini sürekli geliştirdiğini söylemişti. Siz OpenGL’in ve DirectX’in geleceğini nasıl görüyorsunuz?
GS:Donanımlar gittikçe daha da güçleniyor. Grafik kütüphanelerinin gelişmesinde de donanım üreticilerinin verdiği destek önemli bir unsur teşkil ediyor. Maalesef günümüzde üreticiler popüler olan kütüphaneye daha fazla destek veriyorlar. Şu an için popüler olan DirectX. Bu popülaritede Microsoft’un önemli silahları, pazarlama stratejileri ve bazı teknik konular göz ardı edilmemelidir. Fakat gelecek için geleceğin oyun platformlarına bakmamız gerekiyor. Geleceğin oyun platformları konsollar mı, cep telefonları mı, tabletler mi yoksa smart TV’ler mi bunları iyi kestirmek gerekiyor.
Düşüncem, gelecekte bu rekabeti platform üreticilerinin belirleyeceği yönündedir. Ayrıca işin teknik tarafından ziyade, Microsoft’un pazarlama tarafındaki başarısından dolayı orta vadede DirectX’in daha dominant olacağını düşünüyorum. OpenGL multiplatform bir kütüphane olduğu için ise önemini yitirmeyecektir. Fakat uzun vadede olurda başka bir işletim sistemi üreticisi firma Microsoft’tan daha popüler olursa bu rekabeti kendi çıkarları doğrultusunda hangi yönde şekillendirir bunu maalesef söyleyemiyorum.
OpenGL ya da DirectX… İki teknoloji de oyun severler için çok büyük önem arz ediyor. Onlar kimileri için etle tırnak gibi ayrılmaz bir bütünken, kimileri içinse asla bir araya gelemeyecek iki büyük rakip. Yıllar OpenGL’i DirectX’in karşısında biraz daha güçlendirmeyi başardı. Bakalım OpenGL, önümüzdeki dönemlerde de bu ilerleyişini sürdürüp DirectX’e sağlam bir darbe indirebilecek mi?
-Katkılarından dolayı sevgili Gürcan Serbest’e sonsuz teşekkürler…