Essaie de trouver quelle fonction de ton prog prend le plus de temps.
C'est ce que j'ai fait.
Je pense que c'est celle de tracé de ligne, même si elle est très optimisée
Quand je transforme les 24 vertices du cube j'ai bien l'impression que c'est la transformation qui est la plus lente (surtout que je toujours tourer l'objet sur lui même en plus des rotation pour tourner à gauche et à droite).
Sans afficher les polygones ça tourne à 89 fps. Et dc le tracé de ligne ne prend pas plus temps que la transformation.
Mais dans le cas on je relie simplment les vertices entres eux c'est le tracé de ligne le plus lent.
Pour ce qui est du tracé de lignes d'extgraph, il est déjà extrêmement rapide, ça me paraît difficile de l'optimiser en pur C.
Oui c'est bien ce qui me semblait. De toute façon ça m'a l'air tellement bien programmer que même en asm ça n'irait pas tellement plus vite (enfin je pense).
Et puis j'ai rajouter des petits "register" devant quelques variables de la fonction au cas où ça optimiserait quelque chose !
En fait j'ai deux solutions:
Soit je reviens à mon premier moteur: je relie simplement les vertices par des lignes: c'est la méthode la plus rapide mais à mon avis on est limité au fil de fer vu que l'on n'affiche ni face ni triangles.
Je me trompe ?
En dans ce cas là il faut que je fasse tout mes objets à la main.
Soit j'utilise un éditeur pour les objets 3D au quel cas je suis obligé de tracé des triangles, transformer 23 vertices pour un cube...
Parce-que la solution que tu m'a indiqué est pas mal mais elle n'est pas aussi rapide que de ne pas tracer des faces (on trace une seule lignes entre deux vertices et on n'a pas de triangles) et en plus elle ne me permet pas une conversion facile des objets édité par les éditeur 3D... Quoique finalment il y a peut-être des options pour utiliser ta méthode ? Ca ce serait génial !
Est-ce que ton moteur gère le BackFace Culling ? (ça évite d'avoir à afficher la moitié des faces qui sont cachées)
Non mais justement j'était entrain d'étudier tout les moyens possibles pour ne pas afficher les faces cachés.
D'après ce que j'ai vu le BackFace culling fait perdre 4 fois plus de temps qu'il en fait gagner (pour des objets simples déjà).
Et puis j'ai pas encore compris comment le mettre en place.
Et mes faces ne sont pas stocké dans une matrice mais je les écris en les affichant pour faire gagner un peu de temps:
inline void DrawFace(register short v1, register short v2,register short v3)
{
DrawFastLine(Pixel[v1].x,Pixel[v1].y,Pixel[v2].x,Pixel[v2].y);
DrawFastLine(Pixel[v2].x,Pixel[v2].y,Pixel[v3].x,Pixel[v3].y);
DrawFastLine(Pixel[v3].x,Pixel[v3].y,Pixel[v1].x,Pixel[v1].y);
}
DrawFace(0,3,2);
DrawFace(3,0,1);
DrawFace(4,6,7);
DrawFace(7,5,4);
DrawFace(8,10,11);
DrawFace(11,9,8);
DrawFace(12,14,15);
DrawFace(16,18,19);
DrawFace(19,17,16);
DrawFace(20,22,23);
DrawFace(23,21,20);
... Pour le BackFace Culling il faut trier les faces, non ? Et donc il faut que je stoque les faces dans une matrice.
Dans toute les démo que j'ai vu le BackFace culling ralentit 10 fois plus que l'affichage des textures.
Mon moteur ne tournerait pas à 50 fps (avec une cube de taille moyenne) si il le gèrait ?!!!
Mais je pense que tu pourrais faire des faces remplies d'une couleur, plutôt qu'en fil de fer, ce serait plus beau (en 4 nvg).
Oui, c'est sûr que ce serait bien plus beau !

Mais c'est horriblement lent ça !!!
Pour remplir un polygones il faut utiliser les lignes horizontales ? J'ai essayé une fois les lignes verticales d'extgraph mais elles ont l'air d'être complètement "buggées".