IRRLICHT - Merhaba Dünya

IRRLICHT - Merhaba Dünya

Bu dersimizde IRRLICHT ile bir ekran oluşturmayı göreceğiz. Ve IRRLICHT nesnelerinden biraz söz edeceğiz.

Başlıyoruz.

C/C++ kodu:

#include <irrlicht.h>

using namespace irr;

using namespace core;
using namespace scene;
using namespace video;
using namespace io;
using namespace gui;

int main()
{
    IrrlichtDevice *device = createDevice(EDT_SOFTWARE, dimension2d<s32>(500, 500), 16,
        false, false, false, 0);
    device->setWindowCaption(L”Merhaba Dunya”);

    IVideoDriver* driver = device->getVideoDriver();
    ISceneManager* smgr = device->getSceneManager();
    IGUIEnvironment* guienv = device->getGUIEnvironment();

    smgr->addCameraSceneNode(0, vector3df(0, 30, -40), vector3df(0, 5, 0));
    while (device->run())
    {

        driver->beginScene(true, true, SColor(255, 255, 255, 255));

        smgr->drawAll();
        guienv->drawAll();

        driver->endScene();
    }

    device->drop();

    return 0;
} 

Bu kodların ne işe yaradığını teker teker ele alacağız.  

C/C++ kodu:
#include <irrlicht.h>

Irrlichtin Kütüphane dosyası Bu dosyayı inculude ediyoruz.

C/C++ kodu:

using namespace irr;

Irrlichte bütün herşey irr sınıfının içinde bulunur. Using namespace ifadesi yazamamızın nedeni, herdefasında “::” Kapsam çözünürlük Operatörü kullanmamızı ortadan kaldırır, böylece zaman kazanmış oluruz ve karmaşıklık yaratmış olmaz.

C/C++ kodu:
 
using namespace core;
using namespace scene;
using namespace video;
using namespace io;
using namespace gui;

Ve 5 tane daha sınıfımız bulunmakta.

* Core ingilizcedeki karşılığı çekirdek anlamına gelir. Veriyapılarını ve fonksyionları içerir.
* Scene ingilizcedeki karşılığı Sahne anlamına gelir. Camera gibi nesneleri içerir.
* Video adı üzerinde görüntü, resim ve renk nesnelerini içerir.
* Io imput output . Dosya giriş çıkış nesnelerini içerir.
* Gui Buton, font, editbox, combo box, contexmenü gibi nesnelerini içerir.

Fare ve Klavye işlemleri nerede derseniz hepsi irr sınıfının içindedir.

C/C++ kodu:
int main()
{
    IrrlichtDevice *device = createDevice(EDT_SOFTWARE, dimension2d<s32>(500, 500), 16, false, false, false, 0);
}

createDevice Nesnesi ile boş bir ekran çizdiriyoruz. Bu metod 7 parametreden oluşmaktadır.

* 1. parametrede DeviceType: Software, Direct 8, Direct 9, OpenGL veya Null içerir. Windows işletim sistemi üzerine bir oyun yapıyorsanız Directx 9, Unix işletim sistemi üzerine ise Directx desteklemeyecektir, OpenGL kullanıyoruz. Çünkü Directx bir microsoft ürünüdür ve microsoft amcamız windows ürününden daha çok para kazanmak için başka işletim sistemlerine sağlamıyor.

* 2. parametrede WindowsSize: Pencere büyüklüğünün ne olmasını istemiz biz 500×500 bir değer girmişiz. eğer full ekran bir görüntü verecekseniz bunu 1024×768 olarak ayarlamanızı tavsiye ederim.

* 3. parametrede Bits: Piksel büyüklüğünü gösterir. 16 veya 32 değerini alır. Pencere halinde iken masaüstü değerini alır.

* 4. parametrede FullScreen: Tam boyuttladırma yapılıp yapılmayacağı değerini alır. false ve true değerlerini alır.

* 5. parametrede StencilBuffer: Gölge çizimler için kullanılır true ve false değerlerini alır.

* 6. parametrede Vsync: Çizim hızını monütörün yenileme hızı ile eş değer yapmayı sağlar. Tam ekran modunda çalışmaktadır.

* 7. parametrede EventReceiver: Olayları alması için kullanılıyor. Bunu kullanmıyoruz değerini 0 yapalım.

C/C++ kodu:
device->setWindowCaption(L"Ceida Software & Merhaba Dunya");

Bu kısımda peceremizin ismini belirliyoruz ve bu isim penceremizin üstünde yer alacaktır. Siz artık oyununuza hangi isim vermek isterseniz onu bu kısıma yazınız.

C/C++ kodu:
IVideoDriver* driver = device->getVideoDriver();
ISceneManager* smgr = device->getSceneManager();
IGUIEnvironment* guienv = device->getGUIEnvironment();

Bunlar Device sınıfının nesneleridir. VideoDirver, SceneManager, Gui bu nesnelere birer pointer tanımlıyoruz.

C/C++ kodu:
smgr->addCameraSceneNode(0, vector3df(0,30,-40), vector3df(0,5,0));

Tüm yaptıklarımızı görebilmemiz için (0, 30, -40) pozisyona bir camera yerleştiriyoruz.Irrlichte bir kaçtane camera şekli vardır bunları yeri geldiğinde göstereceğiz.

C/C++ kodu:
while(device->run())
{
    //Burada Device nesnesi çalıştığı sürece işlemi döngü içine alıyoruz.
    driver->beginScene(true, true, SColor(255, 255, 255, 255));
    smgr->drawAll();
    guienv->drawAll();

    driver->endScene();
}

Ekran görüntü rengimizi (Arka plan rangi) Beyaz olarak yaptık. true, true, Baştaki 2 parametre backbuffer deptbufferın silinip silnmeyeceğini değerini alır.Bunu başka renklerde’ de yapabilirsiniz. Bu kodları asağı kısımda vereceğim. endScene(); fonksyionu tüm oluşturulan nesneleri ekrana çizdirir.

C/C++ kodu:
device->drop();

Bütün oluşturduğumuz nesneler yok edilmeli bunu drop(); fonksiyonu ile yapıyoruz.

Ve projemizi build edip çalıştırın.

Samed Ceylan

Yorumlar

  1. Vay canına güzel bir site yapmışsınız, içerikler ve yazılar daha da güzel ve daha iyisi Türkçe. OpenGL derslerinden yararlanmayı düşünüyorum. Selam

    YanıtlaSil

Yorum Gönder

Bu blogdaki popüler yayınlar

SDL Nedir?

Doxygen Kullanımı

OpenGL'de Line (çizgi) Çizdirme