Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?
Autor: Mariusz Klepaczko
Biblioteki C++

Pierwsze okno 3D

[lekcja] Rozdział 2. Jak utworzyć okno, zapewnić synchronizację i wybrać tryb pełnoekranowy.

Pierwsze Okno 3d

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

using namespace irr;
using namespace core;
using namespace scene;
using namespace video;

int main()

{
    IrrlichtDevice * device = createDevice( EDT_OPENGL, core::dimension2d < u32 >( 800, 600 ),
    32, false, false, false, 0 );
   
    video::IVideoDriver * video = device->getVideoDriver();
    scene::ISceneManager * menage = device->getSceneManager();
    menage->addCameraSceneNode( 0, vector3df( 0, 30, - 40 ), vector3df( 0, 5, 0 ) );
   
    while( device->run() )
   
    {
        video->beginScene( true, true, video::SColor( 255, 0, 10, 200 ) );
        menage->drawAll();
        video->endScene();
    }
    device->drop();
    return 0;
}


Po skompilowaniu wyświetli nam się ładny, ciemno niebieski ekran. Na razie tylko tyle, albo aż tyle. Gdyż właśnie uruchomiliśmy okno w którym dodaje się całe sceny, modele, tworzy gry, itp.

Pierwsza linia kodu:

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

to nic innego jak tak zwana dyrektywa preprocesora, nie będę się nad nią rozwodził gdyż zakładam, że wszyscy przerobili kurs C++.

C/C++
IrrlichtDevice * device = createDevice( EDT_OPENGL, core::dimension2d < u32 >( 800, 600 ), 32, false, false, false, 0 );

Pamiętajmy, że IrrlichtDevice* device to nic innego jak przyporządkowanie swojej nazwy, gdyż nie chcemy co chwilę używać IrrlichtDevice, łatwiej w tym wypadku użyć nazwy device, pamiętajmy o tym, że może to być każda inna nazwa, np. "urządzenie" lub "obsługa". Tyle że wtedy musimy wszędzie zamienić device na obsługa itp. Jeżeli nie wiesz o co chodzi odsyłam do kursu C++.

To jak na razie jedna z najważniejszych linii kodu w tym samouczku. Tu określamy, jakiego urządzenia używamy, do wyświetlania obrazu w tym wypadku jest to OpenGl, można oczywiście wywołać "direxa", wtedy zmieniamy EDT_OPENGL na EDT_DIRECT3D9.

To nie wszystko mamy jeszce tryby wyśietlania EDT_SOFTWARE i EDT_BURNINGSVIDEO, nie polecam ich gdyż, nie obfitują one w dużą liczbe FPS. Niestety, zdarza się że, na niektórych laptopach nie da się uruchomić pozostałych trybów.

Pamiętajmy o tym, że pisząc pod OpenGl nasz program staje się przenośny z tego samego powodu nie powinniśmy też używać metody WinMain. (800,600) to rozmiar okna w którym wyświetla się nasz projekt. Następnie 32 to nic innego jak liczba bitów na piksel w trybie pełno ekranowym, może być np. 16, ale przy takim rozwoju sprzętu nie widzę potrzeby inicjowania trybu mniejszego niż 32 bitowego.

Teraz magiczne false,false,false, pierwsze false to tryb wyświetlania jeżeli zamienimy na true to program otworzy nam się w trybie pełno ekranowym. Drugie false informuje program czy chcemy korzystać z stencilbuffer, czyli z rysowania cieni, ale o tym w innym samouczku. Trzecie false włączamy lub wyłączamy -> vsync, przydatne tylko w trybie pełnoekranowym.

Natomiast 0 informuje czy chcemy korzystać z przechwytywania zdarzeń, jeżeli chcemy, zamieniamy je na... ale o tym w III części kursu.

C/C++
video::IVideoDriver * driver = video->getVideoDriver();
scene::ISceneManager * menage = device->getSceneManager();

Tu raczej też nie ma co wyjaśniać przypożądkowywujemy swoje nazwy by nie pisać co chwile device-> getVideoDriver () itp. Pamiętajmy iż wcześniej przyporządkowaliśmy tą nazwę do urządzenia, jak pisałem wcześniej mogła to być inna nazwa np. obsługa

C/C++
menage->addCameraSceneNode( 0, vector3df( 0, 30, - 40 ), vector3df( 0, 5, 0 ) );

Ta linia kodu to wczytanie naszej kamery do managera (menage) naszej sceny w tym wypadku nazwanego jako menage (taki mój kaprys).

Wy możecie nazwać urządzenie np. urządzenie, ale wtedy mamy o cztery litery więcej do pisania. Pamiętajmy by sobie ułatwiać, a nie utrudniać. Jednak równie ważne jest, by nazwy były łatwe do zapamiętania.
 
Irrlicht udostępnia nam też gotową kamerę typu FPS, ale o tym i innych rzeczach w kolejnym tutku.

Materiały do pobrania

Pliki potrzebne do uruchomienia tej lekcji można pobrać z naszego repozytorium.
Poprzedni dokument Następny dokument
Instalacja Wczytywanie modelu