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

 C++ Discussion :

manipuler des pixels rapidement, sans dx/ogl


Sujet :

C++

  1. #1
    Membre à l'essai
    Inscrit en
    Février 2009
    Messages
    24
    Détails du profil
    Informations forums :
    Inscription : Février 2009
    Messages : 24
    Points : 18
    Points
    18
    Par défaut manipuler des pixels rapidement, sans dx/ogl
    bonjour... je suis vraiment nul en c++, je sais juste bricoler des fichiers avec mais je sais rien faire côté affichage

    je cherche un truc tout basique, la façon la plus rapide possible de changer la couleur des pixels sur l'écran dans ma fenêtre d'appli windows, mais sans passer par directx, ni opengl, bref sans utiliser de trucs hardware

    éventuellement manipuler les pixels d'une image que j'afficherai ensuite à la taille que je veux

    et il faudrait que ça marche à la fois sur vista et xp... merci de votre aide

  2. #2
    Expert confirmé
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Décembre 2003
    Messages
    3 549
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

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

    Informations forums :
    Inscription : Décembre 2003
    Messages : 3 549
    Points : 4 625
    Points
    4 625
    Par défaut
    Génère un vieux ppm des familles puis ouvre-le avec ton logiciel préféré.
    Boost ftw

  3. #3
    Membre à l'essai
    Inscrit en
    Février 2009
    Messages
    24
    Détails du profil
    Informations forums :
    Inscription : Février 2009
    Messages : 24
    Points : 18
    Points
    18
    Par défaut
    c'est pas générer un fichier bitmap que je veux faire

    c'est comment manipuler rapidement les pixels à l'écran et sans passer par les trucs hardware

    un peu comme on faisait avec les vga sous dos avec le machin "screen 13" en changeant les octets des pixels directement dans la ram

    mais en version windows

  4. #4
    Expert éminent sénior
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 369
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 369
    Points : 41 518
    Points
    41 518
    Par défaut
    Sauf que c'est impossible sous Windows: C'est protégé par l'OS...
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  5. #5
    Modérateur
    Avatar de Obsidian
    Homme Profil pro
    Développeur en systèmes embarqués
    Inscrit en
    Septembre 2007
    Messages
    7 368
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Développeur en systèmes embarqués
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2007
    Messages : 7 368
    Points : 23 620
    Points
    23 620
    Par défaut
    Citation Envoyé par Médinoc Voir le message
    Sauf que c'est impossible sous Windows: C'est protégé par l'OS...
    Ce n'est peut-être pas tout-à-fait vrai : ça fait bien longtemps que je n'ai pas programmé sous Windows mais il doit être possible d'une manière ou d'une autre de demander un handle sur le buffer de la fenêtre principale, non ?

    Par contre, il est probable que ce « frame buffer » n'accède malgré tout pas directement à la mémoire vidéo mais soit interprété d'une manière ou d'une autre, car il y a des douzaines de résolutions différentes aujourd'hui, et toutes les cartes vidéos gèrent leurs modes comme elles l'entendent ...

  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 575
    Points
    218 575
    Billets dans le blog
    120
    Par défaut
    A priori, pour faire ce qui est demandé, c'est de dire à DirectX de donner un pointeur sur la fenêtre... ( mais du coup c'est directX ).
    Même si dans le bon vieux temps on fesait du "int 13h" et on modifié tout à la main, maintenant avec nos fenêtres qui ont une taille minimum de 640 x 480 , c'est déjà beaucoup plus lent de géré à la main.
    Ainsi une solution est d'utiliser non plus de l'ASM mais le hardware, pour modifier le contenu d'une fenêtre rapidement.
    Enfin après cela dépend de la taille de ta fenêtre et de ce que tu veux faire ...
    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 à l'essai
    Inscrit en
    Février 2009
    Messages
    24
    Détails du profil
    Informations forums :
    Inscription : Février 2009
    Messages : 24
    Points : 18
    Points
    18
    Par défaut
    je dois faire des bidouilles de pixels un peu comme winamp mais sans utiliser le hardware dans un premier temps

    j'ai cherché un peu j'ai vu qu'il y'a une fonction setpixel() dans l'api windows mais il parait qu'elle est beaucoup trop lente, sinon j'ai lu des trucs sur des "Canevas" dans je sais pas quelle lib mais je n'en sais pas plus, il parait que ça va plus vite mais je sais pas du tout à quoi ça fait référence

    vu que c'est de la pure procédure je me suis peut-être gourré de forum, j'aurais ptêt du demander sur le forum c

  8. #8
    Expert éminent sénior
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 369
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 369
    Points : 41 518
    Points
    41 518
    Par défaut
    Le plus rapide que je connaisse dans utiliser DirectX et Cie, c'est d'utiliser un bitmap en mémoire et de faire un bête BitBlt() dans le traitement du message WM_PAINT.
    Le problème, c'est que selon la résolution couleur choisie, le BitBlt() peut être plus lent s'il y a une conversion à faire. Ou bien, tu adaptes ton code à la résolution couleur, mais dans ce cas tu dois faire un code pour chaque résolution...

    En supposant qu'on travaille systématiquement en couleurs 32 bits, il devient très facile et très rapide d'accéder directement à la mémoire de ton bitmap, et il est assez rapide aussi de copier le bitmap vers le contexte d'affichage donné par Windows dans le traitement de WM_PAINT...

    PS: Dans tous les cas, on n'utilise quasiment jamais SetPixel(), parce que SetPixelV() est déjà plus rapide et presque toujours suffisant.
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  9. #9
    Membre à l'essai
    Inscrit en
    Février 2009
    Messages
    24
    Détails du profil
    Informations forums :
    Inscription : Février 2009
    Messages : 24
    Points : 18
    Points
    18
    Par défaut
    merci

Discussions similaires

  1. Manipulation des pixel buffer objects
    Par le_ptit_lutin dans le forum OpenGL
    Réponses: 13
    Dernier message: 09/08/2011, 09h34
  2. Réponses: 7
    Dernier message: 08/02/2010, 22h02
  3. Manipulation des handle contexte
    Par rockbiker dans le forum DirectX
    Réponses: 1
    Dernier message: 09/05/2003, 18h51
  4. Fonctions de manipulation des chaines et des dates
    Par Fares BELHAOUAS dans le forum Débuter
    Réponses: 3
    Dernier message: 09/11/2002, 22h43
  5. Réponses: 2
    Dernier message: 30/05/2002, 10h19

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