Merlin'in Kazanı Merlin'in
Kazanı
Oyun Makaleleri

Oyun Hazırlıyorum - 3

Direct 3D'nin değişik özelliklerini 3 başlık altında inceliyoruz.

SB Serkan Birkan Editör 20 Mayıs 2002 Okuma süresi: 5 dk
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: 2 boyutlu işlemler için, örneğin “fast 2D blitting ( bit block transfers)”

  • DirectSound: Programlara ses ekleme

  • DirectPlay: Uygulamalar için birden fazla kullanıcı eklemek, network iletişimi sağlamak için

  • Direct3D: 3 boyutlu işlemler eklemek için

  • DirectInput: Joystick, mouse, klavye vb.’den gelen bilgileri almak için

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...

Okur Tepkisi Bu içerik sende ne uyandırdı? İlk tepkiyi sen bırak

Yorumlar (0)

Yorum yap, MK Puanı ve Enerji kazan

Topluluğa katılmak için giriş yap. En az 20 kelimelik onaylanan yorumlar 3 MK Puanı ve 3 Enerji kazandırır.

İlk yorumu sen yaz, MK Puanı ve Enerji kazan.