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 :

un pointeur de souris en SDL2


Sujet :

SDL

  1. #1
    Membre averti
    Avatar de stc074
    Homme Profil pro
    Codeur du dimanche
    Inscrit en
    Janvier 2009
    Messages
    1 014
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Lozère (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Codeur du dimanche

    Informations forums :
    Inscription : Janvier 2009
    Messages : 1 014
    Points : 407
    Points
    407
    Billets dans le blog
    1
    Par défaut un pointeur de souris en SDL2
    Bonjour, j'aimerais afficher un pointeur de souris en SDL2 avec un fond qui doit rester.
    Je pensais faire comme ça :

    1-sauver la portion en x,y de dimension h et w (les dimensions du pointeurs)
    2-copier mon pointeur (un png avec transparence) en x, y w/h
    3-restaurer ma portion préalablement en x,y
    4-tester les nouvelles coordonnées x,y de la souris
    revenir à 1

    Seulement je vois pas comment sauver la portion de mon SDL_Renderer, j'ai lu la doc j'ai rien trouvé, je suppose qu'ils ont prévu le coup, je bloque un peu.
    Merci.

  2. #2
    Responsable 2D/3D/Jeux


    Avatar de LittleWhite
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2008
    Messages
    26 858
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Mai 2008
    Messages : 26 858
    Points : 218 577
    Points
    218 577
    Billets dans le blog
    120
    Par défaut
    Bonjour,

    Vous voulez faire une trainée du curseur, comme dans les démos Atari ST (entre autre) ?
    3-restaurer ma portion préalablement en x,y
    Je ne vois pas trop ce que cela veux dire.

    Je propose une méthode un peu différente, qui, d'après moi, ne nécessite pas de sauvegarde de portion.
    dessin de la scène
    affichage des pointeurs
    De plus, il faut désactiver le pointeur par défaut (le cacher complètement). Ensuite, avec la boucle d'événements, vous allez récupérer la position du pointeur de souris et vous allez dessiner vous même le pointeur selon cette position.
    Il vous faudra un tableau, par exemple, de cinq positions dans lequel vous garderez les positions du curseur. Ainsi, lors de l'affichage du curseur, il suffit d'une boucle pour afficher les données du tableau.

    Pour le renderer, le soucis c'est qu'il est en mémoire vidéo, donc cela est plus difficile/lent à récupérer son rendu.
    Du coup, une solution serait de passer par une Surface pour le rendu (donc purement logicielle), car il ne me semble pas qu'ils aient mis de méthode pour récupérer le rendu
    Vous souhaitez participer à la rubrique 2D/3D/Jeux ? Contactez-moi

    Ma page sur DVP
    Mon Portfolio

    Qui connaît l'erreur, connaît la solution.

  3. #3
    Membre averti
    Avatar de stc074
    Homme Profil pro
    Codeur du dimanche
    Inscrit en
    Janvier 2009
    Messages
    1 014
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Lozère (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Codeur du dimanche

    Informations forums :
    Inscription : Janvier 2009
    Messages : 1 014
    Points : 407
    Points
    407
    Billets dans le blog
    1
    Par défaut
    Merci LittleWhite pour la réponse.

    Votre solution ne peut être appliquer à mon cas de figure, en fait je veux utiliser le curseur pour dessiner, par exemple si j'appuie sur le bouton gauche de la souris ça me fait un dessin suivant le chemin de la souris, si bien que le fond n'est jamais le même.
    En plus je pensais que sauvegarder la portion d'écran ou j'affiche mon 'pointeur' de souris (qui est une image png) est plus rapide que de ré-afficher à chaque fois le fond, mon curseur fait 16/16px alors que le fond fait 800/600.
    Merci.

  4. #4
    Responsable 2D/3D/Jeux


    Avatar de LittleWhite
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2008
    Messages
    26 858
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Mai 2008
    Messages : 26 858
    Points : 218 577
    Points
    218 577
    Billets dans le blog
    120
    Par défaut
    Une optimisation classique est de ne réafficher que la portion d'écran qui a été invalidée. Cela demande plus de code par contre.
    Vous souhaitez participer à la rubrique 2D/3D/Jeux ? Contactez-moi

    Ma page sur DVP
    Mon Portfolio

    Qui connaît l'erreur, connaît la solution.

  5. #5
    Membre averti
    Avatar de stc074
    Homme Profil pro
    Codeur du dimanche
    Inscrit en
    Janvier 2009
    Messages
    1 014
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Lozère (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Codeur du dimanche

    Informations forums :
    Inscription : Janvier 2009
    Messages : 1 014
    Points : 407
    Points
    407
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par LittleWhite Voir le message
    Une optimisation classique est de ne réafficher que la portion d'écran qui a été invalidée. Cela demande plus de code par contre.
    oui, je pense qu'on parle de la même chose seulement en SDL2 je ne vois pas comment faire, en SDL1.2 on pouvait sauvegarder la portion dans une SDL_Surface puis la ré-afficher, mais en SDL2 il y a les renderer, les texture, j'ai rien trouvé de similaire.

  6. #6
    Responsable 2D/3D/Jeux


    Avatar de LittleWhite
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2008
    Messages
    26 858
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Mai 2008
    Messages : 26 858
    Points : 218 577
    Points
    218 577
    Billets dans le blog
    120
    Par défaut
    Désolé pour ma réponse en retard.

    Je pense qu'une piste à lire, c'est le guide de migration SDL 1.2 -> SDL 2
    La partie que j'ai pointée explique un peu mieux la différence entre les types de rendu possible.

    Comme vous voulez la possibilité de lire les pixels que vous affichez, le mieux est d'utiliser une SDL_Surface. Après, de mon point de vue, je trouve qu'il y a beaucoup de "perte", car vous devez tout faire côté CPU (toute la partie rendu) puis envoyer le résultat pour faire afficher une texture au GPU. Mais c'est un des seuls moyens pour avoir une lecture rapide des pixels affichés.
    Maintenant, avec nos machines actuelles, ce n'est pas un si gros problème et cela ne se verra même pas. Au final, même la documentation officielle rejoint mes propos : http://jeux.developpez.com/tutoriels...ation/#LII-B-3 (en même, je l'ai lu, donc c'est plus mes propos qui s'en inspirent )
    Vous souhaitez participer à la rubrique 2D/3D/Jeux ? Contactez-moi

    Ma page sur DVP
    Mon Portfolio

    Qui connaît l'erreur, connaît la solution.

  7. #7
    Membre averti
    Avatar de stc074
    Homme Profil pro
    Codeur du dimanche
    Inscrit en
    Janvier 2009
    Messages
    1 014
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Lozère (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Codeur du dimanche

    Informations forums :
    Inscription : Janvier 2009
    Messages : 1 014
    Points : 407
    Points
    407
    Billets dans le blog
    1
    Par défaut
    Merci pour votre réponse, finalement j'ai utilisé la methode SDL_GetWindowSurface et je travaille avec des blit de surfaces comme à l'ancienne, je jetterai un coup d'oeil sur le tuto de migration.
    Merci.

Discussions similaires

  1. Pointeur, curseur souris en forme de main
    Par Mandarine dans le forum VB 6 et antérieur
    Réponses: 25
    Dernier message: 29/03/2018, 22h09
  2. Placer le pointeur de souris n'importe où
    Par regisba dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 18/09/2006, 14h30
  3. Masquer le pointeur de souris
    Par SheikYerbouti dans le forum Interfaces Graphiques en Java
    Réponses: 1
    Dernier message: 10/03/2006, 16h27
  4. Access2002: Changer pointeur de souris
    Par logica dans le forum IHM
    Réponses: 3
    Dernier message: 01/12/2005, 15h41
  5. Pointeur de souris [tuto par shwin]
    Par fabrice518 dans le forum Access
    Réponses: 6
    Dernier message: 19/09/2005, 17h16

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