DirectX nedir? Nasıl Programlanır?

Programlama ve Script dilleri konusunda bilgi paylaşım alanıdır.
Cevapla
Kullanıcı avatarı
mayhemious
Kilobyte4
Kilobyte4
Mesajlar: 698
Kayıt: 17 Kas 2007, 13:14
cinsiyet: Erkek

DirectX nedir? Nasıl Programlanır?

Mesaj gönderen mayhemious »

Merhabalar, bu yazı dizisinde sizlerle adım adım DirectX uygulamalarına giris yapacagız.

Bilgisayar oyunlarındna bahsetmekte fayda olurmu bilmiyorum ama kafanızı sisirmekte istemem. Zaten az çok bu konuya ilgi duyanlar bu konuda arastırma yapmıslardır. Bilindigi üzere windows öncesinde DOS oyunları vardı ve tam kip çalısırlardı yani, DOS isletim sistemi çok görevliligi desteklemedigi için her oyun tüm donanımı kendisi kulllanırdı. Bu sebepden dolayı uygulama gelistiriceler donanımlara dogrudan müdahele edebilirlerdi. Eger bu mümkün olmasaydı oyunlar, o zamanlar bile pek keyif vermezdi. Düsünsenize su an bile o eski oyunları açıp keyifle oyanıdgım oluyor J.

Resim

söyle bir, geçmisden bugüne sistemlerin, donanımların ve uygulamların bir biriyle olan etkilesimlerine bakalım.

Windows Öncesi :

DOS isletim sisteminde yazılan uygulamalar donanıma dogrudan müdahele edebiliyorlardı. Bunun artısı ve eksileri vardı. Artısı, donanıma dogrudan müdahele performans artısı saglardı. Dezavantajı, arada bir kontrol katmanının olmayısı.

Resim

Windows95:

Windowsun gelismesiyle, özellikle Windows95 ile birlikte tüm uygulamalar degismeye baslamıstı. Artık hersey isletim sisteminin kontrolündeydi ve donanıma dogrudan erisim kısıtlandırlımıstı. Bu ilk basta daha güçlü donanımlara gereksinimini arttırdı. Bunun getirdigi dezavantaj donanımların yetersiz kalmasıydı çünkü donanımın önemli bir kısmını Windows kullanmaktaydı ve diger uygulamaların kullanacagı donanımıda kendisi belirliyordu.

Resim

Windows98 ile DirectX ve Sonrası :

Windows aslında oldukça basarılı uygulamaların ortaya çıkmasını saglamıstı fakat uygulamaların , özellikle oyunların, donanımı dogrudan kullanamaması hissedilen bir eksiklikti. Buna çözüm olarak oyunlara destek olması amacıyla Microsoft tarafından gelistirilien DirectX ürünü tanıtıldı. Aslında yaptıgı eski DOS uygulamalarından pekde farklı degildi fakat güçlü bir donanım destegi ve donanıma müdahele için gelistirilen ortak kütüphanelerinin olmasıydı onu güçlü kılan.

Resim

DirectX Nedir ?

DirectX yukarıdaki sekilde de ögrüldügü gibi, Düsük seviyeli dillerler yazılmıs API’ler sayesinde donanıma ve sistemle iliskili aygıtlara dogrudan erisimi saglayan zengin bir kütüphanedir. Bununla birlikte Desteklenmeyen donanımlarda donanım emülasyonu bile yapabilmektedir. Hatırlarsan 5 sene öncesine kadar her VGA’kartı 3D’yi desteklememkteydi, bu nokdata Sowftware3D moduyla DirectX sanki o sistemde gerçek bir 3D VGA kart varmıs gibi çalısmaktaydı. Bu elbetteki oldukça faydalı bir özellikte fakat donanım destegi olmadıgı için oldukça yavas çalısmaktaydı. DirectX kütüphanesinde ihtiyaç duyulan API’ler rahat erisim için gruplanmıs halde bulunur.


DirectXDraw ve Direct3D
DirectX’in grafiklerle ilgili sınıflarının bulundugu kütüphane

DirectSound ve DirectMusic
Ses ile ilgili sınıfların bulundugu kütüphane

DirectInput
Kullanıcıların, uygulamalar etkilesimi geçmesi için gerekli olan aygıtları (kalvye, joystick, vs.) kontrol edecek sınıfların bulundugu kütüphane

DirectPlay
Network ve multiplayer oyunlar için gerekli kütüphane

DirectShow
Video oynatmak için gerekli kütüphane




Nasıl Çalısır?

Mimaride iki önemli yapı vardır. HAL (Hardware Abstraction Layer) ve HEL (Hardware Emulation Layer). Aygıtlara istekler bu iki katman yardımıylar gönderilir. DirectX ilk hazırlık asamasında yani bir DirectX Device ile donanıma baglanılmaya çalısıldıgı zaman donanım destekleniyorsa HAL devreye girer ve uygulama/oyun dogrudan donanımı kullanmaya baslar, Eger desteklenmeyen bir donanım ise HEL devreye girer ve donanım emülasyonu yapmaya baslar. Mimari genel anlamda böyle çalısır.

DirectX donanımların gelismesiyle dahada güçlü bir hal almaya basladı ve son olarak MicroSoft tarafından 9.0 sürümüyle .Net kodlarını destekleyen bir sürümde çıakrtıldı. C# diliyle artık çok rahat bir sekilde 3D oyunlar yazılabilecek. Bir sonraki yazıda oyun mimarisi ve basit DirectX kodlarına giris yapmaya baslayacagız.

**ANLATIM ALINTIDIR.... Bence oyun oynayan herkesin kabaca bilgisi olmalı
Cevapla