#1 

26-03-2012 12:47:37

RVM
Membres
Date d'inscription:
Messages: 20
IP: 212.51.174.106
Courriel

Hello,

J'ai trouvé une moyen simple (dans la doc(http://irrlicht.sourceforge.net/docu/classirr_1_1gui_1_1_i_g_u_i_in_out_fader.html)) de faire un effet de fade in/out mais je n'arrive pas a le faire fonctionner : il se passe rien.
Voici mon code :

Code c++ :


#include <iostream>

#include "irrlicht.h"
#include "driverchoice.h"
#include "IGUIInOutFader.h"

using namespace irr;

#ifdef _MSC_VER
#pragma comment(lib, "Irrlicht.lib")
#endif

int main()
{
    video::E_DRIVER_TYPE driverType=driverChoiceConsole();
        if (driverType==video::EDT_COUNT)
                return 1;

    IrrlichtDevice *nulldevice = createDevice(video::EDT_NULL);

    core::dimension2d<u32> deskres = nulldevice->getVideoModeList()->getDesktopResolution();

    nulldevice->drop();

    IrrlichtDevice *device = createDevice(video::EDT_OPENGL, deskres, 32, true, false, true);

    if (device == 0)
                return 1; // could not create selected driver.

    video::IVideoDriver* driver = device->getVideoDriver();
    scene::ISceneManager* smgr = device->getSceneManager();


    driver->getMaterial2D().TextureLayer[0].BilinearFilter=true;
    driver->getMaterial2D().AntiAliasing=video::EAAM_FULL_BASIC;

    //Pour les effets de fade
    irr::gui::IGUIInOutFader *fader = device->getGUIEnvironment()->addInOutFader(NULL, 0, -1);
    fader->setColor(video::SColor(0,255,0,0));


    while(device->run())
    if (device->isWindowActive())
    {
            driver->beginScene(true, true, 0);
            smgr->drawAll();

            fader->fadeIn(10);
            fader->fadeOut(10);

            driver->endScene();
    }

    device->drop();

    return 0;
}


Quelqu'un a t-il une idée ?

Merci de votre aide,
RVM


Hors ligne


#2 

26-03-2012 13:49:10

johnplayer
Membres
Avatar de johnplayer
Date d'inscription:
Messages: 431
IP: 83.192.84.253
Courriel

Tu as ecris :
addInOutFader(NULL, 0, -1);
si tu mets NULL alors qu'il lui faut un rect, je pense que ça ne peut pas le faire.
Mets plutot :
addInOutFader(irr::core::rect<s32>(50,20), 0, -1);
Si ça ne marche pas fait un screen ou explique mieux ce qui ce passe ou ne ce passe pas. "Je n'arrive pas à le faire fonctionner" ne veut pas dire grand chose pour ce qui lisent ton post.
J'espère avoir bien ciblé ton problème.


core i7 4970K @ 4GHz - 32GB ddr3 19200(2400MHz) - ssd samsung 840 evo 250GB - GTX1080Ti (4K) - Cooler master storm stryker blanc.
"L'alcool, c'est comme Activia, c'est actif à l'intérieur et ça se voit à l'extérieur."

Hors ligne


#3 

26-03-2012 19:27:09

RVM
Membres
Date d'inscription:
Messages: 20
IP: 81.50.202.227
Courriel

Bonjour,

D'apres la doc j'ai :

Irrlicht API Ecris:

Adds an element for fading in or out.

Parameters:
rectangle Rectangle specifying the borders of the fader. If the pointer is NULL, the whole screen is used.
parent Parent item of the element, e.g. a window.
id An identifier for the fader.

Dans mon cas, l'écran reste noir. Aucun effet n'est visible.

J'ai essayé comme tu me l'as conseillé, avec un rect, mais rien à changé (voir nouveau code http://pastebin.com/ZsKDjz0w).

RVM

PS : Irrlicht 1.7.3


Hors ligne


#4 

27-03-2012 07:39:11

johnplayer
Membres
Avatar de johnplayer
Date d'inscription:
Messages: 431
IP: 83.192.84.253
Courriel

C'est tout à fait normal que ça ne marche pas! J'avais même pas remarqué.

1/ recupere l'environnement GUI avec : IGUIEnvironment* guienv = device->getGUIEnvironment();
2/ puis après smgr->drawAll() mets : guienv->drawAll();

Si tu ne demande pas à irrlicht de dessiner la GUI il ne le fera pas. Normalement tout devrait marcher maintenant!

Edit : Quand tu fais des modifications comme "fader->fadeIn(15);", fait les avant driver->beginScene(). ça fera plus propre, plus lisible. C'est un peu faire un post-rendu. Enfin, c'est un conseil, après du moment que les modifs sont faites avant les drawAll() ça marchera pareil.


core i7 4970K @ 4GHz - 32GB ddr3 19200(2400MHz) - ssd samsung 840 evo 250GB - GTX1080Ti (4K) - Cooler master storm stryker blanc.
"L'alcool, c'est comme Activia, c'est actif à l'intérieur et ça se voit à l'extérieur."

Hors ligne


#5 

27-03-2012 15:27:06

RVM
Membres
Date d'inscription:
Messages: 20
IP: 212.51.174.106
Courriel

J'avais complétement oublié cette ligne !! Comment ai je pu xD
Le code fonctionne mais l'effet l'est pas... La transition est trop rapide (voir directe) même avec des valeurs de temps énorme et un while qui fais un device->sleep.

Merci de ton aide et du conseil,
RVM


Hors ligne


#6 

31-03-2012 14:03:02

Magun
Administrateurs
Avatar de Magun
Date d'inscription:
Messages: 910
IP: 188.93.45.30
Courriel  Site web

fader->fadeIn(10); et fader->fadeOut(10);

ne doivent pas être dans la boucle de rendue !
en gros, tu dit a ton fader d'établir sont fadeIn/Out a chaque boucle de processus,
du coup c'est normal que tu n'y voie pas grand chose (tu réinitialise le timer du fader, et sa méthode)

Hors ligne


#7 

01-04-2012 14:28:54

RVM
Membres
Date d'inscription:
Messages: 20
IP: 92.161.228.31
Courriel

Magun Ecris:

fader->fadeIn(10); et fader->fadeOut(10);

ne doivent pas être dans la boucle de rendue !
en gros, tu dit a ton fader d'établir sont fadeIn/Out a chaque boucle de processus,
du coup c'est normal que tu n'y voie pas grand chose (tu réinitialise le timer du fader, et sa méthode)

Okok c'est peut être pour sa xD

Merci de l'aide,
Problème résolu,
RVM


Hors ligne


Options Liens officiels Caractéristiques Statistiques Communauté
Préférences cookies
Corrections
irrlicht
irrklang
irredit
irrxml
Propulsé par Django
xhtml 1.0
css 2.1
884 membres
1440 sujets
11337 messages
Dernier membre inscrit: Saidov17
117 invités en ligne
membre en ligne: -
RSS Feed