DirectX'e Giriş

DirectX'e Giriş

Bu yazımızda DirectX'e ufak bir giriş yapacağız ve ön bilgiler vermeye çalışacağım. DirectX Microsoft tarafında geliştirilen multimedia uygulamalar geliştirmek için kullanılan güçlü bir kütüphanedir. Adı üstünde multimedia ses, görüntü vs. kavramlarını içinde barındıran bir olgudur. Bunu söylüyorum çünkü OpenGL/DirectX diye karşılaştırma yapıyoruz. Bu yanlıştır. OpenGL tek başına bir çizim kütüphanesidir. Tek amacı ekrana bir şeyler çizmektir. Ancak DirectX içinde birçok kütüphaneyi barındıran bir pakettir. Microsoft multimedia uygulamalar geliştirmek için geliştirdiği bu kütüphaneleri DirectX adı ile bir paket olarak bize sunmaktadır. DirectX içinde neler barındırıyor ana başlılar halinde bunlara bir bakalım.

DirectX Graphics


  • Direct3D: DirectX'in çizim işlerinden sorumlu kütüphanesidir. Direct3D sürücüsünü oluşturma, ekran kartına ait donanım bilgileri ve neleri desteklediği gibi bilgileri alma , primitive çizme fonksiyonları, doku atama vs. gibi direk çizim işlemleri için kullanılan fonksiyonları içerir.
  • D3DX: Bu kütüphane Direct3D kütüphanesine yardımcı fonksiyonları barındırır. Bu fonksiyonlar da aşağıdaki gibi gruplandırılmaktadır.
  • Animation Functions : Animasyon sistemi için fonksiyonlar içerir. Animasyon kontrolü oluşturma ,animasyona ait frame bilgilerini .X dosyalarından çekme, frame hiyerarşisine bağlı olan modelin bounding shere sini hesaplatma ( yabancı gelen bu tür terimlere ileriki konularda değineceğiz) vs. gibi fonksiyonlar içerir.
  • General Purpose Functions : Genel amaçlı fonksiyonlar içerir. Sistemde kurulu olan DirectX versiyonunu alma, uygulamanızın kullandığı DirectX versiyonu ile sistemde yüklü olan DirectX versiyonlarının aynı olup olmadığını test etme, font , çizgi , sprite oluşturma fonksiyonları gibi fonksiyonlar içerir.
  • Math Functions : Vektör, matrix, quaternion , renk hesaplamaları ile ilgili fonksiyonları içerir. Kısacası tüm matematik işlemleri ile ilgili fonksiyonları buradan temin edeceğiz.
  • Mesh Functions : DirectX'in kendine ait bir mesh (model diyelim) sistemi vardır. Bu model sistemi ile ilgili fonksiyonları içerir. .X model dosyalarını okuma, meshleri klonlama, ışının-mesh, ışın-meshin alt parçaları , ışın-meshin plygonları arasındaki çarpışma tesbitlerini hesaplayan fonksiyonlar, mesh optimizasyon fonksiyonları, bump-normal map için gerekli tangent bilgilerini hesaplatma vs. fonksiyonları içerir.
  • UVAtlas Functions : Bir modele ait doku haritası oluşturmak için gerekli fonksiyonları içerir. Aşağı yukarı 3Ds Max teki Unwarp UVW modifyerindeki gibi bir işleyişe sahiptir.
  • Precomputed Radiance Transfer Functions : Önceden hesaplanan bir ışık sistemidir. Ancak çok sayıda dezavantajı bulunmaktadır. PRT olayının hesaplanması ile ilgili fonksiyonları içerir.
  • Shader Functions : Shaderlerle ilgili fonksiyonları içerir. Shader scriptlerini okuma, derleme, versiyon bilgisini alma vs gibi fonksiyonları içerir.
  • Shape Drawing Functions : Kutu, silindir, polygon, küre, çaydanlık, yazı , torus gibi şekilleri oluşturmak için gerekli fonksiyonları içerirler. Oluşan şekiller mesh sistemi içinde oluşurlar.
  • Texturing Functions : Dokularla ilgili tüm fonksiyonlar burada bulunur. Dokuları okuma, dokunun normal mapini hesaplatma, yeni doku yüzeyi oluşturma/kaydetme , kübik dokularla ilgili fonksiyonlar vs. içerir.

DirectX Input


Giriş birimlerinden veri okumayı sağlayan kütüphanedir. Giriş biriminden kastımız fare, klavye , joystick gibi giriş birimlerinden gelen verileri yakalayıp ona göre işlem yaptırmaktır. Mesela fareyi oynattığımızda x,y eksenlerinde ne kadarlık bir değişim gerçekleştiği bilgilerinin alınması , fare/klavye/joystickin hangi tuşlarına basıldı, hangi kontrolün değeri ne kadar değişti gibi bilgiler, oluşan bir olay karşısında ( oyunda araba ile duvara çarptık) joystick üzerindeki motorları çalıştırma gibi olaylar için bu kütüphane kullanılmaktadır..
  • XInput : Xbox 360 kontrollerini(joystick vs.) bilgisayarda kullanabilmek için Input kütüphanesi.
  • DirectInput : PC için Input kütüphanesi. Fare,klavye, joystick birimlerimden gelen verileri işlemek için kullanılır.

DirectX Audio


Ses işlemleri ile ilgili kütüphaneleri içeriri. Ses okuma, yürütme, kayıt yapma (mikrofon,MID) gibi işler için kullanılır. DirectSound daha düşük seviye ses işlemleri için kullanılır. DirectMusic DirectSounda göre daha gelişmiş özellikler barındırır. Kullanım amacına göre ikisinden biri seçilmelidir.
  • DirectSound
  • DirectMusic
Aşağıda DirectSound ve DirectMusic kütüphanelerinin karşılaştırılmalarının yapıldığı bir tablo görülmektedir.


DirectShow


Bu kütüphane video oynatma, görüntü kaydı, düzenleme, TV donanımlarına erişim gibi konulara olanak sağlar. DirectX'in önceki sürümlerinde ve DirectX 9'un ilk versiyonlarında paket ile birlikte gelmekteydi ancak daha sonradan Platform SDK'ya taşındı. Platform SDK da sonradan Windows SDK olarak isim değiştirdi. Kısacası DirectShow şu an Windows SDK içinde yer alıyor.

DirectPlay

Multiplayer ( Çoklu oyunculu ) oyunlar geliştirmek için hazırlanmış kütüphanedir. Kütüphane bize aşağıdaki olayları yapabilmemizi sağlar.

Peer-to-peer: Kullanıcılar arasında birbirleri ile direk bağlantı oluşturarak yapılan bağlantı çeşididir.
Client-Server (Istemci-Sunucu): Bir çok istemcinin bir sunucuya bağlanması ile oluşan bağlantı çeşididir. Istemciler arasında gerçekleşecek veri akışı sunucunun yönetimi altındır ve sunucu tarafından gerçekleştirilir.
Lobby: Bu sistemde amaç çok oyunculu ortamda oyuna başlamadan önce oyuncuları sıraya dizmek sonra da gerekli şartlar sağlandığında oyunun başlamasını sağlamak.
Voice: DirectPlay çok oyunculu ortamda oyuncular arasında ses iletimini de destekler.

Evet bu kadar ön bilgi yeter. DirectX'le ilgili kafanızda bir şeyler canlanmaya başlamıştır umarım. Bu yazılanlara bakınca OpenGL/Direct3D karşılaştırılmasının/yazımının daha doğru olacağını da görmüş olduk. Bir sonraki dersimizde görüşünceye kadar kendinize iyi bakın.


Bilgin Terzi (3ddreams)

Yorumlar

Bu blogdaki popüler yayınlar

SDL Nedir?

Doxygen Kullanımı

OpenGL'de Line (çizgi) Çizdirme