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

Assembleur Discussion :

affichage et opengl


Sujet :

Assembleur

  1. #1
    Membre habitué
    Homme Profil pro
    root
    Inscrit en
    Janvier 2013
    Messages
    174
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : root

    Informations forums :
    Inscription : Janvier 2013
    Messages : 174
    Points : 144
    Points
    144
    Par défaut affichage et opengl
    Bonjour à tous.

    J'ai pas encore appris l'assembleur mais je m'intéresses, mon but de ce sujet est de comprendre l'assembleur-l'affichage-opengl.

    Si je prends du début.
    - L'opengl est une bibliothèque graphique (qui utilise le C par défaut), qui permet grâce à ces fonctions d'afficher quelque chose à l'écran.
    - L'opengl fonctionne grâce aux carte graphique qui le supporte à une version (presque) fixe comme opengl v1, 2, 3.3, 4.3.

    Je me poses la question, qu'est-il opengl en réalité.
    Disons que je fais un ensemble de code en assembleur qui contient une centaine de fonctions qui permet de faire de l'affichage sur l'écran.
    Peut-on dire, que j'ai fait une même sorte d'opengl ? ou opengl à un fonctionnement différent ?

    Et niveau matériel.
    Le code assembleur pour afficher sera fait par le cpu et non par le processeur de la carte graphique j'imagines.
    Opengl, lui doit utiliser le processeur de la carte graphique il me semble.
    Et donc si on veut utiliser la puissance du processeur graphique comme le fait opengl, on doit apprendre aussi le langage assembleur du processeur graphique ? (Si oui, il existe 3 grands: nvidia, ati et intel, ont-ils un langage assembleur global (pour chaque marque) ou un langage assembleur pour chaque processeur différent ?)

  2. #2
    Modérateur
    Avatar de Obsidian
    Homme Profil pro
    Développeur en systèmes embarqués
    Inscrit en
    Septembre 2007
    Messages
    7 360
    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 360
    Points : 23 600
    Points
    23 600
    Par défaut
    Hello,

    Tu mélanges beaucoup de choses. OpenGL est une bibliothèque graphique très sophistiquée dans les services qu'elle rend, mais qui fonctionne globalement comme toutes les autres dans la façon dont elle est distribuée. On ne sait pas quel est ton âge ni si tu débutes en informatique ou non, mais il faudrait au moins que tu vois les choses dans l'ordre avant d'associer d'emblée des technologies toutes deux très avancées dans leur domaine, mais indépendante l'une de l'autre.

    Citation Envoyé par kripteks Voir le message
    Si je prends du début.
    - L'opengl est une bibliothèque graphique (qui utilise le C par défaut), qui permet grâce à ces fonctions d'afficher quelque chose à l'écran.
    - L'opengl fonctionne grâce aux carte graphique qui le supporte à une version (presque) fixe comme opengl v1, 2, 3.3, 4.3.
    Tout d'abord, le C est un langage qui, une fois compilé, produit du langage machine tout comme le fait l'assembleur, et c'est ce langage machine qui va être exécuté par le micro-processeur.

    Le fait qu'elle soit écrite en C ne nous intéresse que dans le sens où son interface est celle de ce langage, c'est-à-dire que pour l'exploiter, il faut appeler des fonctions « à la mode C », donc en retrouvant les bons symboles, en alignant au préalable les arguments sur la pile puis en faisant un appel au bon sous-programme. C'est un peu fastidieux, mais il existe des macros telles que « INVOKE » qui font cela pour toi. Ensuite, il te faudra aussi gérer à la main les types de données définis par cette bibliothèque, c'est-à-dire toutes les structures. C'est faisable, mais c'est plus facile si on a un compilateur qui fait tout cela pour nous.

    Je me poses la question, qu'est-il opengl en réalité. Disons que je fais un ensemble de code en assembleur qui contient une centaine de fonctions qui permet de faire de l'affichage sur l'écran.Peut-on dire, que j'ai fait une même sorte d'opengl ? ou opengl à un fonctionnement différent ?
    Tu auras effectivement écrit une bibliothèque graphique. Très rudimentaire, certes, mais à l'objectif similaire. Maintenant, OpenGL est une très grande bibliothèque conçue principalement pour la gestion de l'affichage 3D. Donc, de ce point de vue, tu en seras très loin.

    Il faut également remarquer que OpenGL, comme certaines autres bibliothèques, est également devenue une API de fait : elle effectue les lourds calculs permettant de faire un rendu en trois dimensions mais offre également, pour cela, la possibilité au programmeur d'exprimer ce qu'il veut faire et ça, ce n'est pas simple du tout : il faut concevoir tout un ensemble de types de données et de fonctions cohérentes entre eux pour pouvoir représenter un sommet, une matrice, un vecteur, etc. qui permette déjà de « parler 3D ». Et assimiler cette API est déjà un gros travail en soi pour les développeurs qui partent de zéro.

    Et niveau matériel. Le code assembleur pour afficher sera fait par le cpu et non par le processeur de la carte graphique j'imagines. Opengl, lui doit utiliser le processeur de la carte graphique il me semble.
    Pas forcément : si le code C de ta bibliothèque est écrit pour faire lui-même le rendu des ordres graphiques qu'on lui a envoyé, alors la compilation des sources C vont produire du code assembleur, qui lui même sera assemblé pour former l'exécutable en langage machine et c'est ce programme qui fera le rendu.

    Par contre, si tu utilises une carte graphique, son rôle est précisément de faire ce rendu à la place du processeur pour le délester. Par ailleurs, le constructeur a exactement le même problème que les concepteurs d'OpenGL : fournir une interface propre aux développeurs qui souhaiteraient exploiter sa carte. Ce qui va donc se passer, c'est que le fabricant de ta carte graphique va écrire un pilote (driver) qui en façade, va adopter exactement l'API d'OpenGL et en coulisses, va traduire cela en appels vers ta carte graphique plutôt que faire le rendu lui-même.

    Ainsi, tout programme écrit en OpenGL pourra directement être lié à l'exécution soit vers une implémentation d'OpenGL effectuant un rendu logiciel — typiquement Mesa sous Linux — soit vers le pilote d'une carte qui va faire ce rendu matériellement. Et ce sans même besoin de le recompiler.

    C'est ainsi que certains standards de fait s'établissent sur la scène du développement et il appartient aux professionnels de faire de la veille technologique, choisir la bonne technologie émergente parmi d'autre et s'y investir, ce qui n'est pas facile du tout.

    Il y en a quelques autres, notamment Direct 3D chez Microsoft. Le fait que telle ou telle technologie va prendre ou pas est affaire de stratégie : la fait de sortir en premier, le fait de faire l'objet d'un lobbying puissant pour son adoption, celui d'être le seul sur son secteur à un moment donné (surtout), de rapport entre le coût en argent, en hommes et en temps d'une interface similaire et souvent en dernière position seulement (malheureusement) de la qualité technique de l'étude qui en est faite.

    Et donc si on veut utiliser la puissance du processeur graphique comme le fait opengl, on doit apprendre aussi le langage assembleur du processeur graphique ? (Si oui, il existe 3 grands: nvidia, ati et intel, ont-ils un langage assembleur global (pour chaque marque) ou un langage assembleur pour chaque processeur différent ?)
    Non, justement, pour les raisons expliquées plus haut.

    Cela dit, beaucoup de gens commencent à s'intéresser de près aux langages des cartes graphiques… quand il est disponible ! Et ce, bien souvent, non pas pour faire du rendu graphique mais parce que ces cartes sont quasiment des super-calculateurs disponibles au grand public pour une somme modique. L'exploitation des ces unités de calculs à des fins génériques a pris le nom de GPGPU, dont tu trouveras sur ce site un forum qui y est consacré.

  3. #3
    Membre habitué
    Homme Profil pro
    root
    Inscrit en
    Janvier 2013
    Messages
    174
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : root

    Informations forums :
    Inscription : Janvier 2013
    Messages : 174
    Points : 144
    Points
    144
    Par défaut
    Salut.
    J'ai dans la vingtaine, je connais l'informatique en tant qu'utilisateur depuis près de 10 ans (et je connais un peu de c++(opengl)/php/html).

    Je vais prendre le temps de lire/comprendre/rechercher.
    Merci pour la réponse.

Discussions similaires

  1. affichage avec opengl
    Par sousoi dans le forum OpenGL
    Réponses: 1
    Dernier message: 03/05/2010, 10h54
  2. Problem d'affichage avec OpenGl
    Par moulzo dans le forum OpenGL
    Réponses: 12
    Dernier message: 24/01/2010, 16h46
  3. Probleme d'affichage image OpenGL
    Par nonolerobot77 dans le forum GLUT
    Réponses: 2
    Dernier message: 22/02/2008, 12h54
  4. Enregistrer un affichage en OpenGL
    Par vincho dans le forum OpenGL
    Réponses: 3
    Dernier message: 21/12/2006, 11h38
  5. Affichage en OpenGl
    Par vincechaff10 dans le forum OpenGL
    Réponses: 5
    Dernier message: 04/07/2006, 16h09

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