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