Dasar-dasar Dari Irrlicht Engine
Tutorial ini menunjukkan cara membuat IDE untuk menggunakan Irrlicht Engine dan bagaimana menulis program helloworld sederhana dengan itu. Program ini akan menunjukkan bagaimana menggunakan dasar-dasar VideoDriver, yang GUIEnvironment, dan SceneManager tersebut. Microsoft Visual Studio digunakan sebagai IDE, tetapi Anda juga akan dapat memahami semua jika Anda menggunakan berbeda satu atau bahkan sistem operasi lain dari jendela.
Anda harus menyertakan file header <> irrlicht.h untuk menggunakan mesin. File header dapat ditemukan di direktori Engine Irrlicht SDK termasuk. Untuk membiarkan compiler menemukan file header, direktori di mana ia berada harus ditentukan. Hal ini berbeda untuk setiap IDE dan compiler yang anda gunakan. Mari kita segera menjelaskan bagaimana melakukan ini dalam Microsoft Visual Studio:
Jika Anda menggunakan versi 6.0, pilih Menu Ekstra -> Pilihan. Pilih tab direktori, lalu pilih 'Masukkan' Item dalam kotak kombo. Tambahkan termasuk direktori dari folder mesin irrlicht ke daftar direktori. Sekarang kompiler akan menemukan file header Irrlicht.h. Kita juga perlu irrlicht.lib yang akan ditemukan, jadi tinggal dalam dialog itu, pilih 'Perpustakaan' di kotak kombo dan menambahkan lib / VisualStudio direktori.
Jika Anda IDE Visual Studio NET,. Tools pilih -> Pilihan. Pilih proyek masuk dan kemudian pilih direktori VC + +. menunjukkan Pilih 'direktori untuk menyertakan file' di kotak kombo, dan tambahkan termasuk direktori dari folder mesin irrlicht ke daftar direktori. Sekarang kompiler akan menemukan file header Irrlicht.h. Kita juga perlu irrlicht.lib yang akan ditemukan, jadi tinggal dalam dialog itu, pilih 'direktori untuk file menunjukkan Perpustakaan' dan tambahkan lib / VisualStudio direktori.
Itu saja. Dengan IDE Anda mengatur seperti ini, sekarang Anda akan dapat mengembangkan aplikasi dengan Irrlicht Engine.
Mari kita mulai!
Setelah kami telah menetapkan IDE, compiler akan tahu ke mana harus mencari file header Irrlicht Engine agar dapat kami masukkan sekarang dalam kode kita.
# Include <> irrlicht.h
Dalam Engine Irrlicht, semuanya dapat ditemukan dalam ruang nama 'IRR'. Jadi jika Anda ingin menggunakan kelas mesin, Anda harus menulis IRR:: sebelum nama kelas. Misalnya menggunakan IrrlichtDevice menulis: IRR:: IrrlichtDevice. Menyingkirkan IRR:: di depan nama setiap kelas, kita memberitahu compiler yang kita gunakan namespace yang dari sekarang, dan kami tidak perlu menulis IRR:: lagi. Menggunakan IRR namespace;
Ada 5 sub ruang nama di Irrlicht Engine. Lihatlah mereka, Anda dapat membaca penjelasan rinci dari mereka di dokumentasi dengan mengklik pada item menu paling atas "Daftar Namespace" atau dengan menggunakan link ini: Irrlicht.sourceforge.net Seperti IRR namespace, kami tidak ingin 5 tersebut sub ruang nama sekarang, untuk menjaga ini contoh sederhana. Oleh karena itu, kita memberitahu kompiler lagi bahwa kita tidak ingin selalu menulis nama mereka. Menggunakan namespace inti;
menggunakan adegan namespace;
menggunakan video namespace;
menggunakan namespace io;
menggunakan namespace gui;
Untuk dapat menggunakan file Irrlicht.DLL, kita harus menghubungkannya dengan Irrlicht.lib. Kita bisa mengatur pilihan ini dalam pengaturan proyek, tapi untuk memudahkan, kami menggunakan lib pragma komentar untuk VisualStudio. Pada platform Windows, kita harus menyingkirkan jendela konsol, yang muncul ketika memulai program dengan main (). Hal ini dilakukan oleh pragma kedua. Kami juga dapat menggunakan metode winmain, meskipun kehilangan independensi platform kemudian. # _IRR_WINDOWS_ Ifdef
# Pragma comment (lib, "Irrlicht.lib")
pragma comment (linker #, "/ subsistem: windows / ENTRY: mainCRTStartup")
# Endif
Ini adalah metode yang utama. Kami sekarang dapat menggunakan utama () pada setiap platform. Int main ()
(
Yang penting sebagian besar fungsi mesin adalah createDevice () fungsi. IrrlichtDevice ini diciptakan oleh itu, yang merupakan objek root untuk melakukan apapun dengan mesin). CreateDevice (memiliki 7 parameter:
deviceType: Jenis perangkat. Saat ini dapat menjadi Null-perangkat, salah satu dari dua penyaji perangkat lunak,, D3D8 D3D9, atau OpenGL. Dalam contoh ini kami menggunakan EDT_SOFTWARE, tapi untuk mencoba, Anda mungkin ingin mengubahnya ke EDT_BURNINGSVIDEO, EDT_NULL, EDT_DIRECT3D8, EDT_DIRECT3D9, atau EDT_OPENGL.
windowSize: Ukuran dari Window atau layar di FullScreenMode harus diciptakan. Dalam contoh ini kita menggunakan 640x480.
bit: Jumlah bit warna per pixel. Ini harus 16 atau 32. Parameter yang sering diabaikan ketika berjalan di mode windowed.
fullscreen: Menentukan bila kita ingin perangkat untuk menjalankan dalam modus layar penuh atau tidak.
stencilbuffer: Menentukan jika kita ingin menggunakan stensil buffer (untuk menggambar bayangan).
vsync: Menentukan jika kita ingin memiliki vsync diaktifkan, ini hanya berguna dalam modus fullscreen.
eventReceiver: Sebuah objek untuk menerima peristiwa. Kita tidak ingin menggunakan parameter ini di sini, dan set ke 0.
Selalu memeriksa nilai kembali untuk mengatasi driver tidak didukung, dimensi, dll
IrrlichtDevice * device =
# Ifdef _IRR_OSX_PLATFORM_
createDevice (video:: EDT_OPENGL, dimension2d (640, 480), 16,
palsu, palsu, palsu, 0);
# Lain
createDevice (video:: EDT_SOFTWARE, dimension2d (640, 480), 16,
palsu, palsu, palsu, 0);
# Endif
if (! perangkat)
return 1;
Mengatur judul jendela untuk beberapa teks bagus. Perhatikan bahwa ada 'L' di depan string. Engine Irrlicht menggunakan karakter string lebar saat menampilkan teks. perangkat-> setWindowCaption (L "Hello World Demo! - Irrlicht Engine");
Dapatkan pointer ke VideoDriver, yang SceneManager dan lingkungan graphical user interface, sehingga kita tidak selalu harus menulis getVideoDriver perangkat-> (), getSceneManager perangkat-> (), atau getGUIEnvironment perangkat-> (). IVideoDriver * driver = perangkat getVideoDriver-> ();
ISceneManager * SMGR = perangkat getSceneManager-> ();
IGUIEnvironment * guienv = perangkat getGUIEnvironment-> ();
Kami menambahkan label halo dunia ke jendela, menggunakan lingkungan GUI. Teks yang ditempatkan pada posisi (sebesar 10,10) sebagai sudut kiri atas dan (sebagai pojok kanan bawah) 260,22. guienv-> addStaticText (L "Hello World! Ini adalah Software Irrlicht renderer!",
rect (10,10,260,22), true);
Untuk menampilkan sesuatu yang menarik, kami memuat Quake 2 model dan menampilkannya. Kami hanya perlu mendapatkan Mesh dari Manajer Scene dengan getMesh () dan menambahkan SceneNode untuk menampilkan mesh dengan addAnimatedMeshSceneNode (). Kami memeriksa nilai kembali dari getMesh () untuk menyadari pembebanan masalah dan error lainnya. Alih-alih menulis nama file sydney.md2, itu juga akan memungkinkan untuk memuat Maya file objek (. Obj), peta Quake3 lengkap (bsp). Atau format file lain yang didukung. By the way, yang keren disebut sydney Quake 2 model dimodelkan oleh Brian Collins.
IAnimatedMesh * mesh = SMGR-> getMesh ("../../ media/sydney.md2 ");
if (! mesh)
return 1;
IAnimatedMeshSceneNode * node = SMGR-> addAnimatedMeshSceneNode (mesh);
Untuk membiarkan mesh terlihat sedikit lebih bagus, kami mengganti materialnya. Kami menonaktifkan pencahayaan karena kita tidak memiliki cahaya yang dinamis di sini, dan mesh akan benar-benar hitam sebaliknya. Kemudian kami mengatur loop frame, seperti bahwa animasi STAND standar digunakan. Dan terakhir, kita menerapkan tekstur untuk mesh. Tanpa itu mesh akan diambil hanya menggunakan warna. If (node)
(
node-> setMaterialFlag (EMF_LIGHTING, false);
node-> setMD2Animation (adegan:: EMAT_STAND);
node-> setMaterialTexture (0,-> getTexture driver ("../../ media / sydney.bmp "));
)
Untuk melihat mesh, kami menempatkan kamera ke 3d ruang di posisi (0, 30, 40). Kamera terlihat dari sana ke (0,5,0), yang kira-kira tempat mana md2 model kita. SMGR-> addCameraSceneNode (0, vector3df (0,30, -40), vector3df (0,5,0));
Ok, sekarang kami telah menetapkan lokasi, memungkinkan menarik segala sesuatu: Kami dijalankan perangkat dalam beberapa saat () loop, sampai perangkat tidak ingin menjalankan lagi. Ini akan menjadi saat pengguna menutup jendela atau menekan ALT + F4 (atau apa pun keycode menutup jendela). Sementara (-> menjalankan perangkat ())
(
Apa pun dapat ditarik antara beginScene () dan endScene () panggilan. The beginScene () panggilan membersihkan layar dengan warna dan kedalaman buffer, jika diinginkan. Lalu kita membiarkan Manager Scene dan Lingkungan GUI menarik konten mereka. Dengan endScene () semua panggilan disajikan di layar. driver-> beginScene (benar, benar, SColor (255100101140));
SMGR-> drawAll ();
guienv-> drawAll ();
driver-> endScene ();
)
Setelah kami selesai dengan render loop, kita harus menghapus Device Irrlicht dibuat sebelum dengan createDevice (). Dalam Irrlicht Engine, Anda harus menghapus semua objek yang Anda buat dengan metode atau fungsi yang dimulai dengan 'membuat'. Tujuannya adalah hanya dihapus dengan memanggil - drop> (). Lihat dokumentasi pada IRR:: IReferenceCounted:: drop () untuk informasi lebih lanjut. device-> drop ();
return 0;
)
Itu saja. Kompilasi dan jalankan.
Senin, 10 Mei 2010
Langganan:
Posting Komentar (Atom)
Tidak ada komentar:
Posting Komentar