Comment créer un projet à partir du SDK de Ogre ?

a marqué ce sujet comme résolu.

Bonjour,

Comme indiqué par le titre j’aimerais savoir comment on fait un projet avec le SDK de Ogre, j’ai suivi le tutoriel proposé par Ogre, ici, si je fais ça, cela me met plein d’erreur ! Par exemple visual studio 2017 m’affiche ceci : Image utilisateur Après je clique sur install comme indiqué, et j’obtiens ça : Image utilisateur Au final ma question serait je fais quoi avec ça ?

Merci pour vos aides futures!

Alors, je ne code plus depuis longtemps et jamais en C++, mais personnellement je ne crois pas voir d’erreur. Tout ce que tu vois dans l’explorateur de solutions me semble être une floppée de composants intégrés dans le SDK justement pour te permettre de coder.

Pareillement, je ne vois pas de problème avec la structure de dossier, je ne suis même pas sûr que tu doives les utiliser.

Tu devrais continuer le tuto pour essayer de coder, et si tu n’y arrives pas c’est peut-être que tu n’as tout simplement pas le niveau pour utiliser Ogre tout de suite (de mémoire, il me semble que Ogre est loin d’être la solution la plus simple à utiliser).

Quel est ton projet en fait ? Il y a peut-être d’autres technos plus adaptées.

+0 -0

Merci pour cette réponse, je n’ai pas de projet particulier pour l’instant, je souhaite juste commencer à coder en 3d. J’ai fait quelque petit jeu en 2d avec la sfml et j’aimerais passer à la 3d par conséquent. Si vous avez d’autre moteur 3d graphique à me proposer je suis preneur mais d’après ce que j’ai lu ce serait le meilleur pour le c++. Si j’ai bien compris je dois avoir en permanence tous ces composants, c-a-d que je doit à chaque fois générer ma solution OGRE.sln(mais ça veux dire qu’il faut que je copie à chaque fois tout mon dossier build ou juste le sdk ?). Parce que je n’avais pas compris ça. Quand au erreur c’est parce que j’ai créé un projet vide en mettant le code du tuto pour savoir si ça marchait : + en entête les 2 lignes fournies dans le tuto.

find_package(OGRE 1.11 REQUIRED COMPONENTS Bites RTShaderSystem)

file(COPY ${ OGRE_CONFIG_DIR } / resources.cfg DESTINATION ${ CMAKE_BINARY_DIR })

#include "Ogre.h"
#include "OgreApplicationContext.h"
#include "OgreInput.h"
#include "OgreRTShaderSystem.h"
#include "OgreApplicationContext.h"
#include <iostream>

using namespace Ogre;
using namespace OgreBites;

class BasicTutorial1
        : public ApplicationContext
        , public InputListener
{
public:
    BasicTutorial1();
    virtual ~BasicTutorial1() {}

    void setup();
    bool keyPressed(const KeyboardEvent& evt);
};


BasicTutorial1::BasicTutorial1()
    : ApplicationContext("OgreTutorialApp")
{
}


void BasicTutorial1::setup()
{
    // do not forget to call the base first
    ApplicationContext::setup();
    addInputListener(this);

    // get a pointer to the already created root
    Root* root = getRoot();
    SceneManager* scnMgr = root->createSceneManager();

    // register our scene with the RTSS
    RTShader::ShaderGenerator* shadergen = RTShader::ShaderGenerator::getSingletonPtr();
    shadergen->addSceneManager(scnMgr);

    // -- tutorial section start --
    //! [turnlights]
    scnMgr->setAmbientLight(ColourValue(0.5, 0.5, 0.5));
    //! [turnlights]

    //! [newlight]
    Light* light = scnMgr->createLight("MainLight");
    SceneNode* lightNode = scnMgr->getRootSceneNode()->createChildSceneNode();
    lightNode->attachObject(light);
    //! [newlight]

    //! [lightpos]
    lightNode->setPosition(20, 80, 50);
    //! [lightpos]

    //! [camera]
    SceneNode* camNode = scnMgr->getRootSceneNode()->createChildSceneNode();

    // create the camera
    Camera* cam = scnMgr->createCamera("myCam");
    cam->setNearClipDistance(5); // specific to this sample
    cam->setAutoAspectRatio(true);
    camNode->attachObject(cam);
    camNode->setPosition(0, 0, 140);

    // and tell it to render into the main window
    getRenderWindow()->addViewport(cam);
    //! [camera]

    //! [entity1]
    Entity* ogreEntity = scnMgr->createEntity("ogrehead.mesh");
    //! [entity1]

    //! [entity1node]
    SceneNode* ogreNode = scnMgr->getRootSceneNode()->createChildSceneNode();
    //! [entity1node]

    //! [entity1nodeattach]
    ogreNode->attachObject(ogreEntity);
    //! [entity1nodeattach]

    //! [cameramove]
    camNode->setPosition(0, 47, 222);
    //! [cameramove]

    //! [entity2]
    Entity* ogreEntity2 = scnMgr->createEntity("ogrehead.mesh");
    SceneNode* ogreNode2 = scnMgr->getRootSceneNode()->createChildSceneNode(Vector3(84, 48, 0));
    ogreNode2->attachObject(ogreEntity2);
    //! [entity2]

    //! [entity3]
    Entity* ogreEntity3 = scnMgr->createEntity("ogrehead.mesh");
    SceneNode* ogreNode3 = scnMgr->getRootSceneNode()->createChildSceneNode();
    ogreNode3->setPosition(0, 104, 0);
    ogreNode3->setScale(2, 1.2, 1);
    ogreNode3->attachObject(ogreEntity3);
    //! [entity3]

    //! [entity4]
    Entity* ogreEntity4 = scnMgr->createEntity("ogrehead.mesh");
    SceneNode* ogreNode4 = scnMgr->getRootSceneNode()->createChildSceneNode();
    ogreNode4->setPosition(-84, 48, 0);
    ogreNode4->roll(Degree(-90));
    ogreNode4->attachObject(ogreEntity4);
    //! [entity4]

    // -- tutorial section end --
}


bool BasicTutorial1::keyPressed(const KeyboardEvent& evt)
{
    if (evt.keysym.sym == SDLK_ESCAPE)
    {
        getRoot()->queueEndRendering();
    }
    return true;
}


int main(int argc, char **argv)
{
    try
    {
        BasicTutorial1 app;
        app.initApp();
        app.getRoot()->startRendering();
        app.closeApp();
    }
    catch (const std::exception& e)
    {
        std::cerr << "Error occurred during execution: " << e.what() << '\n';
        return 1;
    }

    return 0;
}

//! [fullsource]

En fait je crois pas avoir bien compris comment marchaient les deux lignes ! Si vous pouviez m’expliquer !:D Voilà j’espère avoir été clair, merci. Re : du coup j’ai crée un projet dans dans la solution OGRE.sln où j’ai mis ce code, du coup j’obtiens ces erreurs :

Gravité Code Description Projet Fichier Ligne État de la suppression Erreur LNK1120 1 externes non résolus SampleBrowser C:\ogreSdk\ogre\build\bin\Release\SampleBrowser.exe 1 Erreur (active) E0135 class "Ogre::Vector<3, Ogre::Real>" n’a pas de membre "UNIT_Y" SampleBrowser c:\ogreSdk\ogre\OgreMain\include\OgreCamera.h 340 Erreur (active) E0135 class "Ogre::Vector<3, Ogre::Real>" n’a pas de membre "ZERO" SampleBrowser c:\ogreSdk\ogre\OgreMain\include\OgreCamera.h 438 Erreur (active) E0135 class "Ogre::Vector<3, Ogre::Real>" n’a pas de membre "ZERO" SampleBrowser c:\ogreSdk\ogre\OgreMain\include\OgreEntity.h 584 Erreur (active) E0135 class "Ogre::Vector<3, Ogre::Real>" n’a pas de membre "UNIT_SCALE" SampleBrowser c:\ogreSdk\ogre\OgreMain\include\OgreMatrix4.h 319 Erreur (active) E0135 class "Ogre::Vector<3, Ogre::Real>" n’a pas de membre "UNIT_SCALE" SampleBrowser c:\ogreSdk\ogre\OgreMain\include\OgreStaticGeometry.h 619 Erreur LNK2019 symbole externe non résolu _WinMain@16 référencé dans la fonction "int cdecl scrt_common_main_seh(void)" (?__scrt_common_main_seh@@YAHXZ) SampleBrowser C:\ogreSdk\ogre\build\Samples\Browser\MSVCRT.lib(exe_winmain.obj) 1

+0 -0

Bonjour tout le monde ! Voilà je sais d’où viennent toutes ces erreurs, cela vient du fait que le code n’est pas codé en macro c++, le problème je sais pas exactement ce que c’est et où apprendre cette partie du c++ ! Si quelqu’un pouvait m’indiquer un tuto. Autre chose : lorsque je suis dans la configuration évoqué plus haut je sais pas comment je fais pour refaire un autre projet sans tout copier. Je veux juste indiquer le chemin comme proposé par le tuto de ogre : ici, je n’arrive pas à appliquer ce qui y est écrit !
Merci.

+0 -0
Connectez-vous pour pouvoir poster un message.
Connexion

Pas encore membre ?

Créez un compte en une minute pour profiter pleinement de toutes les fonctionnalités de Zeste de Savoir. Ici, tout est gratuit et sans publicité.
Créer un compte