Représentation d'une sphère en 3d (flat shading)

Soyez le premier à donner votre avis sur cette source.

Vue 6 541 fois - Téléchargée 905 fois

Description

Cette source a été initiée suite à un post de tomart2005 désirant afficher une sphère et également traiter l'aspect éclairage/couleur des faces.
Ce programme illustre quelques uns des aspects du problème, calculs vectoriels, orientation des facettes élémentaires mais montre la complexité dans un cas plus général.

Conclusion :


A traiter : coupure de l'image (pour une facette non complètement dans l'écran), objet caché par un autre, limitation du "flat shading".

Codes Sources

A voir également

Ajouter un commentaire

Commentaires

Messages postés
368
Date d'inscription
vendredi 20 octobre 2000
Statut
Modérateur
Dernière intervention
11 décembre 2013

BruNews,

Biensur certains compilateus permette une "bonne" obtimisation mais aucun ne vaudra jamais la maitrise des cycles machines que tu à en asm.

Certains compilateurs actuels sont memes "contre-performant", malheureusement, il n'y a pas que des bons compilos qui existent....

Mais je suis d'accord avec toi la plupart des compilos c permettent de généré un code assez obtimisé, mais il faut etre réaliste ce n'est pas le cas de tous les compilos (regarde le code que génere le compilo vb par exemple)....

Nasman,

Tu a raison les fonctions graphiques sont souvent "définies" dans des langages de haut nivau.

Prenons l'exemple de OpenGl que je connais bien, c'est bien une "boite noire" pour toi, bien que la doc détaillée du standard OpenGl se trouve sur le net et est accesible à tous mais peux de développeurs vont faire l'effort de lire les docs à se sujet, surtout qu'elle est énorme et tres réberbative.

Le principe de opengl:

le "cpu" de la carte graphique contiend des fonction opengl en interne, c'est du code 100% assembleur qui est traduit sous forme de shéma électronique et inclus dans la "partie opengl" de la puce de la carte graphique.

Ce systeme est donc hyper rapide, bien plus que nimporte quel code asm que tu pourrais pondre sur ton pc à cause notament des vitesses de transfert ram pc=>vidéo=>ram pc et de la vitesse des puces qui utilisnt des shemas "figés ou semi figés" et donc baucoups plus rapides que le code interpreté par un cpu.

Le développeur moyen utilise en fait une librairie qui définit et traduit les appels et les dialogues entre le langage dans lequel il développe et les fonctions internes de la puce.

Normalement ce code ne sert qu'au transfert de commandes et ne contiend aucune routines "low-level" puisque celles ci sont dans la puce de la carte écran.

Dans les faits les librairies contennent du code "low-level" pour garantir la compatibilité opengl de certaines cartes graphiques "non compatibles" ou ne respectant pas la norme opengl.

On parle dans ce cas d'une émulation opengl. Elle n'existe en réalité que pour garantir la compatibilité de l'application.

Il faut aussi savoir que des libs opengl existent en assembleur.

Dans tous les cas c'est au développeur de choisir la "boite noire" qu'il veut utiliser (opengl, directx &co, mmx et autres de plus haut nivau mais souvent portables et donc moins performants).

Bon Coding...

ManChesTer.
Messages postés
202
Date d'inscription
mardi 17 mai 2005
Statut
Membre
Dernière intervention
29 septembre 2008
2
Bonjour Manchester,

Il est vrai que des fonctions de manipulation d'images bien plus sophistiquées existent et peuvent éviter de refaire ce qui existe déjà. Malheureusement c'est souvent (toujours?) utiliser une boite noire et on ne connait pas le mécanisme utilisé. D'autre part ces fonctions ont été la plupart du temps développées avec un langage de plus haut niveau et à la compilation on obtient quelque chose qui est loin d'être optimisé, même si les routines utiles (qui calculent réellement quelque chose) le sont.

C'est sans doute la rançon à payer pour avoir une plus grande compatibilité entre les différents systèmes.
Messages postés
21042
Date d'inscription
jeudi 23 janvier 2003
Statut
Modérateur
Dernière intervention
21 août 2019
21
Essaie donc de battre VC++ 2005 en 'Release Full Optmization' sur une grosse fonction, ça demande un sérieux boulot et victoire pas garantie du tout.
Il faut cesser de penser qu'un compilo C est un vulgaire crétin d'automate, on n'en est plus là du tout.
Messages postés
368
Date d'inscription
vendredi 20 octobre 2000
Statut
Modérateur
Dernière intervention
11 décembre 2013

Nasman,

Je salue ton source qui est tres didactique.

Cependant il ne faut pas oublier que des outils permettent de réalisé ce genre d'objects 3d (opengl & directx) et de gerer les effets, déformations etc... Il est conseiller de les utiliser car ces outils garantissent une compatibilité à long teme et facilitent grandement le développement et les mise à jour.

Pour un dévelopement "pro", il est donc important d'utiliser un outil de ce type.

D'autre part ces outils sont fortement étudiés et obtimisés.
Certaines librairies permettent meme une compatibilité entre différents os/cpu.

Quand à l'utilisation d'une instruction "obsolete", pas de tracas, intel garantit la compatibilité dessandante des instructions.

Il est clair que l'instruction en question n'est pas obtimisée mais le but du source n'est-il pas didactique ?

D'autre part c'est bien plus obtimisé que le code généré par la majorité des compilateurs c, pascal ou autres....

Donc bravo pour ton source et continue sur cette voie qui me semble intéressante ;)

Bon Coding...

ManChesTer.
Messages postés
21042
Date d'inscription
jeudi 23 janvier 2003
Statut
Modérateur
Dernière intervention
21 août 2019
21
nasman > trop drole ta remarque. Soyons sérieux, c'est masm qui colle aux prescriptions Intel et non le contraire.

Je rextifie ce que j'ai dit plus haut:
AAM a disparu en 64 bits ET est obsolète depuis le Pentium (ça fait un bail...).
Une instruction à plus de 10 cycles (donc perte 20 instructions avec parallelisation) pour traiter 2 octets, c'est abusé. Il était temps qu'elle soit enlevée définitivement.
Afficher les 17 commentaires

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.