Je suis autodidacte en C ++ sans aucune éducation formelle et au cours des 15 dernières années, j'ai appris OpenGL 1.0 à travers Modern OpenGL et DirectX 9c, 10 et 11. Je ne suis pas entré dans DirectX 12 et je voulais essayez-moi à Vulkan. J'ai seulement terminé quelques tutoriels de base pour dessiner un simple triangle ou un simple cube en rotation avec Vulkan. Comme avec DirectX 11 et OpenGL 3.3+, j'ai écrit des moteurs de jeu 3D entièrement opérationnels et les ai même utilisés pour créer des jeux simples.
Je dois dire que cela dépend de l'environnement général de la personne qui apprend. Si vous vous lancez dans la programmation graphique 3D, je dirais que, pour commencer, il convient de passer à OpenGL ou à DirectX 11, car il existe de nombreux tutoriels, ressources, exemples et applications qui fonctionnent déjà. Apprendre les graphiques 3D n’est en aucun cas un sujet facile.
Si nous faisons abstraction de l’aspect programmation et que nous nous concentrons simplement sur le type de techniques utilisées impliquant les différents niveaux de mathématiques menant à des ensembles de données et à des structures et algorithmes de données; Avant de pouvoir même créer un moteur de jeu 3D ou en utiliser un déjà existant, vous devez connaître et comprendre beaucoup de choses.
Maintenant, si vous comprenez déjà toutes les notions mathématiques et théoriques et que vous avez une certaine expérience en programmation, vous pouvez utiliser les API, bibliothèques et applications existantes, telles que Unity ou Unreal Engine, et simplement écrire le code source et les scripts dont vous avez besoin pour faire fonctionner votre application. .
Donc, de ma propre compréhension et de la façon dont je vois les choses, voici si vous cherchez à créer un jeu rapide juste pour créer un jeu; aller avec des cadres déjà existants qui rendraient votre temps de production beaucoup plus petit. D'autre part, si vous souhaitez comprendre le fonctionnement interne de la conception des moteurs de jeu / moteurs de physique / moteurs d'animation et des simulateurs et si vous souhaitez en créer un vous-même, vous avez le choix entre choisir votre API, telle que DirectX, OpenGL ou Vulkan. Votre connaissance de la programmation existante serait également l’un des facteurs déterminants. Ce que je veux dire par là est que si vous ne connaissez rien au multi-threading, aux appels synchrones ou asynchrones, aux barrières de mémoire, aux courses de données, aux sémaphores et au parallélisme (programmation parallèle),
Je mentionne cela parce que si vous ne savez pas comment gérer correctement votre mémoire avec vos threads et le temps d'accès; Vulkan va te mordre dans le cul! Où OpenGL et DirectX vous tiendrons au courant tout en consommant beaucoup plus de puissance de calcul.
Maintenant, si votre niveau de connaissance en programmation est correct et que vous avez les antécédents mathématiques suivants qui concernent tous les niveaux d’Algèbre, Géométrie, Trigonométrie, Algèbre Booléenne, Probabilités, Statistiques, Algèbre à base de matrices vectorielles, Calcul I, II, .... Infinty (lol). Calcul vectoriel, Algèbre linéaire, Systèmes d'équations linéaires, Géométrie analytique avec calcul vectoriel de calculs à variables multiples, Théorie des nombres et des ensembles, Ensembles de données et structures, Analyse informatique, Conception algorithmique et algorithmique. Ensuite, vous pourrez entrer dans les concepts de ce qu’il faut pour créer un moteur de jeu réel, sans aucune mathématique appliquée ni aucune équation de physique dont vous aurez besoin. Une fois que vous avez cette expérience et suffisamment d'expérience en programmation, notamment la gestion de la mémoire et l'arithmétique des pointeurs, vous pouvez commencer à créer votre moteur de jeu.
Vous devez donc comprendre tous les aspects de la création d’un moteur de jeu afin de faire de la programmation graphique avancée. Si vous ne faites que des graphiques 2D, la vie n’est pas compliquée, car vous pouvez le faire en Python sans l’une des API susmentionnées! Mais si vous voulez être sérieux et concevoir un moteur de jeu complet à la fois robuste et robuste, avec de nombreux jeux de fonctionnalités, vous pouvez choisir entre C ou C ++ et utiliser OpenGL, Direct X ou Vulkan. N'importe lequel d'entre eux irait bien. Maintenant, si vous construisez le moteur à partir de zéro et que vous recherchez le moteur le plus "efficace" avec le moins de surcharge de ressources, choisissez Vulkan. Mais si vous allez dans cette voie, vous devriez au moins savoir tout ce que j'ai mentionné ci-dessus et quelques-uns!
Comme vous pouvez le constater, Vulkan n’est pas vraiment destiné aux programmeurs débutants dans ce domaine. Vous devez avoir une connaissance approfondie de tous les maths, paradigmes de programmation, tous les différents types de jeux de données et d'algorithmes, y compris le threading, la synchronisation de la mémoire, la programmation parallèle. Et même dans ce cas, il s’agit simplement d’amener l’application à charger un simple triangle 2D sur l’écran. Ce qui peut être fait dans environ 100 lignes de code dans OpenGL ou dans 250 lignes de code dans DirectX prend près de 1000 lignes de code dans Vulkan!
Vulkan laisse tout à vous, car vous êtes responsable de tous les aspects de votre utilisation de Vulkan dans votre application. Il n'y a pas de prise de main, cela ne vous gêne pas, cela vous permet de vous tirer une balle dans le pied ou de vous pendre et d'acheter un nœud coulant récursif!
Maintenant, cela ne veut pas dire que les débutants ou ceux qui sont nouveaux dans ce domaine ne devraient pas apprendre Vulkan, mais voici ce que je leur suggèrerais: Premièrement, apprenez assez de choses sur OpenGL et / ou DirectX application de base est structurée juste pour rendre un simple triangle ou un cube en rotation. Familiarisez-vous avec leurs API et leurs modèles récurrents de leurs structures. Tout en apprenant que vous pouvez apprendre Vulkan du côté de Parallel, vous pouvez ainsi voir comment chacun des trois accomplit la même tâche tout en sachant comment ils le font différemment. Vous pouvez également comparer les résultats entre les différentes API et à partir de là, vous pourrez alors choisir lequel vous convient le mieux. Cette méthode vous donnerait aussi un autre outil dans votre boîte à outils, et vous pourriez même écrire votre application pour supporter les 3 et avoir le "
En fin de compte, il appartient à cette personne de choisir l’itinéraire qu’elle souhaite emprunter. À partir de là, son succès dépend de son dévouement, de ses études constantes, de son dur labeur, de ses essais et erreurs et, plus important encore, de ses échecs. Si vous n'échouez pas, vous échouez! Vous ne réussissez que si vous avez échoué, trouvé votre (vos) erreur (s), corrigé (e) s, progressé (e), relevé (e) et tout recommencé!