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

 
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