Oyun Hazırlıyorum – 3

Direct3D 

Direct 3D, yazılım geliştirenlerin
kullandığı bilgisayarın özelliklerini çok daha iyi kullanabilmeleri için
Microsoft’un API’lerinden biridir. Direct 3D hakkında bir çok bilgi
verilebilir, ama biz Direct 3D’nin değişik özelliklerini içeren 3 başlık
altında bunu inceleyeceğiz. Bunlar:
 

1- Direct 3D’ye genel bakış

2- Direct 3D Retain Mode

3- Direct 3D Immediate Mode

Direct 3D, Direct X’in bir parçasıdır ve
daha önce de belirttiğimiz gibi bir API’dir. Bu şekilde 3 boyutlu grafikler
çok daha hızlı olarak kullanılabilir. 

DirectX 

DirectX, bir API’ler bütünüdür ve bir
COM (Component Object Model) olarak kullanılır. Bu API’ler, Windows ortamında
gerçek-zamanlı, yüksek performanslı uygulamalar geliştirmek için objeler
ve fonksiyonlar sağlar.

Bu tip kütüphaneler  üretilmesinin esas sebebi, Windows’un, oyun ve multimedia
gibi yoğun grafiksel işlemler içeren programları göstermede çok zayıf 
kalmasıdır. Aynı programların DOS versiyonları çok daha hızlıdır.
DirectX, bu gibi programların yüksek performansla işlenmesi için standart ve
çok güçlü bir platform sunmaktadır.

DirectX bu imkanı sunarken bilgisayardaki
donanımdan bağımsız olarak çalışır. Bunu yaparken donanımla aralasında
bir arayüz sağlar ve uyumsuzlukları en aza indirger. Örneğin DOS’la yazılmış
programlar bir çok değişik donanım konfigürasyonunu göz önüne almalı ve
ona göre davranmalıdır. Ama şimdi, bütün bu uyumsuzluk yükü programcının
üzerinden alınmış, daha az kodla daha hızlı program geliştirme sağlanmıştır.

DirectX tek başına bir varlık değil,
birbirinden bağımsız çalışan uygulamaların bütünüdür. Bunlar: 

DirectDraw

 

DirectDraw bileşeni, direkt ya da dolaylı
olarak Direct3D tarafından kullanıldığından 
önemlidir. DirectDraw, yazılım ve donanım arasındaki donanım
soyutlama tabakasını (hardware abstraction layer (HAL)) oluşturur. HAL, 
programları donanım farklılıklarından korur. DirectDraw kullanan
programlar yalnızca DirectDraw’la iletişim kurar ve HAL’e ile direkt ya da
dolaylı olarak ulaşamazlar.

DirectDraw 2 boyutlu uygulamalar için
performans artırıcı destek ve ekran dışındaki görüntülere direkt ve hızlı
ulaşım sağlar. Ayrıca blitting (bit block transfer) ve buffer flipping
(tampon yerdeğiştirmesi)’i kullanmamıza, saydam blitting yapmaya, ekranda
obje ve çok katmanlı animasyonlar oluşturmaya olanak tanır. Bütün bu özellikler
programların Windows ortamında çok daha hızlı ve performanslı çalışmasını
sağlar.

DirectDraw Objeleri

DirectDraw kullanan programlar 2 obje kullanır, DirectDraw ve
DirectDrawSurface. DirectDraw objesi ekran kartını simgeler, DirectDrawSurface
ise ekrana gelecek görüntünün oluşturulduğu görüntü hafızasını
temsil eder. Bunun yanında uygulamalar DirectDrawPalette ve DirectDrawClipper
gibi yardımcı objeler de kullanabilirler. 

Genel Kullanım

DirectDraw kullanmada kullanılan bir yol
şöyledir:

1-    
Ön ve arka tamponu hazırla (görüntüleri yer değiştirmek için
kullanılırlar)

2-    
Ekrana getirilecek görüntüler direkt ekrana gelmeden önce arka
tamponda çizilir

3-    
Çizim tamamlanınca, ön ve arka tamponlar yerdeğiştirilir. Bundan
sonra arka tampon ön tampon, ön tampon da arka tampon olmuş olur. 

Direct3D’nin yetenekleri

DirectDraw’un yeteneklerini kısaca tanıdıktan
sonra şimdi de Direct3D’ye bir göz atalım.

Giriş:

Direct3D,
DirectX’İn bir parçasıdır ve Windows uygulamalarına 3 boyutlu grafikler
eklemek için kullanılır. Bunun için Direct3D şu özellikleri sağlar:

Donanımdan Bağımsızlık

Programları farklı donanım çakışmalarından
korur. Böylece program çalıştırıldığı bilgisayardaki ekran kartı, ses
kartı vb. özelliklerden bağımsız olarak çalışabilir.

Donanım İçin Genel Sürücü Modeli

Diect3D’yi destekleyen tüm sürücülerin
en azından belirlenmiş özellikleri kesinlikle destekleyeceğini garanti eder.
Böylece bu belirlenmiş özellikleri kullanan programlar Direct3D’yi
destekleyen donanıma sahip her bilgisayarda çalışır. Ayrıca Direct3D,
ekran kartı üreticilerine kartlarının Direct3D’nin değişik özelliklerini
kullanabilmesi için tarifler sağlar. Bu özellikleri kullanan programlarda büyük
performans artışları gözlenir.

Programlara 3 Boyut Ekelemeyi Kolaylaştırır

Direct3D 3 boyutlu grafikler için standart
algortimalar ve mekanizmalar sağladığı için, bu özellikleri kullanan
programlar çok daha kolay ve hızlı üretilebilir.

Donanıma Açık Ulaşım

Bu Direct3D’nin en önemli özelliklerinden
biridir. Bilgisayardaki donanım bir özelliği desteklemiyorsa, Direct3D bunu
yazılım kullanarak destekler hale getirir. Program, çalışırken donanım özelliklerini
tespit edebilir. Direct3D özellikleri kullanıcıya 2 şekilde sunulmuştur.
Retained mode ve immediate mode. Retianed mode yüksek seviyeli bir arayüzdür,
immediate mode ise alçak seviyeli.

Aşağıdaki şekil Direct3D’nin diğer
Win32 birimleriyle iletişimini gösterir.




Figure
1:
Place of Direct3D

Şekilden de görüldüğü gibi retained
mode immediate mode’u kullanır. The retained mode, the immediate mode ve
Direct3D HAL hep birlikte DirectX’in Direct3D bileşenini oluştururlar.

Tabakalar (Layers)

Direct3D, 2 tabaka kullanır, Hardware
Abstraction Layer (HAL) ve Hardware Emulation Layer (HEL). Bütün Direct3D özellikleri,
donanım bağımsızlığını yaratan HAL üzerine kurulmuştur.

Oluşturma Motoru (Rendering Engine)

Oluşturma motoru, sahnenin 3 boyutlu nokta
bazında tanımlanması, değişik yüzey desenlerinin, ışıkların, kameranın
özelliklerinin tanımlanması, oluşturulmaya hazır hale getirilmesi işlerinden
sorumludur.

Oluşturma motoru 3 modül kullanır, dönüştürme
modülü (transformation module), ışıklandırma modülü (lighting module) ve
rasterization modülü Bunlardan her biri
donanımca hızlandırımış (hardware accelerated) olabilir, kullanıcıya açıktır.
Programı yazan kişinin sadece donanım tespit fonksiyonunu programa eklemesi,
program çalıştığı zaman bilgisayardaki donanımı bularak onun özelliklerine
göre davranmasını sağlamak için yeterlidir.

Aşağıdaki
şekil 3 modülün, görüntüyü görüntülemeden önce Direct3D API’leriyle
ilişkisini gosteriyor. Görüntülenmeden önce yapılan işlem sırasını gösteriyor.



Figure 2: Rendering Engine Modules

Görüntülenecek 3 boyutlu veri, bunu 3
boyuttan 2 boyuta dönüştürüp tutan transformation modülüne veriliyor. Bu
2 boyutlu veri, veriye gelen ışığı hesaplayan lighting modulune
gönderiliyor.
Işıklandırılmış veri, geçirgenliği hesaplayan ve yüzey desenini veriye
yerleştiren rasterzasyon modülüne yollanıyor.

Bir sonraki yazıda, yukarıda anlatılan 3
modülün ayrıntılarını ve Direct3D hakkında son birkaç noktayı daha öğreneceğiz…

Exit mobile version