Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

Schemat gry 3D Irrlicht

Ostatnio zmodyfikowano 2014-05-31 15:48
Autor Wiadomość
ggerek
Temat założony przez niniejszego użytkownika
Schemat gry 3D Irrlicht
» 2014-05-31 15:26:35
Mam do was prośbę.

Żeby się za coś zabrać muszę to w 100% rozumieć.
Pisząc grę 2D robiłem coś podobnego jak ten schemat :
C/C++
biblioteki

inicjalizacja grafiki, dzwieku itd.

glowna petla
{
    rysowanie
    poruszanie
    logika
    aktualizowanie_stanu_gry
}

I wszystko wykonywało mi się w głównej pętli.

Ale cały czas nie mogę zrozumieć jak to działa w silniku Irrlicht.
C/C++
for( int i = 0; i != 50; i++ )
{
    node_pud = menage->addAnimatedMeshSceneNode( pudlo );
    node_pud->setPosition( core::vector3df( 0, 300 * i, 900 * i ) );
    node_pud->setScale( core::vector3df( - 300, - 300, - 300 ) );
    node_pud->getMaterial( 0 ) = tekstura;
}

while( device->run() )
{
    video->beginScene( true, true, video::SColor( 255, 0, 0, 0 ) );
    menage->drawAll();
    video->endScene();
}

Rozumiem, że powyższa pętla jest "główną pętlą gry", ale gdzie ja tu mam umieścić rysowanie świata, poruszanie się itd. Ustawianie/Rysowanie tych pudeł wykonuje się w przed tą pętlą czy w trakcie jej działania ? Głupie pytania, ale nie potrafię na nie znaleźć odpowiedzi.
P-111167
ison
» 2014-05-31 15:43:01
gdzie ja tu mam umieścić rysowanie świata
Rysowanie świata odbywa się tutaj: menage->drawAll();
IrrlichtDevice trzyma po prostu wskaźniki na utworzone obiekty i przy wywołaniu drawAll() je rysuje.
Ten wskaźnik jest tworzony w tym miejscu: node_pud = menage->addAnimatedMeshSceneNode( pudlo );, node_pud to nie jest jedyny 'uchwyt' do node'a, silnik Irrlichta trzyma swój. node_pud w tym przypadku to tylko interfejs do jego modyfikacji (np. node_pud->remove() informuje silnik, że chcesz wyrzucić node'a).

poruszanie się itd.
Gdzie chcesz.
C/C++
while( device->run() )
{
    foo();
    foo2();
    movement();
    node->setPosition(...);
    ...
   
    video->beginScene( true, true, video::SColor( 255, 0, 0, 0 ) );
    manager->drawAll();
    video->endScene();
}
P-111168
ggerek
Temat założony przez niniejszego użytkownika
» 2014-05-31 15:48:28
Dzięki bardzo już mniej-więcej rozumiem

P-111170
« 1 »
  Strona 1 z 1