Soru & Cevap

OpenGL Es 3d Oyun Pogramlama ...

24.10.2014 - 01:37

Merhaba,

Android'de OpenGl ile 3d bir oyun programlayacağım. OpenGl ile ilgili araştırma yapıyorum. Web sayfalarında yazanlardan farklı bilgiler edineceğimi düşündüğüm için buraya yazıyorum. Bir kaç cümle ile OpenGl hakkında bilgi verir misiniz? Mesela anlamadığım bir nokta şu:

OpenGl bir oyun motoru değil. O zaman OpenGl ile beraber bir motor kullanmam gerekiyor mu? Yoksa bu motoru ben OpenGL ile mi oluşturacağım?

Yardım ederseniz sevinirim. Teşekkürler.

54 Görüntülenme

1 Cevap

Sitedeki sorulara cevap verebilmek için giriş yapın ya da üye olun.

picture-28061-1410449897.png
can.tecim
25.10.2014 - 05:45

Öncelikle, kavramları baştan almak gerekirse,

OpenGL bir grafik kütüphanesidir. OpenGL ES(mobil sistemlerde bulunan) ise OpenGL kütüphanesinin gömülü sistemler yani mobil cihazlar gibi sistemler için tasarlanan bir alt kümedir.

Peki grafik kütüphanesi nedir ? Grafik kütüphaneleri grafik donanımlarının yazılımsal katmanlarını kontrol ederek çalışılan cihaz üzerinde grafikler(Aslında masaüstü bilgisayarlardan, mobil cihazlara kadar tüm ekranda gördüğünüz öğeler bir grafik kütüphanesi tarafından çizilir) oluşturmaya yarar. Her sistem genel olarak sistemin desteklediği UI elemanlarını çizmek ve yönetmek için kendi gömülü grafik kütüphanesini zaten barındırır. Fakat bu kütüphaneler ekstra performans gerektiren işlevler için dizayn edilmemiştir. Burada DirectX, OpenGL gibi direk olarak bu iş için dizayn edilen kütüphaneler devreye girer. DirectX'i Windows sistemlerden hatırlarsınız.

Oyun motoruna gelicek olursak, bir oyunun yürütülebilmesi için çeşitli prensipler vardır. Bunlar oyun için girişleri kontrol etmek(User inputs), oyun döngüsü(Game loop), oyunda kullanılacak modelleri oluşturma(Modelling), Yapay Zeka(Artificial Intelligence) vb.. gibi prensiplerdir. Bu prensipler her platform veya programcıya göre istenildiği tarzda programlanabilir. İşte oyun motoru dediğimiz yazılım burada devreye giriyor. Tüm bu prensipleri kendi tarzıyla yönetip bizim sadece onun prensiplerine uyarak oyun yazmamızı sağlayan çatılar. Genelde tüm oyun motorlarının bir editörü vardır ve bu editör aracılığıyla oyun motorunun anlayacağı şekilde oyunu dizayn ederiz. Oyun motoru hedef platform(mesela android veya ios) için bize aracılık edip oyun motorunun kendi dilinde yazdığımız oyunu bu platformlarda inşa ederek bizi bu prensipleri tasarlayıp yazmaktan kurtarır. Bir çok yoğun işi üzerimizden alır.

Büyük çaplı oyun motorları kendi işlerine uygun olucak bir veya daha fazla yazılım dili seçerler ve programlamayı bu dil ile yapmamızı ister. Programlamayı oluşturduktan sonra oyun motorunun anlıyacağı dilde bir projemiz olmuş olur. Bu projeyi cross-platform(çarpraz platform yani birden fazla platformda çalışma) olarak inşa etme işini kendileri yaparlar. Tabi bunun bize avantajı her platformun kendi dilinde oyunu tekrardan yazmak yerine oyun motorunun sağladı bu avantajlar sayesinde işimizi single-codebase(tek bir kod yapısı) ile bir çok platformda oyun geliştirebilir olmamızdır. Buna rağmen platform bazlı ufak tefek kod optimizasyonları yapmamız gerekebilir. İşte tüm bu avantajları sağlayan kurgulayan sistemede oyun motoru diyoruz.