CONNEXION
  • RetourJeux
    • Sorties
    • Hit Parade
    • Les + populaires
    • Les + attendus
    • Soluces
    • Tous les Jeux
    • Gaming
  • RetourActu Gaming
    • News
    • Astuces
    • Tests
    • Previews
    • Toute l'actu gaming
  • RetourBons plans
    • Bons plans
    • Bons plans Smartphone
    • Bons plans Hardware
    • Bons plans Image et Son
    • Bons plans Amazon
    • Bons plans Cdiscount
    • Bons plans Decathlon
    • Bons plans Fnac
    • Tous les Bons plans
  • RetourJVTech
    • Actus High-Tech
    • Intelligence Artificielle
    • Smartphones
    • Mobilité urbaine
    • Hardware
    • Image et son
    • Tutoriels
    • Tests produits High-Tech
    • Guides d'achat High-Tech
    • JVTech
  • RetourCulture
    • Actus Culture
    • Culture
  • RetourVidéos
    • A la une
    • Gaming Live
    • Vidéos Tests
    • Vidéos Previews
    • Gameplay
    • Trailers
    • Chroniques
    • Replay Web TV
    • Toutes les vidéos
  • RetourForums
    • Hardware PC
    • PS5
    • Switch 2
    • Xbox Series
    • Switch
    • Pokemon pocket
    • FC 25 Ultimate Team
    • League of Legends
    • Tous les Forums
  • PC
  • PS5
  • Xbox Series
  • Switch 2
  • PS4
  • One
  • Switch
  • iOS
  • Android
  • MMO
  • RPG
  • FPS
En ce moment Genshin Impact Valhalla Breath of the wild Animal Crossing GTA 5 Red dead 2
Liste des sujets

Dessin Qt avec gpu

KilroyPieraille
KilroyPieraille
Niveau 10
23 mai 2012 à 11:21:29

Plop!

Voila, je dois dessiner une image avec qt, j'ai donc ma classe personnelle, dérivée de QWidget, où j'ai redéfinie le paintEvent (je dois aussi dessiner certaines choses par dessus... )

J'ai testé deux solution :
- Faire des drawPoint pour chaque pixel de mes données, 30ms pour afficher une image...
- Convertir mes données (en bgra) en une QImage (en rgb), 9 ms pour afficher l'image avec drawImage (< 1 ms pour la convertion)

Bref, c'est pas top niveau performance, je doit être en 60 fps et je bouffe la moitié de mon temps à afficher une image en 640*480...

Je me demandais donc quelles était les moyens d'utiliser le gpu pour économiser les performance ?
Je sais qu'il y a déjà la solution d'opengl, mais j'ai l'impression que c'est un peu lancer un missile pour tuer une mouche quoi... :noel:

Il y a une solution plus simple, ou alors je suis obligé de partir sur Opengl?

Merci d'avance :-)

tbop2
tbop2
Niveau 10
23 mai 2012 à 12:11:22

Essayerais tu d'utiliser par hasard Qt pour faire un jeu video ? Juste pour savoir avant de repondre.

KilroyPieraille
KilroyPieraille
Niveau 10
23 mai 2012 à 12:21:07

Nope, c'est un logiciel de gestion de kinect, là je dois afficher les images des caméras :(

tbop2
tbop2
Niveau 10
23 mai 2012 à 12:28:38

Il faut donc vraisemblablement wrapper tout affichage dynamique de ton application avec soit openGL soit SFML (qui de memoire fonctionne avec Qt aussi), soit ce que tu veux de toute facon.
Mais ne surtout pas faire du rendering plus loin que le "pipi-caca" habituel d'un logiciel desktop avec les mecanismes de Qt.

KilroyPieraille
KilroyPieraille
Niveau 10
23 mai 2012 à 12:31:29

Ok, je vais passer là dessus alors, merci :ok:

KilroyPieraille
KilroyPieraille
Niveau 10
23 mai 2012 à 14:22:38

33 ms avec openGl okaay...
Bon au moins j'ai pas passer plus de 5 minutes à tester ça, ça m'aurais fait chier de perdre une après midi :peur:

tbop2
tbop2
Niveau 10
23 mai 2012 à 14:41:51

Je pense que tu as un serieux probleme exterieur alors ou tu mesures mal la chose. OpenGL ne peut pas avoir atteint ses limites juste pour afficher une image....

tbop2
tbop2
Niveau 10
23 mai 2012 à 14:42:43

Elle est chargee en memoire ton image ? Si non tu m'etonnes que ca tombe a 30 ms :)

KilroyPieraille
KilroyPieraille
Niveau 10
23 mai 2012 à 14:55:06

Elle est bien chargée en mémoire oui.

En gros j'ai une image de 640*480 pixel, 3 octets par pixels, j'ai donc un tableau de 640*480*3 octets, soit un peu plus d'1.2Mo.

Ensuite je parcour l'image de cette façon :
http://pastebin.com/s7GnB3We

à noter que j'ai fait ça en dehors de Qt, juste avec une implémentation glut/opengl, pareil :(

KilroyPieraille
KilroyPieraille
Niveau 10
23 mai 2012 à 14:58:49

http://pastebin.com/TufTn7Wt

Avec les 3 lignes pour faire la mesure :(

tbop2
tbop2
Niveau 10
23 mai 2012 à 17:07:33

Damn ca remonte a un peu trop loin tout ca, mais ce que tu fais est chelou de toute facon normalement tu affiches des textures en openGL. Est-ce que ton application a besoin de faire de la 3D ? Si ce n'est que de la 2D je te conseille vraiment de tourner plutot vers SFML qui est hardware-accelerated aussi de toute facon. Beaucoup plus intuitif pour la programmation 2D.

tbop2
tbop2
Niveau 10
23 mai 2012 à 17:10:05

Parce que normalement de memoire c'est ca qu'on utilise pour afficher des textures http://www.opengl.org/sdk/docs/man/xhtml/glTexImage2D.xml

KilroyPieraille
KilroyPieraille
Niveau 10
23 mai 2012 à 19:01:27

Ouais je sais mais je ne savait pas trop si on pouvait modifier les données de la texture à la volé :noel:
Aucun besoin de faire de la 3D, comme je l'ai dit c'est uniquement pour dessiner des images, une vidéo même d'ailleurs...

Je vais regarder du coté de la sfml, merci bien :-)

godrik
godrik
Niveau 30
23 mai 2012 à 19:34:45

heu, si tu fais deux appels a openGL par pixel, ca ne m'etonne qu'a moitie que ca soit lent... tu devrais faire ton transfert d'un seul coup.

caelacanthe
caelacanthe
Niveau 10
23 mai 2012 à 22:15:35
  1. KilroyPieraille Voir le profil de KilroyPieraille
  2. Posté le 23 mai 2012 à 19:01:27 Avertir un administrateur
  3. Ouais je sais mais je ne savait pas trop si on pouvait modifier les données de la texture à la volé :noel:

:d) avec SDL, c'est sûr qu'on peut, c'est pas des textures chargées dans la mémoire du GPU. :oui:

KilroyPieraille
KilroyPieraille
Niveau 10
24 mai 2012 à 09:32:14

Ok, je vais tester ça cette après midi, si ça ne marche pas je vais voir pour les textures en opengl, mais il va falloir que je ressorte mes cours :noel:

Merci à vous :ok:

tbop2
tbop2
Niveau 10
24 mai 2012 à 11:21:54

Tu t'embetes pour rien KilroyPieraille j't'assure.
Passe sous SFML sans hesiter pour ce genre de use-case.

tbop2
tbop2
Niveau 10
24 mai 2012 à 11:23:04

http://www.sfml-dev.org/t/tutorials/1.6/graphics-qt.php

KilroyPieraille
KilroyPieraille
Niveau 10
25 mai 2012 à 12:43:59

Oui oui, je vais tester avec SFML puis SDL, mais pas maintenant, finalement j'ai des truc que je dois faire avant...
Bref, merci à vous en tout cas :-)

tbop2
tbop2
Niveau 10
25 mai 2012 à 14:28:04

SDL l'acceleration hardware n'est pas de base de memoire non plus.

Troisieme fois : tu t'embetes pour rien prends SFML, POINT. :ok:

Sous forums
  • Aide à l'achat Mac
  • Macintosh
  • Création de Jeux
  • Programmation
  • Création de sites web
  • Linux
  • Internet
  • Steam Deck
  • Hardware
La vidéo du moment