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

SDL Discussion :

SDL - Utiliser les Events sans video.


Sujet :

SDL

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    10
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 10
    Points : 8
    Points
    8
    Par défaut SDL - Utiliser les Events sans video.
    Bonjour a tous.

    Pour mon projet, j'ai besoin d'utiliser des fonctions relatives à la gestion du temps et du clavier (accesoirement des joysticks).
    Je pense avoir trouve mon bonheur avec la SDL qui me fournit exactement les fonctions dont j'ai besoin (SLD_GetTicks et SDL_PollEvent, nottement).

    Seulement, l'utilisation des fonctions qui gerent les evenements suppose d'avoir initialiser le sous-system Video ainsi que d'appeler SDL_SetVideoMode.

    Mon probleme vient du fait, qu'entre autres, mon projet n'envoit des outputs seulement sur une fenetre console et sur des ports ES.
    Ce qui m'embete, c'est qu'en initialisant le VideoMode pour avoir acces aux events du clavier, je me retrouve obligatoirement avec une fenetre graphique dont je n'ai que faire.

    Quelqun saurait-il comment initialiser la SLD pour avoir acces au clavier sans q'une fenetre Video s'affiche ?
    Je me doute du pourquoi de la necessite d'initialiser video et events ensemble. Mais je n'ai trouve aucune fonction ou parametre pour enpecher la creation de la fenetre.

    En vous remerciant de la lecture de ce poste.

  2. #2
    Futur Membre du Club
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    7
    Détails du profil
    Informations personnelles :
    Âge : 34
    Localisation : France

    Informations forums :
    Inscription : Juillet 2004
    Messages : 7
    Points : 6
    Points
    6
    Par défaut
    Je pense que dans ton cas, la SDL n'est pas appropriée, utilise une autre librérie, je sais pas comme l'API windows, ou vas ici, pour faire ton choix.

  3. #3
    Expert éminent sénior

    Avatar de fearyourself
    Homme Profil pro
    Ingénieur Informaticien Senior
    Inscrit en
    Décembre 2005
    Messages
    5 121
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : Ingénieur Informaticien Senior
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2005
    Messages : 5 121
    Points : 11 877
    Points
    11 877
    Par défaut
    Citation Envoyé par AliceD
    Bonjour a tous.

    Pour mon projet, j'ai besoin d'utiliser des fonctions relatives à la gestion du temps et du clavier (accesoirement des joysticks).
    Je pense avoir trouve mon bonheur avec la SDL qui me fournit exactement les fonctions dont j'ai besoin (SLD_GetTicks et SDL_PollEvent, nottement).

    Seulement, l'utilisation des fonctions qui gerent les evenements suppose d'avoir initialiser le sous-system Video ainsi que d'appeler SDL_SetVideoMode.

    Mon probleme vient du fait, qu'entre autres, mon projet n'envoit des outputs seulement sur une fenetre console et sur des ports ES.
    Ce qui m'embete, c'est qu'en initialisant le VideoMode pour avoir acces aux events du clavier, je me retrouve obligatoirement avec une fenetre graphique dont je n'ai que faire.

    Quelqun saurait-il comment initialiser la SLD pour avoir acces au clavier sans q'une fenetre Video s'affiche ?
    Je me doute du pourquoi de la necessite d'initialiser video et events ensemble. Mais je n'ai trouve aucune fonction ou parametre pour enpecher la creation de la fenetre.

    En vous remerciant de la lecture de ce poste.
    Je ne suis pas sûr mais je pense que c'est non...

    Non, comme pour Glut, je ne pense pas que SDL permette ce genre de chose, il faut une fenêtre SDL pour utiliser les événements...

    Jc

  4. #4
    Rédacteur
    Avatar de Laurent Gomila
    Profil pro
    Développeur informatique
    Inscrit en
    Avril 2003
    Messages
    10 651
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2003
    Messages : 10 651
    Points : 15 920
    Points
    15 920
    Par défaut
    Le problème c'est que tu ne recevras des évènements que par rapport à une fenêtre. Pas de fenêtre, pas d'évènement.

    Il faut donc que tu fasses des requêtes asynchrones pour récupérer l'état des touches ou de la souris sans avoir de fenêtre, mais je pense que seule l'API Win32 sait le faire (GetAsyncKeyState, etc.). Ca semble la meilleure solution pour ce que tu veux faire. Après, si ça doit être portable...

  5. #5
    Futur Membre du Club
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    10
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 10
    Points : 8
    Points
    8
    Par défaut
    Merci pour la clarete et la qualite de vos reponses.

    Bien sur ! l'API Windows. J'avais deja fait des recherches, mais je ne trouvais pas de fonctions permettant de gerer plusieures touches en meme temps. Merci de m'avoir indiquer les fonctions !

    J'adopterai donc GetKeyState et getAsyncKey.

    Pour remplacer SDL_GetTick, je compte untiliser une simple fonction genre GetTime. J'ai en fait besoin de compter le nombre de miliseconds qui se sont ecoulees entre deux operations. Cette fonction est-elle optimale dans ce cas ?

  6. #6
    Rédacteur
    Avatar de Laurent Gomila
    Profil pro
    Développeur informatique
    Inscrit en
    Avril 2003
    Messages
    10 651
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2003
    Messages : 10 651
    Points : 15 920
    Points
    15 920
    Par défaut
    GetTickCount et timeGetTime auront une résolution de plusieurs dizaines de millisecondes selon le système.

    Le mieux est d'utiliser GetPerformanceCounter et GetPerformanceFrequency (voir FAQ C pour un exemple).

  7. #7
    Futur Membre du Club
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    10
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 10
    Points : 8
    Points
    8
    Par défaut
    Sincerement, merci !

    Les fonctions qui m'ont ete indiquees sont exactment celles qui me fallaient.

    Je me rends bien compte que mon problem n'etait pas insurmontable et qu'en cherchant mieux, j'aurais pu le resoudre sans deranger (c'est la que l'on voir que l'experience fait la difference !). Alors merci aux membres du forum pour leur patience et leur competence.

    Si le probleme se pose pour quelqun a l'avenir, je resume :

    GetKeyState pour detecter l'etat d'une touche

    QueryPerformanceCounter pour remplacer SDL_CountTick (avec QueryPerformanceFrequency pour determiner la resolution de l'horloge)

    Encore merci.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Utiliser les MEX sans MATLAB
    Par raillou dans le forum MATLAB
    Réponses: 1
    Dernier message: 27/02/2014, 16h18
  2. [Dojo] Comment utiliser les events du drag and drop de dojo
    Par Invité dans le forum Bibliothèques & Frameworks
    Réponses: 1
    Dernier message: 03/07/2012, 23h55
  3. Utiliser les exceptions sans sortir
    Par omelhor dans le forum Langage
    Réponses: 0
    Dernier message: 06/06/2011, 09h37
  4. Réponses: 1
    Dernier message: 08/11/2004, 16h04

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