Cette première partie concernera les prémices sans entrer dans les détails techniques.
L'API utilisé est OpenGL, qui est multi-plateforme.
Le noyeau :
Un jeu est comme un logiciel, une simple boucle.
Dans cette boucle, nous avons toute la logique comme les entrées clavier/souris, l'affichage, les algorithmes, ...
A chaque itération de la boucle, une image appelé frame est généré.
Donc si vous limitez le nombre d'itérations par seconde à 30 (en utilisant la synchronisation verticale par exemple), vous aurez 30 FPS (Frame Per Second).
Vous pouvez améliorer les performances en extrayant la logique qui ne fait pas appelle à OpenGL (inputs, IA, calculs, ...), dans des threads. (Depuis Direct3D 11, le rendu multi thread est géré).
OpenGL :
OpenGL est une API qui permet aussi bien le rendu 2D que 3D en utilisant la carte graphique. Il évolue avec la contribution des constructeurs de cartes graphiques, les concepteurs de systèmes d'exploitation et de sociétés influentes ayant besoin de cette évolution.
OpenGL dispose de plusieurs portages dans différents langages, LWJG et JOGL pour java même si LWJGL ce veux plus moteur de jeu en permetant la gestion des inputs clavier/souris et proposant l'API OpenAL pour l'audio.
L'API est directement incorporé à la carte graphique pour calculer avec la puissance du GPU au lieu du CPU.
Notons qu'un GPU est plus rapide qu'un CPU pour des calculs graphique grâce à l'accélération matérielle.
OpenGL ES :
Il s'agit de la version embarquée d'OpenGL pour les navigateur web, les consoles et les smartphones. Android l'utilise dès la version 1.6 (Donut) avec OpenGL ES 1.1, OpenGL ES 2.0 à partir de la version 2.0 (Eclair) et OpenGL ES 3.0 depuis Android 4.3 (Jelly Bean) for les appareils le supportant.
Shaders :
Depuis OpenGL 1.4, les shaders ont étaient implémentés. Tout d'abord en tant qu’extension et ajouté au noyeau d'OpenGL 2.0. Un shader est un programme utilisant un langage graphique qui est directement exécuté par le GPU et permettant de modifier l'image de sortie, ou de modifier une géométrie (vertex, fragment et pixel shaders). Les langages commun sont GLSL(OpenGL Shading Language (Langage officiel d'OpenGL)) et HLSL (Directx High-Level Shader Language de Microsoft).