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 :

Afficher un pixel en C++


Sujet :

C++

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Août 2006
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 6
    Par défaut Afficher un pixel en C++
    Bonjour à tous,
    Je commence de lire un bouquin (très interessant) sur les algos 2D et 3D et j'aimerais bien mettre en application quelques algos (pr la 2D pr l'instant). Le problème est que je ne sais pas du tout comment afficher un pixel en C++. Donc si qqun pouvait me donner une petite fonction (+ quelques explications) qui gererait ceci ca serait cool, sachant que je ne cherche pas du tout a faire de la performance pr le moment, je veux juste pouvoir voir un truc à l'ecran donc meme si la fonction est un peu "lente" ce n'est pas grave du tout...

    Merci à vous.

  2. #2
    Membre Expert
    Avatar de Pragmateek
    Homme Profil pro
    Formateur expert .Net/C#
    Inscrit en
    Mars 2006
    Messages
    2 635
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Formateur expert .Net/C#
    Secteur : Conseil

    Informations forums :
    Inscription : Mars 2006
    Messages : 2 635
    Par défaut
    Il faut passer par des bibliothèques externes:
    -la SDL pour la 2D;
    -OpenGL pour la 2D et 3D
    par exemple.

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Août 2006
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 6
    Par défaut
    J'avais bien vu que sdl permettait de faire du graphisme mais est ce que mon code sera "simple" ?
    Car en C je maîtrise pas grand chose en fait ; je comprend bien les algortihmes car j'ai fait bcp de progra sur calculette mais tout ce qui parle de librairie c'est du chinois pour moi. Je commence à aborder la notion de classe et la progra orientée objet. Voilà, je vais qud meme essayer avc sdl, j'ai vu des tutoriaux ici qui semblent bien...je reviendrais en cas de pb.
    Merci.

  4. #4
    Membre Expert
    Avatar de Pragmateek
    Homme Profil pro
    Formateur expert .Net/C#
    Inscrit en
    Mars 2006
    Messages
    2 635
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Formateur expert .Net/C#
    Secteur : Conseil

    Informations forums :
    Inscription : Mars 2006
    Messages : 2 635
    Par défaut
    Il y en a d'autres à part la SDL:
    http://c.developpez.com/cours/#tutos-bib

  5. #5
    Rédacteur

    Avatar de gege2061
    Femme Profil pro
    Administrateur de base de données
    Inscrit en
    Juin 2004
    Messages
    5 840
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Administrateur de base de données

    Informations forums :
    Inscription : Juin 2004
    Messages : 5 840
    Par défaut
    Bonjour,

    Le plus simple est de créer une image au format XPM (c'est en fait un simple fichier texte), voici un exemple qui créer une image de l'espace de Mandelbrot en C : mandelbrot.c.

    Sinon la SDL est assez simple à utiliser : Tutoriels SDL.

    Bon courrage

  6. #6
    mat.M
    Invité(e)
    Par défaut
    Citation Envoyé par abel_b
    Bonjour à tous,
    Je commence de lire un bouquin (très interessant) sur les algos 2D et 3D et j'aimerais bien mettre en application quelques algos (pr la 2D pr l'instant). Le problème est que je ne sais pas du tout comment afficher un pixel en C++.
    Pour la milliardième de fois ça dépend de l'OS; les graphismes dépendent des services de l'OS parce qu'il fait l'interface ( via les drivers ) entre utilisateur/programmeur et matériel..
    un pixel n'est pas du tout affiché de la même manière d'une carte à une autre.
    Sous Windows il faut utiliser des API comme SetPixel

    -> quel IDE , quel compilo , quel OS ?


    Citation Envoyé par seriousme
    Il faut passer par des bibliothèques externes:
    -la SDL pour la 2D;
    -OpenGL pour la 2D et 3D
    par exemple.
    C'est pas fait du tout pour ça et pas du tout nécessaire de passer par des biblios externes !
    SDL c'est pour afficher des bitmaps principalement pour des jeux.
    De manière similaire à DOS ( via surfaces Direct Draw) ou on adressait la mémoire vidéo en assembleur.
    Open GL c'est une API pour de la 3d

    On peut dessiner avec SDL mais ça risque de pédaler + qu'autre chose et on peut pas exploiter ça dans une appli UI avec boutons ,fenètres

  7. #7
    Membre chevronné
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    258
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France, Bas Rhin (Alsace)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 258
    Par défaut
    Citation Envoyé par mat.M
    pas du tout nécessaire de passer par des biblios externes !
    Rien dans le standard C++ ne permet de dessiner un pixel à l'écran, donc il faut bien passer par des bibliothèques externes, comme l'API Windows, WxWidgets ou OpenGL (qui permet aussi très bien de faire de l'affichage 2D).

  8. #8
    Membre Expert
    Profil pro
    Inscrit en
    Août 2006
    Messages
    1 104
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 1 104
    Par défaut
    Par contre, le SetPixel de l'API Win est d'une lenteur fabuleuse. Ca va pour afficher quelques pixels, mais pour afficher de nombreuses choses (surtout si on veut faire du graphisme en temps réel), ça ne convient pas vraiment. J'en ai déjà fait les frais il y a quelques temps en utilisant cet API.
    Sinon, une solution (sans passer par d'autres librairies) consiste éventuellement à créer un buffer (représentant la mémoire vidéo), puis de dessiner dedans. Ensuite, tout afficher d'un bloc avec une API (je ne sais plus laquelle).

  9. #9
    Membre chevronné
    Avatar de NewbiZ
    Profil pro
    Étudiant
    Inscrit en
    Juillet 2002
    Messages
    184
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2002
    Messages : 184
    Par défaut
    C'est pas fait du tout pour ça et pas du tout nécessaire de passer par des biblios externes !
    Dans la mesure ou (depuis quelques temps déjà) on a plus accès directement à la mémoire vidéo, il est obligatoire de passer par une API pour communiquer avec la carte graphique...

    Tu as donc 3 choix :
    + Utiliser l'API native de ton OS (ex: win32)
    + Utiliser une API implémentée sur ton système (ex: OpenGL, DX)
    + Utiliser une librairie externe, qui ne sera de toute facon qu'une surcouche à l'API native (ex: SDL, wxWidgets...)

  10. #10
    mat.M
    Invité(e)
    Par défaut
    Citation Envoyé par roulious
    Rien dans le standard C++ ne permet de dessiner un pixel à l'écran, donc il faut bien passer par des bibliothèques externes, comme l'API Windows, WxWidgets ou OpenGL (qui permet aussi très bien de faire de l'affichage 2D).
    Merci du conseil mais c'est ce que j'ai écris précisément !


    Citation Envoyé par jeroman
    Par contre, le SetPixel de l'API Win est d'une lenteur fabuleuse. Ca va pour afficher quelques pixels, mais pour afficher de nombreuses choses (surtout si on veut faire du graphisme en temps réel), ça ne convient pas vraiment. J'en ai déjà fait les frais il y a quelques temps en utilisant cet API.
    Sinon, une solution (sans passer par d'autres librairies) consiste éventuellement à créer un buffer (représentant la mémoire vidéo), puis de dessiner dedans. Ensuite, tout afficher d'un bloc avec une API (je ne sais plus laquelle).

    Pour afficher un tampon il faut passer par des fonctionnalités de l'OS; dans le cas de SetPixel on préferra CreateDibSection ou SetDIBBits qui initialise un "buffer" et dans lequel on dessine.


    Citation Envoyé par NewbiZ
    + Utiliser une API implémentée sur ton système (ex: OpenGL, DX)
    + Utiliser une librairie externe, qui ne sera de toute facon qu'une surcouche à l'API native (ex: SDL, wxWidgets...)
    SDL, Direct X voire Open GL ne sont pas trop destinées à dessiner des pixels...
    Parce qu'avec SDL on a juste la fenêtre de l'appli, on peut difficilement mettre des controles utilisateurs ( treeviews, listbox...) sinon ça va ramer...

    Citation Envoyé par abel_b
    Je crois que c'est la bonne version de sdl que j'ai téléchargé : sdl1.2.11-VC6.0...
    Ne pas prendre SDL pour faire du traitement d'image .
    SDL c'est fait pour programmer des jeux des applis multimédias , copier bêtement des images sur des autres ou à l'écran.
    Il faut apprendre la programmation Windows de base la programmation GDI , manipuler les HDC, les bitmaps.

    Par contre si tu veux afficher des polygones en 3d comme tu écris il faut prendre effectivement Open GL ou DIrect X , parce que ce sont des API qui utilisent les fonctions accélératrices de la carte vidéo.
    Dernière modification par mat.M ; 16/08/2006 à 17h38.

  11. #11
    Membre chevronné
    Avatar de NewbiZ
    Profil pro
    Étudiant
    Inscrit en
    Juillet 2002
    Messages
    184
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2002
    Messages : 184
    Par défaut
    ça va ramer...
    Il faut apprendre la programmation Windows de base la programmation GDI , manipuler les HDC, les bitmaps.
    Je ne suis pas franchement d'accord, le GDI ne peu qu'être plus lent que des API comme OpenGL et DirectX (SDL inclu vu qu'elle utilise OpenGL)
    Parce qu'avec SDL on a juste la fenêtre de l'appli, on peut difficilement mettre des controles utilisateurs
    C'est pas faux, mais rien ne t'empêche (et c'est ce que je fais pour mes éditeurs) d'utiliser une librairie comme wxWidgets pour le fenêtrage et la GUI, et un canvas opengl pour le rendu

Discussions similaires

  1. afficher des pixels sur un qwidget
    Par gedeon555 dans le forum Qt
    Réponses: 4
    Dernier message: 23/03/2007, 16h56
  2. afficher un pixel à l'écran
    Par djamal_internet dans le forum C++
    Réponses: 5
    Dernier message: 15/06/2006, 09h05
  3. [graphics] afficher un pixel
    Par floanne dans le forum 2D
    Réponses: 19
    Dernier message: 20/03/2006, 11h42
  4. [FreePascal] Afficher un pixel en RGB
    Par MatMeuh dans le forum Free Pascal
    Réponses: 23
    Dernier message: 20/05/2005, 01h16
  5. Difficultés pour afficher un pixel à l'écran
    Par Bubonik software dans le forum C
    Réponses: 9
    Dernier message: 17/08/2003, 12h48

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