05-08-2010 15:48:46
- darktux72
- Membres
- Date d'inscription:
- Messages: 5
- IP: 86.71.190.73
- Courriel
Bonjour,
J'ai un problème avec la transparence avec une texture, voici un screen dans Irrlicht :
Voici le screen dans blender, seul le noir doit être transparent dans Irrlicht normalement...
Voici la texture
Le carré en bas à droite est du gris transparent.
Je pense que c'est dans Irrlicht que j'ai zappé quelque chose, j'ai utilisé "setMaterialType(EMT_TRANSPARENT_ALPHA_CHANNEL);" pour mettre la transparence, il doit y avoir autre chose à faire.
Voici le code :
Code c++ :
#include <iostream>
#include <IRR/irrlicht.h>
using namespace std;
using namespace irr;
using namespace core;
using namespace scene;
using namespace video;
using namespace io;
using namespace gui;
int main(void)
{
// init
IrrlichtDevice* device = createDevice(EDT_OPENGL,
dimension2d<u32>(800,600),32,false,false,false);
IVideoDriver* driver = device->getVideoDriver ();
ISceneManager *sceneManager = device->getSceneManager ();
device->getCursorControl ()-> setVisible (false); // curseur invisible
// ajout du modele
IMesh* modele =
sceneManager->getMesh("maps/Test/objects/abribus.obj");
IMeshSceneNode* Nmodele =
sceneManager->addMeshSceneNode(modele);
// le modèle ne recoit pas la lumiere
Nmodele->setMaterialFlag(
EMF_LIGHTING, false);
// ajout de la transparence
Nmodele->setMaterialType(EMT_TRANSPARENT_ALPHA_CHANNEL);
// ajout du SkyDome
ISceneNode* skydome=sceneManager->addSkyDomeSceneNode(driver->getTexture("data/skydome.jpg"),16,8,0.95f,2.0f);
// ajout de la camera
ICameraSceneNode *camera = // creation de la camera
sceneManager->addCameraSceneNodeFPS (0, 100.0f, 0.01f, 0, 0, 0, false);
// boucle de rendu
while (device->run())
{
driver->beginScene(true,true,
SColor(0,141,182,205));
sceneManager->drawAll ();
driver->endScene ();
}
device->drop ();
return 0;
}Merci pour votre aide
Hors ligne
05-08-2010 19:32:46
- darktux72
- Membres
- Date d'inscription:
- Messages: 5
- IP: 86.71.190.73
- Courriel
Après de longues heures de recherche, j'ai finit par trouver, pour ceux que ça intéresse, il faut juste rajouter cette ligne :
SceneManager->getParameters()->setAttribute(scene::ALLOW_ZWRITE_ON_TRANSPARENT, true);
Doc : http://irrlicht.sourceforge.net/docu/namespaceirr_1_1scene.html#ab585d23bc2a3d02cd368d8bfd0b1414a
Hors ligne



