DirectX Çalışma Ortamının Hazırlanması


DirectX Çalışma Ortamının Hazırlanması

DirectX uygulamaları geliştirebilmek için DirectX SDK ya ihtiyacımız var. SDK içerisinde DirectX uygulamaları geliştirebilmek için gerekli kütüphaneler, örnek projeler, yardımcı araçlar ve dökümanlar bulunur. Konumuza geçmeden önce DirectX SDK yı aşağıdaki adresten indirin.

DirectX in ana sayfası.
http://msdn.microsoft.com/directx/


Kaldığımız yerden DirectX'e devam edelim. DirectX le çalışmaya başlamadan önce DirectX in başlık (include) ve kütüphane (library) dosyalarının bulunduğu yolları IDE mize tanıtmamız gerekmektedir. Ayarlar Visual Studio 2005 IDE sine göre anlatılmaktadır. Ancak Visual Studionun eski sürümlerinde de ayarlar aşağı yukarı aynıdır. IDE mizin Tools menüsünden Options maddesine tıklayarak aşağıdaki ayar penceresini açalım. Sol taraftaki menüden Projects and Solutions altındaki VC++ Directories maddesini tıklayınca sağ tarafta ilgili ayar kısmı belirecektir. Aşağıdaki resimde kırmızı oklarla gösterilen sırada işlemlerimizi gerçekleştiriyoruz. Aşağıdaki resimde DirectX in başlık dosyalarının bulunduğu klasörü IDE mize tanıtıyoruz. Bunun için Show directories kısmından Iclude files seçeneğini seçip 3. okla gösterilen buton ile yeni bir yol satırı ekliyoruz. 4. okla gösterilen butona basarak boş olan yol satırına DirectX in başlık dosyalarının olduğu yolu gösteriyoruz. DirectX e ait başlık ve kütüphane dosyalarının olduğu klasörler DirectX SDK nın kurulu olduğu klasörün içindedir. Yani başlık dosyaları için (DxSdk klasörü)include, kütüphane dosyaları için; 32bit sistemler için (DxSdk klasörü)Libx86, 64bit sistemler için (DxSdk klasörü)Libx64 yollarını IDE mize eklememiz gerekiyor. Bende DirectX Sdk c:\DXSDK konumunda kurulu olduğu için ayarları ona göre yapıyorum. Normalde DxSdk "Program Files" klasörü içine kurulmaktadır. Sizde kendi sisteminizdeki kurulum yerine göre klasörlerin yerini ekleyiniz.

Başlık (include .h) dosyalarının bulunduğu klasörleri eklemek için izlenecek adımlar:

  
Kütüphane (library .lib) dosyalarının bulunduğu klasörleri eklemek için izlenecek adımlar:


DirectX e ait başlık ve kütüphane dosyalarının bulunduğu klasörleri IDE mize tanıtmış olduk. Bu ayarları bir defalığa mahsus yapıyoruz. DirectX le çalışacağımız diğer projeler için aynı ayarı tekrar tekrar yapmamız gerekmez.

Şimdi de DirectX i kendi projelerimize nasıl adapte edeceğimize bakalım. Önceki yazımızda DirectX'in bir çok kütüphaneden ibaret olduğundan bahsetmiştik. Bu kütüphaneleri ihtiyacımız doğrultusunda projemize dahil ederek ihtiva ettikleri fonksiyonları ve yapıları projemize dahil ederiz. Başlangıç için aşağıdaki başlık dosyalarını projemize eklememiz yeterli olacaktır. d3dx9.h dosyası içinde Direct3D nin çoğu arabirimi ve yapısının tanımlarının bulunduğu başlık dosyaları zaten önceden tanımlıdır. Onun için d3dx9.h dosyasını eklemek yeterli olacaktır. Buna ek olarak ileride gerekli olacak birkaç başlık dosyasını daha projemize ekleyelim. Dxerr.h başlık dosyası içinde DirectX in hata kodlarını işleyebilmemiz için gerekli fonksiyonlar ve tanımlar bulunmaktadır. math.h dosyası içinde standart matematik işlemeler yapabilmemiz için gerekli fonksiyonlar tanımlıdır. mmsystem.h dosyası içinde de ileride işimize yarayacak fonksiyonlar bulunmaktadır. 

C/C++ kodu:
#include <d3dx9.h>
#include <Dxerr.h>
#include <mmsystem.h>
#include <math.h>

Başlık dosyalarından sonra kütüphane dosyalarını da (.lib) projemize dahil edelim. d3d9.lib, d3dx9.lib/d3dx9d.lib, DxErr.lib başlangıç için kullanacağımız arabirimlerin tanımlı olduğu kütüphanelerdir. Dikkat ederseniz d3dx9.lib/d3dx9d.lib gibi ikili bir tanım kullandık. Bunun nedeni şudur. Çoğu kütüphanenin hem debug hem de release için ayrı sürümleri bulunur. Yani release ve debug derleme için ayrı ayrı .lib dosyaları kullanılır ve ona göre ayar yapmamız gerekir. Bunun nedenini şu şekilde açıklayayım. Debug derlemelerde programımız release derlemeye göre daha yavaş çalışır ancak çalışma sırasında hataları, program işleyişi sırasında gelişen olayları daha iyi izlemeye olanak tanır. Release derleme de programımız en iyi hızda çalışır ancak hata tespiti zordur. Kütüphane dosyalarını projemize dahil etme işlemine devam edelim. Bunu iki yolla yapabiliriz. Birincisi projemizin başına #pragma comment(lib,"xxxxx.lib") gibi bir satır eklememiz gerekmektedir. Yalnız bahsini ettiğimiz iki değişik kütüphanenin seçilen derleme için projeye ayrı ayrı dahil edilmeleri gerekmektedir. Bunu da aşağıdaki gibi bir kod yazarak sağlayabiliriz. Aşağıdaki kod parçasında debug derleme yapıldığı zaman d3dx9d.lib dosyası, diğer durumlar için d3dx9.lib dosyaları projeye dahil edilecek. d3d9.lib ve DxErr.lib her koşulda projeye dahil edilecek. Aslında d3d9.lib kütüphanesininde release ve debug için ayrı sürümleri var ancak ileride bu seçimin dışarıdan müdahalelerle nasıl yapılacağını ve bize ne gibi yararlar sağlayacağını göreceğiz.

C/C++ kodu:
//Değişik derleme sürümleri bulunan kütüphanelerin derleme türüne göre projeye dahil edilmesi işlemi.
#ifdef _DEBUG
    #pragma comment(lib,"d3dx9d.lib") 
#else
    #pragma comment(lib,"d3dx9.lib")
#endif
 
#pragma comment(lib,"d3d9.lib")
#pragma comment(lib,"DxErr.lib")
Kütüphane dosyalarını projemize dahil etmenin ikinci yolu ise "Project" menüsünden "Properties" seçeneğine tıklayarak açılan proje ayarları penceresinden yapmaktır. Configuration kısmında projemizin derleme tipine göre ayrı ayarlar kullanmasını sağlayabiliriz. Altta kırmızı oklarla gösterilen derleme türlerinden birini seçip gerekiyorsa her derleme türü için ayrı ayarlar yapabiliriz. Aşağıdaki resimde Release derleme tipi için olan ayar gösterilmektedir. Linker/Input seçeneği ile açılan pencerede sağ tarafta Additiolan Dependencies kutusuna projeye dahil edilecek olan kütüphane dosyalarını aralarında boşluk bırakarak dahil ederiz. Release için d3d9.lib,d3dx9.lib ve DxErr.lib dosyalarını dahil ettik . Aynı işlemi Debug içinde yapmalıyız ama bu sefer farklı olarak d3dx9.lib yerine d3dx9d.lib dosyasını dahil edeceğiz. Yani Additiolan Dependencies kutusuna d3d9.lib,d3dx9d.lib ve DxErr.lib dosyalarını yazacağız. All Configurations için yapılan ayarlar hem Debug hem de Release derlemeler için geçerli olacaktır. Diğer kütüphaneleri de aynı bu şekilde projemize dahil edebiliriz. Hangi yöntem size daha rahat geliyorsa onu kullanın. Ancak şunu unutmayın ki bu konuştuklarımız sadece projeye kütüphane dosyalarını dahil etmekle ilgiliydi. Bazı durumlarda daha teferruatlı ve değişik ayarlar gerekebilir. Bu durumda da kodla uğraşmak yerine bunu proje ayarlarından yani aşağıdaki resimde gördüğünüz pencereden yaparsınız. Kodla göstermiş olduğum projeye kütüphane dosyalarını dahil etmenin alternatif bir yoluydu sadece. 


Başlık ve kütüphaneleri DirectX le uğraşacağımız her proje için ayrı ayrı tanıtmak gerekmektedir. Çünkü her projenin kendi ayarları bulunmaktadır. 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