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

Langage C++ Discussion :

Afficher une image sur l'écran sans dépendre du driver de la carte graphique ni de l'OS.


Sujet :

Langage C++

  1. #1
    Invité
    Invité(e)
    Par défaut Afficher une image sur l'écran sans dépendre du driver de la carte graphique ni de l'OS.
    Salut.

    Je cherche une librairie en c++ qui est capable d'afficher une image directement sur l'écran (et donc, sans dépendre du driver de la carte graphique, ni de XServeur (de l'implémentation de l'OS donc.) pour le fenêtrage.

    Je voudrais également récupérer les événements souris.

    Est ce possible de faire cela ?

    Merci.

    J'ai vu qu'il existe une librairie (fbi) qui est capable d'afficher des images dans la console mais y a t'il moyen de gérer les événements clavier et souris dans la console ? (Ainsi que le redimentionnement de la console ?)

    Merci.

  2. #2
    Expert éminent sénior

    Femme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2007
    Messages
    5 195
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Essonne (Île de France)

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

    Informations forums :
    Inscription : Juin 2007
    Messages : 5 195
    Points : 17 162
    Points
    17 162
    Par défaut
    je croyais que tu quittait développez.com à cause de l'humour de certains développeur.
    Mes principes de bases du codeur qui veut pouvoir dormir:
    • Une variable de moins est une source d'erreur en moins.
    • Un pointeur de moins est une montagne d'erreurs en moins.
    • Un copier-coller, ça doit se justifier... Deux, c'est un de trop.
    • jamais signifie "sauf si j'ai passé trois jours à prouver que je peux".
    • La plus sotte des questions est celle qu'on ne pose pas.
    Pour faire des graphes, essayez yEd.
    le ter nel est le titre porté par un de mes personnages de jeu de rôle

  3. #3
    Membre éclairé

    Profil pro
    Inscrit en
    Décembre 2013
    Messages
    397
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2013
    Messages : 397
    Points : 698
    Points
    698
    Par défaut
    (Pas encore, mais a force de lui faire remarquer qu'il se ridiculise, cela finira par arriver. Peut être)

    Tu penses que la console n'est pas OS dépendant ? C'est mignon...

    Pas grand chose bas niveau est OS indépendant. Quelque chose de portable, c'est quelque chose qui va faire le boulot d'abstraction de l'OS à ta place. Par exemple OpenGL fournit une API commune quelques soit l'OS, la partie OS spécifique est dans les drivers. Mais comme tu n'arrives pas à utiliser OpenGL correctement, il te faut autre chose. J'ai bien peur qu'une grande partie des libs graphiques utilisent l'accélération matérielle à moment donné ou un autre, histoire d'être performant. Si tu veux être totalement indépendant du GPU, il te reste plus qu'a prendre une lib sans accélération matérielle. Voir donc du côté des archives du web, par exemple Anti-Grain Geometry.

    C'est pas très performant, mais comme de toutes façon tu pars sur des techniques peu performantes, cela ne changera pas grand chose (Et puis comme tu penses être assez bon pour créer un moteur de jeux en ray casting, cela devrait pas poser de problèmes pour les performances)

  4. #4
    Membre émérite
    Avatar de skeud
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2011
    Messages
    1 091
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Loire Atlantique (Pays de la Loire)

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

    Informations forums :
    Inscription : Juin 2011
    Messages : 1 091
    Points : 2 724
    Points
    2 724
    Billets dans le blog
    1
    Par défaut
    Je pense que tu ne saisis pas très bien comment fonctionne un ordinateur, hop petit cours de rattrapage:

    Un ordinateur c'est quoi? De base: Une carte mère, un processeur, de la ram, et un disque dur (la carte graphique est en option, on en a pas forcément besoin).

    Ensuite qu'est-ce qu'un système d'exploitation?
    C'est un système qui va permettre l’interaction entre l'utilisateur et la machine. Suivant l'architecture du processeur, on utilise différent langage machine (les 0 et les 1). Ce langage machine est compréhensible par le processeur mais pas par les humains. On a donc inventé le compilo, qui va traduire le langage assembleur (identique pour toute les machines) en langage binaire (spécifique à un processeur). Mais comme le langage assembleur n'est pas très compréhensible finalement, bah on a créer le C/C++, qui est traduit en assembleur puis en langage machine.

    (J'ai simplifier au maximum pour que tu puisses comprendre).

    Sans système d'exploitation, pas de compilo, donc pas de programme. C'est un peu la base de la programmation. Donc faire un programme qui ne soit pas dépendant du système d'exploitation ni de rien, bah c'est pas possible. A la limite, avec java tu pourras faire un programme qui fonctionne partout, car lancer dans une machine virtuelle, qui va s'occuper de traduire au processeur, mais ce n'est pas ce que tu veux faire.

    En gros tu as besoin d'une lib qui:
    _ affiche des pixels
    _ récupère les événements clavier et souris
    _ portable sur windows et linux

    Donc tu prends SFML ou SDL. Il y a pas besoin de réfléchir plus que ça.
    Ensuite si tu n'arrives pas à utiliser ces lib là correctement, bah change de branche, c'est que tu n'as pas les compétences pour y arriver.
    Pas de solution, pas de probleme

    Une réponse utile (ou +1) ->
    Une réponse inutile ou pas d'accord -> et expliquer pourquoi
    Une réponse à votre question


  5. #5
    Rédacteur/Modérateur


    Homme Profil pro
    Network game programmer
    Inscrit en
    Juin 2010
    Messages
    7 125
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : Canada

    Informations professionnelles :
    Activité : Network game programmer

    Informations forums :
    Inscription : Juin 2010
    Messages : 7 125
    Points : 33 029
    Points
    33 029
    Billets dans le blog
    4
    Par défaut
    moi j'ai bien une idée pour répondre au cahier des charges : une feuille de papier et un peu de scotch, directement sur l'écran

    langage assembleur (identique pour toute les machines)
    il me semblait qu'il dépendant du processeur ou quelque chose comme ça ? ou bien il s'agit que de certaines instructions spécifiques ?
    Pensez à consulter la FAQ ou les cours et tutoriels de la section C++.
    Un peu de programmation réseau ?
    Aucune aide via MP ne sera dispensée. Merci d'utiliser les forums prévus à cet effet.

  6. #6
    Membre émérite
    Avatar de skeud
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2011
    Messages
    1 091
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Loire Atlantique (Pays de la Loire)

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

    Informations forums :
    Inscription : Juin 2011
    Messages : 1 091
    Points : 2 724
    Points
    2 724
    Billets dans le blog
    1
    Par défaut
    Le langage assembleur est identique pour toute les machine, c'est un langage de plus haut niveau que le langage machine, il est donc pas lié au processeur, mais s'y rapproche énormément par rapport au C.

    Si j'ai bien compris mes cours, chaque instruction en assembleur correspond à une instruction en langage machine. Et tout les processeurs utilisent les même instructions (modification de registre, déplacement de registre etc ....) mais utilisent un code d'instruction différent, d'où la nécessité de passé par un compilo pour le traduire en langage machine .
    Pas de solution, pas de probleme

    Une réponse utile (ou +1) ->
    Une réponse inutile ou pas d'accord -> et expliquer pourquoi
    Une réponse à votre question


  7. #7
    Expert éminent sénior

    Femme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2007
    Messages
    5 195
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Essonne (Île de France)

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

    Informations forums :
    Inscription : Juin 2007
    Messages : 5 195
    Points : 17 162
    Points
    17 162
    Par défaut
    Attention tout de même, l'assembly est une traduction un pour un du jeu d'instruction binaire.
    Chaque langage d'assembly est différent.

    L'assembleur ne peut pas être identique... normalement. Sauf si on ne parle pas de la même chose.
    (confère les désassembleurs)
    Mes principes de bases du codeur qui veut pouvoir dormir:
    • Une variable de moins est une source d'erreur en moins.
    • Un pointeur de moins est une montagne d'erreurs en moins.
    • Un copier-coller, ça doit se justifier... Deux, c'est un de trop.
    • jamais signifie "sauf si j'ai passé trois jours à prouver que je peux".
    • La plus sotte des questions est celle qu'on ne pose pas.
    Pour faire des graphes, essayez yEd.
    le ter nel est le titre porté par un de mes personnages de jeu de rôle

  8. #8
    Membre émérite
    Avatar de skeud
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2011
    Messages
    1 091
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Loire Atlantique (Pays de la Loire)

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

    Informations forums :
    Inscription : Juin 2011
    Messages : 1 091
    Points : 2 724
    Points
    2 724
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par leternel Voir le message
    Attention tout de même, l'assembly est une traduction un pour un du jeu d'instruction binaire.
    Chaque langage d'assembly est différent.

    L'assembleur ne peut pas être identique... normalement. Sauf si on ne parle pas de la même chose.
    (confère les désassembleurs)
    Ah? Je croyais qu'un hello word en C traduit en assembleur était pareil sous windows et linux? Mais je peux me tromper, peut-etre qu'il est le même pour un processeur sous deux OS différent mais différent pour le même OS sous deux processeur différent . Je vais rechercher un peu .

    J'étais persuader que la différence entre les différent langage machine était uniquement le code d'instruction et non pas les instructions elle-même.

    Edit après foetus:
    Effectivement, je raconte des bétise, le langage assembleur est propre à l'architecture du processeur. Autant pour moi .
    Ainsi, le langage assembleur, représentation exacte du langage machine, est spécifique à chaque architecture de processeur.
    source
    Pas de solution, pas de probleme

    Une réponse utile (ou +1) ->
    Une réponse inutile ou pas d'accord -> et expliquer pourquoi
    Une réponse à votre question


  9. #9
    Expert éminent sénior
    Homme Profil pro
    Analyste/ Programmeur
    Inscrit en
    Juillet 2013
    Messages
    4 645
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Analyste/ Programmeur

    Informations forums :
    Inscription : Juillet 2013
    Messages : 4 645
    Points : 10 602
    Points
    10 602
    Par défaut
    Citation Envoyé par skeud Voir le message
    Le langage assembleur est identique pour toute les machine, c'est un langage de plus haut niveau que le langage machine, il est donc pas lié au processeur, mais s'y rapproche énormément par rapport au C.

    Si j'ai bien compris mes cours, chaque instruction en assembleur correspond à une instruction en langage machine. Et tout les processeurs utilisent les même instructions (modification de registre, déplacement de registre etc ....) mais utilisent un code d'instruction différent, d'où la nécessité de passé par un compilo pour le traduire en langage machine .
    Pas d'accord

    En assembleur il y a les mnémoniques (ADD, MOV, ...) qui sont juste des alias d'instructions (avec paramètres) en binaire.

    Mais chaque chaque plateforme (x86, ARM, PowerPC, ...) a son propre jeu de mnémoniques, et pour une plateforme donnée, chaque CPU peut avoir ses propres mnémoniques (AMD et son 64 bits, les instructions MMX+ SSE....)


    Sinon, je pensais justement à passer par les interruptions: j'ai le souvenir du Mode X :vieux:

  10. #10
    Expert éminent sénior

    Femme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2007
    Messages
    5 195
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Essonne (Île de France)

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

    Informations forums :
    Inscription : Juin 2007
    Messages : 5 195
    Points : 17 162
    Points
    17 162
    Par défaut
    Citation Envoyé par skeud Voir le message
    Ah? Je croyais qu'un hello word en C traduit en assembleur était pareil sous windows et linux? Mais je peux me tromper, peut-etre qu'il est le même pour un processeur sous deux OS différent mais différent pour le même OS sous deux processeur différent . Je vais rechercher un peu .
    Je ne vois pas de raison pour qu'il soit réellement différent en fonction des OS.
    Le langage d'assemblage (assembly) est destiné au processeur lui-même.

    Après, des assembleurs (les programmes qui assemblent) différents peuvent utiliser des mnémoniques différentes, mais ca serait franchement tordu.
    On peut imaginer qu'un assembleur utiliserait une notation add(r1, r2, r3), tandis qu'un autre préfererai R1 R2 R3 add.
    Mes principes de bases du codeur qui veut pouvoir dormir:
    • Une variable de moins est une source d'erreur en moins.
    • Un pointeur de moins est une montagne d'erreurs en moins.
    • Un copier-coller, ça doit se justifier... Deux, c'est un de trop.
    • jamais signifie "sauf si j'ai passé trois jours à prouver que je peux".
    • La plus sotte des questions est celle qu'on ne pose pas.
    Pour faire des graphes, essayez yEd.
    le ter nel est le titre porté par un de mes personnages de jeu de rôle

  11. #11
    Rédacteur/Modérateur
    Avatar de JolyLoic
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2004
    Messages
    5 463
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Yvelines (Île de France)

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

    Informations forums :
    Inscription : Août 2004
    Messages : 5 463
    Points : 16 213
    Points
    16 213
    Par défaut
    Citation Envoyé par leternel Voir le message
    Je ne vois pas de raison pour qu'il soit réellement différent en fonction des OS.
    À mon avis, un code qui ne fait que du calcul doit être à peu près indépendant. Mais un code qui fait des entrées/sorties, comme un Hello World! doit fortement dépendre de l'OS...
    Ma session aux Microsoft TechDays 2013 : Développer en natif avec C++11.
    Celle des Microsoft TechDays 2014 : Bonnes pratiques pour apprivoiser le C++11 avec Visual C++
    Et celle des Microsoft TechDays 2015 : Visual C++ 2015 : voyage à la découverte d'un nouveau monde
    Je donne des formations au C++ en entreprise, n'hésitez pas à me contacter.

  12. #12
    Expert éminent sénior

    Femme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2007
    Messages
    5 195
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Essonne (Île de France)

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

    Informations forums :
    Inscription : Juin 2007
    Messages : 5 195
    Points : 17 162
    Points
    17 162
    Par défaut
    C'est exact, je n'avais pas pensé à ce problème-là.

    Même si ce n'est pas le langage lui-même qui change.
    Mes principes de bases du codeur qui veut pouvoir dormir:
    • Une variable de moins est une source d'erreur en moins.
    • Un pointeur de moins est une montagne d'erreurs en moins.
    • Un copier-coller, ça doit se justifier... Deux, c'est un de trop.
    • jamais signifie "sauf si j'ai passé trois jours à prouver que je peux".
    • La plus sotte des questions est celle qu'on ne pose pas.
    Pour faire des graphes, essayez yEd.
    le ter nel est le titre porté par un de mes personnages de jeu de rôle

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


    Avatar de LittleWhite
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2008
    Messages
    26 883
    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 883
    Points : 219 328
    Points
    219 328
    Billets dans le blog
    123
    Par défaut
    L'assembleur change entre les OS, dès qu'il y a un appel de fonction, car les ABI changent.

    Moi, lorsque j'ai lu la question première de Lolilolight, j'ai pensé au framebuffer (fbdev) et un accès assez brut. Mais bon, cela repose toujours sur Linux, mais c'est ce qu'il y a de plus bas niveau. Enfin non, le plus bas niveau, c'est de faire un bootloader soit même et de faire de l'ASM pur, sans rien de plus. Par contre, c'est limité à 320x240x8, je crois. Donc ça craint.
    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.

  14. #14
    Expert éminent sénior
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2005
    Messages
    5 139
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Conseil

    Informations forums :
    Inscription : Février 2005
    Messages : 5 139
    Points : 12 239
    Points
    12 239
    Par défaut
    On va revenir au problème du PO.

    Une bibliothèque qui n'utilise pas les fonctionnalités d'un OS, ça n'existe, à ma connaissance, que dans les environnements pour développement de software embarqué, les drivers ou de construction de firmware/bios.

    Aucun de ces systèmes/environnement n'est trivial. C'est largement plus complexe que maitriser les problèmes de portabilité d'une lib sur les OS mainstream (Windows, Linux, OSX).

    Resimentionner une console ? Une console d'OS sans OS ? ou l'affichage en mode caractère pilotable par le BIOS ??

    Je ne pense pas que les cartes graphiques sur architecture Intel supportent encore l'affichage en mode caractère, à moins d'avoir 20 ans d'âge (et les cartes graphiques, c'est pas comme le wisky).

    fbi ? pour FrameBuffer ? Ceci est une technologie éminemment lié à Linux et à ces drivers. On n'attaque pas le hardware en direct, même si l'API peut le laisser croire.

    On va arrêter la mise en boite, c'est quoi le véritable et initial besoin, Lolilolight ?

    P.S.: Les mecs, faire de la mise en boite en considérant que l'assembleur est indépendant de l'architecture, ou d'un éventuel OS, ou même du programme de génération du binaire (MASM et "Assembleur GCC" qui inversent quasiment leur syntaxe l'un de l'autre ), c'est largement se décrédibiliser.

  15. #15
    Membre éclairé

    Profil pro
    Inscrit en
    Décembre 2013
    Messages
    397
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2013
    Messages : 397
    Points : 698
    Points
    698
    Par défaut
    (@bacelar: tu as loupe quelques discussions avec Lolilolight. On est censé avoir affaire avec un gars qui a 10 ans d’expérience, qui a "une maîtrise totale des mathématiques, de la physique, et de la programmation" (je cite), mais qui a abandonne OpenGL et le multithreading parce que c'est bugé (les drivers et l'OS, pas son code bien sur) et c'est plus performant de faire de la 3D en raycasting sur CPU en mono-core. La "mise en boite" arrive très vite dans ces conditions...)

Discussions similaires

  1. comment afficher une image sur un cadre
    Par pakita dans le forum JBuilder
    Réponses: 3
    Dernier message: 30/04/2007, 15h11
  2. Afficher une image sur un écran 3D.
    Par pan99 dans le forum 3D
    Réponses: 1
    Dernier message: 16/04/2007, 13h48
  3. OpenGL - Afficher une image sur un quad
    Par Akwel91 dans le forum OpenGL
    Réponses: 16
    Dernier message: 16/01/2007, 11h04
  4. [débutant]Afficher une image sur une JFrame
    Par mavina dans le forum Agents de placement/Fenêtres
    Réponses: 2
    Dernier message: 09/08/2006, 16h25
  5. afficher une image sur toute la fenêtre
    Par argon dans le forum AWT/Swing
    Réponses: 4
    Dernier message: 18/02/2006, 09h44

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