Moteur 3D

Résolu
mondrone Messages postés 246 Date d'inscription mercredi 5 janvier 2005 Statut Membre Dernière intervention 11 mars 2012 - 9 août 2005 à 12:00
Galmiza Messages postés 573 Date d'inscription samedi 16 novembre 2002 Statut Membre Dernière intervention 9 avril 2008 - 10 août 2005 à 14:04
Salut à tous. En fait je ne demande ni bout de code, ni programme, ....
Je voudrais une fois pour toutes comprendre la différence entre le
moteur 3D et OpenGL (ou DirectX). Que fait l'un, que fait l'autre (si
ca se trouve vous allez me dire que l'un fait partie de l'autre). Juste
mettre ça au clair. Et aussi tant qu'à faire. Quand on dit Moteur 3D
optimisé pour FPS, pour RPG... ou alors ce jeux est optimisé GeForce,
ou ATI... Ca veut dire quoi exactement.



Choses qui vous semblent surement acquises depuis des lustres, mais pas pour moi !

<hr size="2" width="100%"> Qui ne tente rien...

Ne risque pas d'avoir grand chose !!!

<hr siz="">

2 réponses

Galmiza Messages postés 573 Date d'inscription samedi 16 novembre 2002 Statut Membre Dernière intervention 9 avril 2008 1
10 août 2005 à 14:04
Salut,


OpenGL et DirectX ne sont pas des moteurs 3D mais des librairies qui te permettent d`exploiter la carte video pour faire un moteur 3D. C`est beaucoup plus rapide.
Elles contiennent aussi des fonctions de calculs dans l`espace, dans le plan, des objets mathematiques (vecteurs, matrices, quaternions), leurs operateurs, etc, bref presque tout ce dont tu as besoin pour faire de la 3D facile.


La carte 3D s`occupe de l`affichage.
Elle contient les textures, des surfaces, les vertex (sommets) des meshes (maillages), les indices pour les faces et des programmes executables (shaders).


En supposant que toutes les donnees soient chargees dans la carte video, pour afficher un objet, un moteur 3D doit de maniere plus ou moins implicite (selon la facon dont on utlise les librairies):
-dire quels sommets et quelles faces sont concernees
-quel programme doit etre applique aux sommets
-quel programme doit etre applique aux pixels
Ces programmes ont besoin de parametres:
-envoyer des constantes pour les programmes ci-dessus (matrice ou autres)
-envoyer les adresses des textures concernees
...et enfin, l`ordre d`afficher.


Bien sur c`est extremement simplifie mais l`idee est la.


Le moteur 3D calcule les matrices a envoyer aux shaders, enfin, bref, tout le reste.
Il doit limiter au maximum le nombre d`objet a afficher, donc doit etre en mesure de determiner ceux qui sont suseptibles d`etre vu par le joueur (differentes techniques FPS / RPG).


En gros, un gars qui te dit "j`ai fait un moteur 3D" meme s`il ajoute ensuite "avec DirectX" a tape enormement de ligne de code.



Si les shaders pour la carte video sont faits a la main, ils sont suceptibles de contenir des fonctions qui sont plus ou moins bien gerees par les differentes cartes video.
D`ou une ATI peut ne pas executer certaines fonctions qui ne posent pas de probleme a une GeForce. Il y a bien sur d`autres subtilites.


Regarde un code utilisant OpenGL ou DirectX, tu verras bien.
3
luhtor Messages postés 2023 Date d'inscription mardi 24 septembre 2002 Statut Membre Dernière intervention 28 juillet 2008 6
10 août 2005 à 00:24
Moi je dirais: on demande au moteur 3D d'afficher un monde virtuel,
moteur qui demande a opengl d'afficher des points, des lignes et de
plaquer des textures.

Le moteur 3D diffère en fonction du type de jeu que tu veux faire. Pour le reste, je sais pas bien. ++
0
Rejoignez-nous