Bienvenue, Invité. Merci de vous connecter ou de vous inscrire.
Avez-vous perdu votre e-mail d'activation ?

Auteur Sujet: sfRenderWindow & sfMouse_setPosition  (Lu 3839 fois)

0 Membres et 1 Invité sur ce sujet

retro-bruno

  • Newbie
  • *
  • Messages: 20
    • Voir le profil
    • Mes freewares
sfRenderWindow & sfMouse_setPosition
« le: Novembre 07, 2014, 10:59:37 am »
Bonjour,

Sous windows, j'arrive à utiliser un handle de sfRenderWindow avec les commandes sfMouse_setPosition et sfMouse_getPosition, mais sous Archlinux sur Raspberry Pi, j'obtiens des warnings, et un segfault quand je lance l'executable.

Que dois-je faire, s.v.p ?

EDIT: Les warnings disent que je dois utiliser une sfWindow et non pas une sfRenderWindow.

Par contre, le segfault serait dû au fait que mon archlinux est mal configuré au niveau de Xorg. (Impossible d'ouvire un écran sfFullscreen en 800x600x32)
« Modifié: Novembre 07, 2014, 12:37:11 pm par DjPoke »
Fraternité - Equité - Liberté

Laurent

  • Administrator
  • Hero Member
  • *****
  • Messages: 32498
    • Voir le profil
    • SFML's website
    • E-mail
Re : sfRenderWindow & sfMouse_setPosition
« Réponse #1 le: Novembre 07, 2014, 01:43:50 pm »
Plutôt qu'une description vague, ce serait bien d'avoir les messages d'erreur exacts, ainsi que le code correspondant ;)
Laurent Gomila - SFML developer

retro-bruno

  • Newbie
  • *
  • Messages: 20
    • Voir le profil
    • Mes freewares
Re : sfRenderWindow & sfMouse_setPosition
« Réponse #2 le: Novembre 07, 2014, 01:54:57 pm »
Voici l'un des messages (similaires) :

Citer
In function 'setmouse' !
Warning : passing argument 2 of  'sfMouse_setPosition' from incompatible pointer type [Enable by default]
sfMouse_setPosition(xy,win);

La fonction setmouse qui provoque le warning :
void setmouse(int x,int y) {
    sfVector2i xy;
    xy.x = (unsigned int)x  + _OFFSET_X_;
    xy.y = (unsigned int)y + _OFFSET_Y_;
    sfMouse_setPosition(xy,win);
}

"win" est une fenêtre de rendu de type sfRenderWindow.

Et en ajoutant un code pour vérifier si la carte graphique gère le 800x600x32, le 800x600x24 ou au pire le 800x600x16, j'obtiens sur archlinux sur raspberry Pi l'erreur suivante avant le segfault :
"Failed to connect to the X server while trying to get the supported video modes".

EDIT: Je me répond en partie à moi même, apparemment, SFML ne fonctionne pas à partir de la console pure et dure. Par contre, si je lance mon programme depuis LXDE, il marche maintenant mais avec une lenteur extrême et des bugs bizarres : la fonction"toupper" semble ne même plus fonctionner.

EDIT2 : Les événements liés au son sont réactifs, mais pas ceux liés au graphisme.
« Modifié: Novembre 07, 2014, 03:07:11 pm par DjPoke »
Fraternité - Equité - Liberté

Laurent

  • Administrator
  • Hero Member
  • *****
  • Messages: 32498
    • Voir le profil
    • SFML's website
    • E-mail
Re : sfRenderWindow & sfMouse_setPosition
« Réponse #3 le: Novembre 07, 2014, 03:22:03 pm »
Le C ne permet ni héritage ni surcharges, donc tu ne peux pas utiliser sfMouse_setPosition avec à la fois un sfWindow* et un sfRenderWindow*. En l'occurence elle fonctionne avec un sfWindow*, et il faut utiliser sfMouse_setPositionRenderWindow si tu as un sfRenderWindow*.
Laurent Gomila - SFML developer

retro-bruno

  • Newbie
  • *
  • Messages: 20
    • Voir le profil
    • Mes freewares
Re : sfRenderWindow & sfMouse_setPosition
« Réponse #4 le: Novembre 07, 2014, 04:37:49 pm »
Merci beaucoup, cela résout mon problème de warnings.  :)

Sinon, pour le problème de lenteur extrême, je me demande si c'est le raspberry Pi qui est lent à ce point, ou le kernel d'archlinux qui n'est pas bon, ou autre chose.

Auriez-vous un conseil à me donner ? Puis-je downgrader mon kernel et à quels risques ?
Fraternité - Equité - Liberté

Laurent

  • Administrator
  • Hero Member
  • *****
  • Messages: 32498
    • Voir le profil
    • SFML's website
    • E-mail
Re : sfRenderWindow & sfMouse_setPosition
« Réponse #5 le: Novembre 07, 2014, 04:57:41 pm »
Tu utilises quelle version de SFML ? Tu as quels drivers graphiques ? Est-ce que d'autres programmes OpenGL fonctionnent mieux ?
Laurent Gomila - SFML developer

retro-bruno

  • Newbie
  • *
  • Messages: 20
    • Voir le profil
    • Mes freewares
Re : sfRenderWindow & sfMouse_setPosition
« Réponse #6 le: Novembre 07, 2014, 05:20:30 pm »
J'utilise CSFML 2.1.

Sous windows, mon interpreteur BASIC tourne à 28 FPS en affichant des images, des sprites et du texte.
Sous Ubuntu, sans l'accélétion graphique activée, la même démo tombe de 11 à 13 FPs.

Le problème est sous Raspberry Pi avec archlinux, qui me semble pourtant être la distribution la plus optimisée pour Pi.
C'est tellement lent que l'on ne peut afficher qu'un sprite de 8x16 pixels toutes les 2 secondes. Cela ne semble pas provenir des événements car si j'appuie sur une touche générant un son, c'est aussi réactif que sous windows.
Le problème est donc graphique.
J'ai assigné 256 mo de mémoire vive au GPU du Pi, sans succès.
L'application met environs 30 secondes à 1 minute à démarrer.

Mais le plus intriguant, c'est que sous archlinux, j'ai des bugs que je n'ai pas sous Windows ni Ubuntu, comme un problème avec "toupper" qui ne joue pas son rôle, et j'ai un autre problème d'affichage qui ne se fait même pas lentement.
« Modifié: Novembre 07, 2014, 05:22:11 pm par DjPoke »
Fraternité - Equité - Liberté

Laurent

  • Administrator
  • Hero Member
  • *****
  • Messages: 32498
    • Voir le profil
    • SFML's website
    • E-mail
Re : sfRenderWindow & sfMouse_setPosition
« Réponse #7 le: Novembre 07, 2014, 05:31:37 pm »
Je répète la question : tu as installé quels drivers graphiques ?

Pour autant que je sache, le Raspberry Pi a une puce OpenGL ES, et OpenGL ES n'est pas géré dans SFML 2.1. Il semblerait donc que tu aies une émulation software d'OpenGL, ce qui expliquerait les performances désastreuses.

Si tu veux tester OpenGL ES, tu peux télécharger et compiler les dernières sources de SFML. Par contre il faudra fouiller un peu sur le forum et le wiki pour trouver les quelques trucs spécifiques à faire pour activer OpenGL ES lors de la compilation.
Laurent Gomila - SFML developer

retro-bruno

  • Newbie
  • *
  • Messages: 20
    • Voir le profil
    • Mes freewares
Re : sfRenderWindow & sfMouse_setPosition
« Réponse #8 le: Novembre 07, 2014, 05:51:32 pm »
Merci de ton aide. Je crois que je vais renoncer à l'idée de travailler sur le Pi.
Fraternité - Equité - Liberté