Historique des modifications - Message

Message #10839

Sujet: Avoir la main verte


Type Date Auteur Contenu
Création du message 16-10-2012 08:02:54 Memorial76
C'est à n'y rien comprendre!!!
Voici mon code de test:
//CREATION D'UN CUSTOM SCENE NODE: HEXAGONE
	
	CIrrHexagoneSceneNode* myNode = new CIrrHexagoneSceneNode(pSceneMgr->getRootSceneNode(), pSceneMgr, pWorldManager, NEWCASE);
	CIrrHexagoneSceneNode* myNode2 = new CIrrHexagoneSceneNode(pSceneMgr->getRootSceneNode(), pSceneMgr, pWorldManager, NEWCASE2);
	CIrrHexagoneSceneNode* myNode3 = new CIrrHexagoneSceneNode(pSceneMgr->getRootSceneNode(), pSceneMgr, pWorldManager, NEWCASE3);

	//SHADERS
	video::IGPUProgrammingServices* pGPU = pDriver->getGPUProgrammingServices();
	s32 newMaterialType1 = 0;
    s32 newMaterialType2 = 0;
	io::path psFileName = "./Textures/Shaders/dx.hlsl";
	io::path vsFileName = "./Textures/Shaders/dx.hlsl";
	CShaderCallBack* pShaderCallBack = new CShaderCallBack(pDevice);

	newMaterialType1 = pGPU->addHighLevelShaderMaterialFromFiles(
                                vsFileName, "vertexMain", video::EVST_VS_1_1,
                                psFileName, "pixelMain", video::EPST_PS_1_1,
								pShaderCallBack, video::EMT_SOLID);
	pShaderCallBack->drop();

	myNode->setMaterialType((video::E_MATERIAL_TYPE)newMaterialType1);
	myNode2->setMaterialType((video::E_MATERIAL_TYPE)newMaterialType1);
	myNode3->setMaterialType((video::E_MATERIAL_TYPE)newMaterialType1);

	myNode3->drop();
	myNode2->drop();
	myNode->drop();

En résumé, je crée 3 scenes nodes différents: myNode, myNode2 et myNode3 auxquels j'applique le shader en question (et qui ne fonctionne toujours pas).
Dans l'état actuel des choses, mes 3 nodes sont noirs. Normal, le shader ne fonctionne pas. Sauf, que, si je ne l'applique plus au myNode2:

myNode->setMaterialType((video::E_MATERIAL_TYPE)newMaterialType1);
//myNode2->setMaterialType((video::E_MATERIAL_TYPE)newMaterialType1);
myNode3->setMaterialType((video::E_MATERIAL_TYPE)newMaterialType1);

...mes 3 nodes affichent la texture de base (couleur terre).

Si, maintenant, je ne l'applique qu'à myNode2:

//myNode->setMaterialType((video::E_MATERIAL_TYPE)newMaterialType1);
myNode2->setMaterialType((video::E_MATERIAL_TYPE)newMaterialType1);
//myNode3->setMaterialType((video::E_MATERIAL_TYPE)newMaterialType1);

...mes trois nodes sont noirs comme si le shader défaillant leur était appliqué...
Tout se passe comme si ce que j'appliquais à myNode2 était valable pour tous les autres.
J'ai bien essayé de le supprimer mais alors, le comportement se reproduit pour le node arrivant en second (ici donc, myNode3).

Je donne pourtant bien 3 identifiants différents et aucun n'est (à ma connaissance) parent de l'autre.
Ceci m'amène d'ailleurs à une idée: afficher le sceneGraph dans une fenêtre histoire de pouvoir visualiser ma scène...

Retour

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
230 invités en ligne
membre en ligne: -
RSS Feed