#0 

26-03-2012 14:47:37

RVM
Membre
Date d'inscription: 08-08-2010
Messages: 20

Hello,

J'ai trouvé une moyen simple (dans la doc(http://irrlicht.sourceforge.net/docu/cl … 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


#1 

26-03-2012 15:49:10

johnplayer
Habitué
Date d'inscription: 30-09-2007
Messages: 431

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


#2 

26-03-2012 21:27:09

RVM
Membre
Date d'inscription: 08-08-2010
Messages: 20

Bonjour,

D'apres la doc j'ai :

Irrlicht API :

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

Dernière modification par RVM (26-03-2012 21:51:34)

Hors ligne


#3 

27-03-2012 09:39:11

johnplayer
Habitué
Date d'inscription: 30-09-2007
Messages: 431

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.

Dernière modification par johnplayer (27-03-2012 09:43:10)


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


#4 

27-03-2012 17:27:06

RVM
Membre
Date d'inscription: 08-08-2010
Messages: 20

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


#5 

31-03-2012 16:03:02

Magun
SleekThink Producer
Lieu: Punakha
Date d'inscription: 18-11-2007
Messages: 904
Corrections: 2
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


#6 

01-04-2012 16:28:54

RVM
Membre
Date d'inscription: 08-08-2010
Messages: 20

Magun :

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é
Corrections
irrlicht
irrklang
irredit
irrxml
xhtml 1.0
css 2.1
Propulsé par FluxBB
Traduit par FluxBB.fr
Analysé par
880 membres
1424 sujets
11113 messages
Dernier membre inscrit: mandrifidy
22 invités en ligne
Aucun membre connecté
RSS Feed