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

DirectX Discussion :

DirectX 11 Pour les Nuls


Sujet :

DirectX

  1. #1
    Nouveau Candidat au Club
    Homme Profil pro
    Indépendant immobilier et développeur informatique
    Inscrit en
    Mars 2023
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Indépendant immobilier et développeur informatique

    Informations forums :
    Inscription : Mars 2023
    Messages : 2
    Points : 1
    Points
    1
    Par défaut DirectX 11 Pour les Nuls
    Bonjour tout le monde,

    Je souhaite me mettre à DirectX en C++ dans le but de réaliser à terme un jeu se passant dans un monde créé artificiellement et réaliste. Je pars un peu de zéro (même si il y a de nombreuses années j'avais fait un jeu type Sim City en 2D isométrique avec Direct Draw et VB6). J'avoue qu'avec les différentes documentations trouvées je suis un peu largué. J'ai fait le tutorial de rastertek trouvé sur developpez.net, j'ai compris les grands principes, mais pas tout, et je ne suis pas capable de le modifier pour faire ce que je veux. 2500 lignes de code pour afficher un triangle texturé qui tourne.. Ca me fait tourner la tête. Donc je voulais savoir si :

    + Commencer par DirectX 11 était le bon choix. J'ai cru comprendre que la version 12 était plus puissante mais plus complexe encore.
    + Existe t il des tutos (en français si possible), vraiment clairs, expliquant chaque point, de façon chronologique, en partant du principe que le lecteur n'a jamais fait de dev graphique avant ?
    + Sinon, dois je me former à d'autres notions avant de me lancer dans DirectX ?

    J'ai vraiment la motivation de m'y mettre, mais vu le nombre de fonctions à appeler pour faire le moindre truc, sans tuto efficace, ça va être compliqué.

    D'avance merci.

  2. #2
    Responsable 2D/3D/Jeux


    Avatar de LittleWhite
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2008
    Messages
    26 860
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Mai 2008
    Messages : 26 860
    Points : 219 062
    Points
    219 062
    Billets dans le blog
    120
    Par défaut
    Bonjour,

    Je sais que ma réponse va être décevant, mais j'espère aussi que cela pourra vous aider à réaliser votre projet.
    Premièrement : avez vous une raison de vouloir réaliser ce projet en DirectX 11 ?
    Les faits sont que : DirectX 11 est une bibliothèque, bas niveau, qui vous permettra d'afficher des choses à l'écran, en donnant des instructions à la carte graphique, mais cela veut aussi dire que pour l'intégralité de votre projet, il faudra faire en sorte d'indiquer à la carte graphique quoi faire (et elle ne sait faire que des triangles et pour afficher proprement ces triangles, on lui donne des shaders (des morceaux de programmes qui disent que tels ou tels points/vertex doit être affiché avec telle couleur/effet).
    Alors, évidemment, c'est intéressant, c'est captivant, mais cela a la contre partie que vous allez prendre beaucoup de temps là dessus et non sur le jeu en lui même.

    Par conséquent, je repose ma question : souhaitez vous absolument apprendre DirectX 11 et la programmation graphique ou souhaitez vous plutôt, faire un jeu.

    Dans le second cas, je conseille de prendre un moteur de jeux vidéo (Unreal Engine, Unity, Godot), qui vous permettra de ne pas travailler bas niveau et de vous concentrer plus sur le jeu en lui même.

    Autrement, voici les réponses :
    • DirectX 11 est un bon choix. C'est moderne et encore utilisé. DirectX 12 est en effet encore plus proche de la carte graphique et un peu plus compliqué.
    • pas sûr. Il existe plus de tuto sur OpenGL/Vulkan que DirectX ;
    • comprendre comment marche une carte graphique (pipeline de rendu).
    Vous souhaitez participer à la rubrique 2D/3D/Jeux ? Contactez-moi

    Ma page sur DVP
    Mon Portfolio

    Qui connaît l'erreur, connaît la solution.

  3. #3
    Nouveau Candidat au Club
    Homme Profil pro
    Indépendant immobilier et développeur informatique
    Inscrit en
    Mars 2023
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Indépendant immobilier et développeur informatique

    Informations forums :
    Inscription : Mars 2023
    Messages : 2
    Points : 1
    Points
    1
    Par défaut
    Bonjour,

    Je préfère plutôt apprendre DirectX. Même si j'avoue que je ne connais pas les moteurs de jeux et qu'il faudrait que je me renseigne sur leurs possibilités.

    En fait, le bas niveau ne me fait pas peur, à partir du moment où j'arrive à avoir l'information qui explique clairement pour un novice à quoi sert chaque fonction (J'ai déjà développé un assembleur pour faire un mini OS de zéro, ou pour programmer des microcontrôleurs, c'est dire si c'est du bas niveau !). Le principe des triangles et des textures, je comprends bien le principe, je trouve ça marrant d'aller proche du matériel. J'ai tout de même réussi à générer un relief avec l'algo du diamant carré et à l'afficher en 3D avec différentes textures pour l'eau, les montagnes, etc.. mais en bidouillant un code existant (le tuto sur DX11 de rastertek présent sur developpez qui à la base affiche juste un cube).

    En fait j'ai plusieurs idées de projets pour l'avenir, pas uniquement des jeux, donc pour ça, je pense que directX est approprié car non cantonné à un domaine.

    Sinon OpenGL permet autant de choses que DirectX ? Et Vulkan c'est le descendant de OpenGL je crois, pas trop complexe ?

    Merci de tes éclairages.

  4. #4
    Responsable 2D/3D/Jeux


    Avatar de LittleWhite
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2008
    Messages
    26 860
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Mai 2008
    Messages : 26 860
    Points : 219 062
    Points
    219 062
    Billets dans le blog
    120
    Par défaut
    Pour être précis, DirectX permet un peu plus de choses que OpenGL, dans le sens OpenGL ne s'occupe que du rendu sur GPU, alors que dans DirectX, il y a Direct3D (l'équivalent d'OpenGL), mais aussi la gestion du chargement de certaines ressources/textures et le son et le support des manettes. Donc, en effet, DirectX fait un peu plus qu'OpenGL. Mais, la raison que la plupart choisissent OpenGL est le fait qu'OpenGL est portable (possibilité de faire des applications Linux/Windows avec le même code).
    Vulkan est un peu plus qu'un descendant d'OpenGL. OpenGL a le problème d'avoir une conception, qui datait et qui ne permettait plus de tirer la totale puissance du matériel avec lequel il interagi. Il fallait une toute nouvelle API pour y arriver.
    Après, cette différence entre OpenGL et Vulkan, on la retrouve aussi entre DirectX 11 et 12. Peut être à un niveau plus faible.

    La documentation sur la MSDN (sur le site de Microsoft) est la documentation la plus officielle et fiable. Il y a peut être des exemples (je crois me rappelais que dans le SDK DirectX il y a des exemples), des tutos, mais surtout, la documentation de chaque fonction.
    Après, comme je l'ai dis, il faut comprendre le pipeline d'un GPU, car au final, le programme ne fait que configurer les étapes du pipeline, puis d'envoyer les données au GPU et le rendu "se fait". En ayant une bonne vision de ce processus (et des étapes à configurer), vous devriez vous en sortir sans trop de mal.

    Quant aux moteurs de jeux vidéo, leurs possibilités sont vraiment grandes et, pour la plupart, ne se limitent pas aux jeux vidéo. En effet, Unreal Engine est utilisé dans le monde de la production audio visuelle, avec les studios de tournage virtuel. Mais il est aussi utilisé dans le monde de l'architecture, ou encore, Unity est utilisé aussi dans le monde pro (pour faire des simulations ou des formations d'employés). Bref, contrairement à il y a 15 ans, maintenant nous ne sommes pas vraiment limité par le moteur.
    Aussi, ne partez pas du principe qu'avec un tel moteur, vous n'allez pas mettre les mains dans le cambouis. Vous allez toujours avoir à faire avec la programmation et aussi la programmation de shader (une que je trouve ultra intéressante, car avec un retour visuel immédiat ou presque). L'avantage d'utiliser un moteur de jeux vidéo, c'est que vous aurez un résultat bien plus rapidement que d'utiliser une bibliothèque bas niveau. Cela veut dire que vous pourrez avoir plus de temps pour ce qui fait que votre application est bien pour l'utilisateur.
    Vous souhaitez participer à la rubrique 2D/3D/Jeux ? Contactez-moi

    Ma page sur DVP
    Mon Portfolio

    Qui connaît l'erreur, connaît la solution.

Discussions similaires

  1. Réponses: 2
    Dernier message: 08/02/2007, 12h02
  2. Réponses: 6
    Dernier message: 06/11/2005, 11h10
  3. C++ pour les nuls => Linux => Problème
    Par wizardman dans le forum Linux
    Réponses: 6
    Dernier message: 21/09/2005, 00h53
  4. Apprendre le réseau (pour les nuls)
    Par __fabrice dans le forum Développement
    Réponses: 5
    Dernier message: 08/03/2005, 13h49

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