IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Ogre Discussion :

Gestion des evenements avec la SDL


Sujet :

Ogre

  1. #1
    Membre confirmé
    Avatar de gusgus
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    500
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 500
    Points : 641
    Points
    641
    Par défaut Gestion des evenements avec la SDL
    J'utilise Ogre.Pour la gestion des evenements j'essay la SDL mais sa ne marche pas .En effet je charge SDL.h,je met SDL_event evt
    SDL_wait_event comme dans les exemples du site .Il n'y a pas d'erreur de compilation ,mais il ne detecte pas quand j'enfonce une touche.
    Que faire??
    J'espere avoir été claire.

  2. #2
    Yno
    Yno est déconnecté
    Membre habitué Avatar de Yno
    Inscrit en
    Novembre 2005
    Messages
    138
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 138
    Points : 141
    Points
    141
    Par défaut
    Salut,

    Peut-être qu'un bout de code pourrait nous aider à résoudre ton problème...

  3. #3
    Rédacteur
    Avatar de bafman
    Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2003
    Messages
    2 574
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Novembre 2003
    Messages : 2 574
    Points : 5 323
    Points
    5 323
    Par défaut
    Ogre a déjà une gestion des evenements en interne, tu risque donc de voir Ogre vider le buffer d'IO avant que tu ne fasse tes propres tests... il est préférable d'utiliser le systeme d'IO d'OGRE directement

  4. #4
    Membre confirmé
    Avatar de gusgus
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    500
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 500
    Points : 641
    Points
    641
    Par défaut
    dsl du retar j'avai du boulo ces jours si.
    Ogre ne gere pas les joystiques.C'est pour sa que je veu utiliser la SDL.


    mais j'ai un autre bug:j'ai ressayer de metre le imput de ogre pour la touche de orgre mais sa ne marche plus...

    voila le code

    main.cpp
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
     
    #if OGRE_PLATFORM == OGRE_PLATFORM_WIN32
    #define WIN32_LEAN_AND_MEAN
    #include <windows.h>
    #endif
     
    #include "FrameListner.h"
     
     
     
    #ifdef __cplusplus
    extern "C" {
    #endif
     
    #if OGRE_PLATFORM == OGRE_PLATFORM_WIN32
       INT WINAPI WinMain( HINSTANCE hInst, HINSTANCE, LPSTR strCmdLine, INT )
    #else
       int main(int argc, char *argv[])
    #endif
       {
    	try{
    	// Creation de l'objet root
    	Ogre::Root* root=new Ogre::Root();
     
    	// Creation de l'objet RenderWindow
    	if(!root->restoreConfig()){	// Test si un fichier de config existe deja
    		if(!root->showConfigDialog()){ // Test si, suite a l'affichage de la boite de dialogue, l'utilisateur a appuyer sur OK ou Annuler
    			delete root;
    			return -1; // On ressort avec un code d'erreur, car l'affichage ne peut etre creer
    		}
    	}
    	Ogre::RenderWindow* pRenderWindow=NULL;
    	pRenderWindow=root->initialise(true,"Tutoriel 2 App");
    	// Creation du gestionnaire de scene
    	Ogre::SceneManager* pSceneManager=NULL;
    	pSceneManager=root->createSceneManager(Ogre::ST_GENERIC,"SceneManager generic");
     
    	// Creation des ressources
     
    	Ogre::ConfigFile cf;
    	cf.load("resources.cfg");
     
    	Ogre::ConfigFile::SectionIterator si=cf.getSectionIterator();
     
    	Ogre::String secNom, typeArch, cheminArch;
    	while(si.hasMoreElements()){
    		secNom = si.peekNextKey();
    		Ogre::ConfigFile::SettingsMultiMap *settings = si.getNext();
    		Ogre::ConfigFile::SettingsMultiMap::iterator it;
     
    		for (it=settings->begin(); it!=settings->end();++it){
    			typeArch = it->first;
    			cheminArch = it->second;
    			Ogre::ResourceGroupManager::getSingleton().addResourceLocation(cheminArch,typeArch,secNom);
    		}
    	}
    	Ogre::ResourceGroupManager::getSingleton().initialiseAllResourceGroups();
     
    	// Creation d'une scene, voir tutoriel 1
    	Ogre::Entity* pEntity=pSceneManager->createEntity("Ogre Head","OgreHead.mesh");
    	Ogre::SceneNode* pNode=pSceneManager->getRootSceneNode()->createChildSceneNode("Node");
    	pNode->attachObject(pEntity);
     
    	// Creation de la camera
    	Ogre::Camera* pCamera=pSceneManager->createCamera("Camera");
    	pCamera->setPosition(Ogre::Vector3(0,50,200));
    	pCamera->lookAt(Ogre::Vector3(0,0,0));
     
    	// Creation du Viewport
    	Ogre::Viewport* pViewport = pRenderWindow->addViewport(pCamera);
    	pViewport->setBackgroundColour(Ogre::ColourValue(0,0,0.3));
    	pCamera->setAspectRatio(Ogre::Real(pViewport->getActualWidth()) / Ogre::Real(pViewport->getActualHeight()));
     
        FrameListner* FrameListner1=new FrameListner;
    	root->addFrameListener(FrameListner1);
     
    	// Une très mauvaise idée si l'on ne veut pas boucler sans fin !!!
    	 root->startRendering();
     
     
    	// Nettoyage de l'objet Ogre: celui-ci se charge de détruire les entités, les caméras ...
    	delete root;
    	}catch(Ogre::Exception e){
    		#if OGRE_PLATFORM == OGRE_PLATFORM_WIN32
    			MessageBox(NULL,e.getFullDescription().c_str(),
    				"Erreur d'initialisation de l'objet Root",MB_OK|MB_ICONERROR|MB_TASKMODAL);
    		#else
    			std::cerr << "Une exception a été levée: " << e.getFullDescription().c_str() << std::endl;
    		#endif
    	}
        return 0;
    }
     
    #ifdef __cplusplus
    }
    #endif
    FrameListner.h
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
     
    #include <ogre.h>
    #include <SDL.h>
    #pragma once
     
     
     
    class FrameListner :public Ogre::FrameListener
    {
    public:
    	FrameListner(void);
    public:
    	~FrameListner(void);
    	bool frameStarted(const Ogre::FrameEvent& evt);
     
     
    public:
    	Ogre::InputReader* input; 
    	int limit;
    	const Ogre::FrameEvent evt;
    	SDL_Event Event;
     
    };
    FrameListner.cpp
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
     
    include "FrameListner.h"
     
    FrameListner::FrameListner(void)
    {
    	input=Ogre::PlatformManager::getSingleton().createInputReader();
    	limit=0;
    }
     
    FrameListner::~FrameListner(void)
    {
    }
     
    bool FrameListner::frameStarted(const Ogre::FrameEvent& evt)
    {
    	input->capture();
    	limit=limit+1;
    	if(input->isKeyDown(Ogre::KC_ESCAPE)) return false;
    	SDL_WaitEvent(&Event);
        if(Event.type==SDL_KEYDOWN) return false;
    	if (limit==1000) return false;
    	return true;
    }
    PS:le bouton balise de code ne marche pas chez moi ni les emotiqueones

  5. #5
    Rédacteur

    Avatar de Matthieu Brucher
    Profil pro
    Développeur HPC
    Inscrit en
    Juillet 2005
    Messages
    9 810
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Développeur HPC
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2005
    Messages : 9 810
    Points : 20 970
    Points
    20 970
    Par défaut
    Pour le PS -> tu n'as pas je JavaScript d'activé, au hasard ?

  6. #6
    Membre confirmé
    Avatar de gusgus
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    500
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 500
    Points : 641
    Points
    641
    Par défaut
    desoler du retar j'etai en vacance.

    C'est quoi le java scripte?Et mes icones remarchent maitenant...Faut pas chercher a comprendre mon ordi...
    Mais pour Ogre personne comprend pourquoi sa marche pas?

Discussions similaires

  1. Gestion des évenements avec sdl
    Par sharu_a99 dans le forum C++
    Réponses: 1
    Dernier message: 27/11/2007, 07h46
  2. gestion des evenements avec j2EE
    Par fAdoua123 dans le forum Servlets/JSP
    Réponses: 3
    Dernier message: 23/10/2007, 15h35
  3. gestion des collisions avec sdl
    Par kirtap1969 dans le forum SDL
    Réponses: 3
    Dernier message: 18/10/2007, 21h16
  4. Réponses: 8
    Dernier message: 22/06/2007, 18h35

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo