#0 

11-02-2011 14:08:17

gille
Membre
Date d'inscription: 29-12-2010
Messages: 13

bonjour,
voila j'ai un probleme de chargement d'une texture sous forme d'une image (jpg) et l'erreur que j'ai c'est
"could not open file of texture : bata1.jpg"
et voila comment j'ai charge la texture dans mon code source

// projetblend.cpp : définit le point d'entrée pour l'application console.
//

#include "stdafx.h"
#include "irrlicht.h"


int main (void)
{

    irr::IrrlichtDevice* device = irr::createDevice(irr::video::EDT_OPENGL,
        irr::core::dimension2d<irr::s32>(800,600),32,false,true,false);

    irr::video::IVideoDriver* driver = device->getVideoDriver ();

    irr::scene::ISceneManager *sceneManager = device->getSceneManager ();

    irr::scene::IAnimatedMeshMD2* Bat_base;                                        // chargement du batiment

    Bat_base = (irr::scene::IAnimatedMeshMD2*)sceneManager->getMesh("bata1.md2");

    irr::scene::IAnimatedMeshSceneNode* NBat_base =        // creation du noeud
        sceneManager->addAnimatedMeshSceneNode(Bat_base);

    NBat_base->setMaterialFlag(                            // modification des     
        irr::video::EMF_LIGHTING, true);
   
    irr::video::ITexture *image = driver->getTexture ("bata1.jpg");

    irr::scene::ICameraSceneNode *camera =               // creation de la camera
        sceneManager->addCameraSceneNodeFPS (
        0,100.0f,300.0f);


    while (device->run())                                // la boucle de rendu
    {
        driver->beginScene(true,true,
            irr::video::SColor(0,200,200,200));
        driver->draw2DImage(image,                                    // dessin de l'image
            irr::core::position2d<irr::s32>(20,20),
            irr::core::rect<irr::s32>(0,0,300,300),
            0,
            irr::video::SColor (255,255,255,255),
            true);

        sceneManager->drawAll ();
        driver->endScene ();
    }

    device->drop ();
    return 0;

}

merci pour votre aide

Hors ligne


#1 

11-02-2011 14:31:53

mmorpglefilm
Abonné
Lieu: la galaxie UDFy-38135539
Date d'inscription: 18-05-2010
Messages: 162
Site web

Si tu à lancer ton programme à partir de ton IDE sa ne va pas marcher (en tous cas sur code::block, après les autres....), car pour une raison que je ne connais pas encore il ne le trouve pas, alors soit du donne un chemins absolus, soit lance ton programme toi même.

Et aussi je ne comprend pas très bien cette : "Bat_base = (irr::scene::IAnimatedMeshMD2*)sceneManager->getMesh("bata1.md2");"
Pourquoi ne pas faire : irr::scene::IAnimatedMeshMD2* Bat_base = sceneManager->getMesh("bata1.md2");

Et ton image "bata1.jpg" est une texture ? Parce que si c'est une texture tu viens de l'afficher dans le "vide", pour faire plus simple elle ne seras pas charger comme une texture, je te conseil de faire (si bien compris ton code) :

NBat_base->setMaterialTexture(0,  driver->getTexture("bata1.jpg"));

En espèrent ne pas avoir écrit de la *****, et en espèrent t'avoir aider.

Hors ligne


#2 

11-02-2011 23:48:25

Gehogor
Abonné
Lieu: Paris
Date d'inscription: 02-06-2009
Messages: 130
Corrections: 7

Bonsoir à vous.

Alors, en fait je pense que Gille veut afficher une image 2D dans son monde 3D, jusque là tout va bien.

Le "could not open file of texture : bata1.jpg" signifie bien qu'il y a un problème de chemin de texture OU de nom de fichier.

Souvent, il faut mettre l'image dans le même répertoire que la génération de ton "MonProg.exe", par défaut le répertoire d'exécution est le même que celui de la génération de l'exécutable lui même.

Par contre, tu peux avoir d'autres configuration possibles.

Soit il faut que tu vérifies ton répertoire d'exécution configuré dans ton code block ou visual c++ ou encore QtCreator ou encore Eclipse ...

                        *=*

Dernière modification par Gehogor (11-02-2011 23:49:31)


Et hop... wink

Hors ligne


#3 

12-02-2011 10:07:25

thesus
Membre
Date d'inscription: 11-08-2009
Messages: 19
Corrections: 1

Soit il faut que tu vérifies ton répertoire d'exécution configuré dans ton code block ou visual c++ ou encore QtCreator ou encore Eclipse ...


Pour Code Block c'est :
- clique droit sur le projet (sous "Workspace")
-" Proprieties..."
- dans l'onglet "Build Targets"
- pour "Execution working dir"
- mettre bin\Debug\

N'oubliez pas de copier le .dll à coté de du .exe sinon ça fonctionne pas.

Ce n'est pas obligatoire pour le mode Release, car en realease on ne lance pas le .exe dans l'IDE.

PS : Il est très important de connaitre les options de configuration d'un projet, sinon lors d'un projet complexe (plusieurs bibliothèques dans un même projet) on avance pas.

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
881 membres
1426 sujets
11116 messages
Dernier membre inscrit: Bidule
15 invités en ligne
Aucun membre connecté
RSS Feed