Plazma sayı 3, sayfa 99
Sayfanın metni

Sayfa 99

OpenGL, Direct3D gibi kütüphaneler ekran kartının en temel özelliklerini kullanmanızı sağlayan son derece “alt düzey” kütüphanelerdir. glBegin(GL_TRIANGLES)’larla, d3dDevice->SetTransform(D3DTS_WORLD, &matrix)’lerle demo yazmaya çalışmanın, kanımca tamamen assembly kullanmaktan çok farkı yoktur.

Bir obje çevirme işi için Direct3D’de üç fonksiyon, Ekrana bir sprite çizmek için OpenGL’de ondan fazla fonksiyon çağırmak abesliktir. Bu kütüphaneler zaten kendilerini olduk olmadık yerlerde çağırmayacağınız düşüncesi ile tasarlanmışlardır. Size sunduğu fonksiyonların amacı kendi grafik kütüphanenizin yapı taşlarını oluşturmaktır.

Dolayısıyla bu alt düzey kütüphaneleri daha verimli kullanmanızı sağlayacak, onları “wrap” edecek bir üst düzey sistem tasarlamalısınız. Bu sistem de en basit şekilde birçok global fonksiyondan oluşan basit bir kütüphane olacak.

Bu kütüphanenin ana işlevi, demolarınızı yazarken sık kullanacağınız çizim işlemlerini size tek fonksiyonla sağlamak olacak. Bunun yanı sıra doku, obje gibi sık kullanacağınız tipleri tanımlamak da yararlı olacaktır.

DrawSprite(logo, logoCercevesi) ;

Rotate(5.0f * time, 0.0f, 1.0f, 0.0f) ;

RenderState state = Renderer::Texture | Renderer::DepthTest ;

DrawMesh(kup, state) ;

Motorun bu kısmı, “grafik programlama” yapacağınız belki de yegane yer olacak. Çizim kütüphanelerinin size sunduğu imkanların dışına çıkmamak için hiçbir sebebiniz olmayacak. Kendi renk sınıflarınızı oluşturabilir, bunların kendi aralarında ilginç birleşme kurallarını belirleyebilirsiniz. Mesh manipülasyonundan başlayıp dokular üzerinde görüntü işleme gibi ufuklara yelken açabilirsiniz.

Demo Motoru Üzerine Son Sözler

Eğer bu üç ana kısmı hakkıyla bitirip yanına ek kütüphanelerle müzik çalmayı da eklerseniz ortalamanın epey üzerinde bir demo sistemine sahip olacaksınız. Bu sistemi kullanarak yaptığınız demolar, sıfırdan kodlanan demolardan çok daha az zaman alacaktır. Dahası işin teknik ayrıntıları yerine direk demoya odaklanacağınız için ortaya çıkacak ürünler de daha kaliteli olacaklardır.

Demo motoru bir kez yazıp ölene kadar kullanacağınız bir sistem değildir. Daha doğrusu, hiçbir sistemin tüm zamanlara uygun olma gibi bir özelliği olamaz. Siz kendinizi geliştirdikçe motorunuzu da geliştirecek; daha hızlı, daha esnek ve daha güçlü hale getireceksiniz. Özellikle renderer diye bahsettiğimiz kısım üzerinde belki demolar kadar vakit harcamanız gerekebilir. Siz tam kıvamında bir çizim kütüphanesi yazsanız bile, teknoloji sizden hızlı gideceği için bu kısmı yenileme ihtiyacı duyacaksınız. Ama tecrübelerim ile söyleyebilirim ki; yeni bir demoda, hem motora hem demoya ayıracağınız toplam süre, ilk demonuz için harcadığınız süreyle kıyaslanamayacak kadar kısa olacak.

Klavyeyle gezinmek için ← ve → tuşları.