C++ - qu'apprendre pour la 3d ?

fayt nagashimas Message lu Posté le 01 Fév 2009 à 15:23 Bulle
Avatar de fayt nagashimas
Membre Avancé

Messages : 369
GCPoints : 59439
Bonjour à tous.

C'est une question qui me turlupine.
J'ai appris avec plus ou moins de dévotion les bases du C++, dans le but de programmer sous un moteur 3d (après quelques longues discussions je penche pour irrlicht couplé à nvidia physX).

Ainsi, je me demande : qu'apprendre ensuite ? Après quelques recherches, il semblerait que la STL soit un outil important à maîtriser, surtout les containers et les algorithmes. Faut-il vraiment la voir en entier ou peut-on se limiter à ces parties de la STL ?

Aussi, est-il nécessaire de passer par des librairies ou autres qui pourraient s'avérer utiles dans le développement de jeux vidéo ?

Merci d'avance.
Darktib Message lu Posté le 01 Fév 2009 à 15:34 Bulle
Avatar de Darktib
Membre Ultime

Messages : 4017
GCPoints : 347288
Si tu veux utiliser Irrlicht tu n'aura pas trop besoin de la STL, et ca viendra rapidement sinon. Apres ca dépend de ce que tu veux faire. Si c'est un jeu je te conseille de commencer par la partie 3d (en gros tu ne maniera que irrlicht), puis apres tu utilisera des bibliotheques son, réseau, etc...
Le moteur : je te conseille de commencer sans puis d'adapter apres. Avec irrlicht le *meilleur* wrapper physique pour l'instant est pour PhysX, mais il en existe aussi pour Newton, Havok, ODE, etc...

Pour ce qui est des librairies, je te conseille en tout cas d'en utiliser au lieu de tout creer soi meme : créer une librairie réseau est assez complexe par exemple, pour un moteur physique faut etre une brute en physique, pour un moteur son c'est comme pour un moteur 3d : tres bas niveau.

Dans la STL ce que tu utilisera le plus ce seront les conteneurs (string, vector, list, map...) qui sont extremement utilisés. Les algos en général c'est toi qui les fait.

Dernierement : le C++ c'est bien, mais faut aussi - et c'est le plus important - savoir précisement ce que tu veux faire. Il est inutile d'apprendre l'intégralité du C++, ca ne te servira a rien. Tant que tu sait ce que tu veux, que tu sait le concevoir et le coder, tout va bien^^

J'espère avoir bien répondu à ta question.
Mod Message lu Posté le 01 Fév 2009 à 17:48 Bulle
Avatar de Mod
Webmaster

Messages : 4954
GCPoints : 2100823
L'étude complète de la STL n'est pas vraiment nécessaire. Dès lors que tu connais globalement les principes de stockage de chacun, je pense que c'est suffisant.

Si tu ne le connais pas déjà, le site que j'utilise en priorité sur le sujet, c'est cplusplus.com, une vraie mine d'or :

http://www.cplusplus.com/reference/stl/

Autrement, pour les fonctions algorithmiques de la STL (je suppose que tu fais référence à cela), il n'y a rien de véritablement indispensable. La plupart du temps, les méthodes des conteneurs sont suffisants.
fayt nagashimas Message lu Posté le 03 Fév 2009 à 20:08 Bulle
Avatar de fayt nagashimas
Membre Avancé

Messages : 369
GCPoints : 59439
Arf je ne passe plus assez sur gamecorp.

Eh bien, merci pour les réponses, le lien aussi Mod. On m'a aussi conseillé de travailler au moins un peu sous l'API directX en premier lieu afin de me faire la main avec la 3d. Est-ce vraiment nécessaire ? Si ça permet d'approfondir, de mieux appréhender la gestion des graphismes en 3d, l'apport est-il conséquent ?

En tout cas, il y a un truc chouette avec le C++, c'est qu'on peut faire des constructeurs pour les roux et les chinois en cours d'anglais et des classes débiles dans les autres cours :proud: .
Darktib Message lu Posté le 03 Fév 2009 à 20:48 Bulle
Avatar de Darktib
Membre Ultime

Messages : 4017
GCPoints : 347288
Non il n'est pas utile de maitriser DirectX poiur faire de la 3D. Ni pour faire des shaders d'ailleurs. Bien entendu ma phrase n'a de sens que si ut utilise un moteur 3d genre Irrlicht^^

Ensuite, ce qu'il faut que tu sache, c'est le fonctionnement global du pipeline graphique, histoire de comprendre ce que tu fait (c'a m'étonnerais que tu commence tout de suite avec les techniques avancées genre vbo, etc...).

Si par contre c'est juste pour savoir comment envoyer les données a la carte graphique, ca te sera utile, meme si globalement c'est sensiblement la meme chose avec OGL, et donc que tu pourrais aussi faire OGL.
Dernière édition le 03 Fév 2009 à 20:52
akd Message lu Posté le 04 Fév 2009 à 15:47 Bulle
Avatar de akd
Membre Confirmé

Messages : 319
GCPoints : 75439
Boost est une librairie qui remplace la STL avec de meilleure performance (et je crois aussi des éléments en plus ... mais c'est loin).

Je te dirais de la privilégier à la stl pour toutes les structures de données (hashmap, vector, String...)

Sinon je vais encore me faire taper mais il parait que les performances d'Irrlicht sont pas très fameuses; si tu veux le même niveau facilité de prise en main avec des perfs supérieures c'est plutô tv3d; sinon ogre ou crystal space dans les open sources...
SEB Message lu Posté le 04 Fév 2009 à 16:17 Bulle
Avatar de SEB
Membre Evolué

Messages : 554
GCPoints : 103313
Pour la simplicité de ogre... faudra me la remontrer je crois XD pask je trouve quand mem irrlicht bien plus rapide de prise en main. Apres pour les perfs ca reste à voir. Effectivement boost est pas trop mal mais je n'ai jamais réellement testé la différence des vector de boost et de la STL a part que tout n'est pas vraiment ressemblant...
NextGine : 3D games engine
Nombre de lignes actuel : 77683
Darktib Message lu Posté le 04 Fév 2009 à 16:47 Bulle
Avatar de Darktib
Membre Ultime

Messages : 4017
GCPoints : 347288
La différence entre boost et la stl est assez faible, ne te base pas la dessus (sauf si tu as un code qui est executé des millions de fois par seconde et qui est basé dessus...).
Crystal space, oublie : c'est carrément anti-performant.
Ogre est tres bien, mais pas simple a prendre en main
Irrlicht est simple a prendre en main et il ses perfs sont plutot bonnes - a condition de ne pas faire n'importe quoi avec...
Répondre
GameCorp - Site d'apprentissage et d'entraide à la création de jeux vidéo.
XHTML Valid 1.1 - Page générée en 0.0337 secondes