Ma question est: pourquoi même prendre la peine d'utiliser quelque chose comme open gl, sfml, sdl alors que tout ce que vous avez à faire est simplement d'allouer du tampon, de passer un bitmap et de le dessiner à l'écran?
Bref: parce que c'est rapide (OpenGL, DirectX).
Longue:
Vous pensez peut-être que vous pouvez le faire vous-même. Dessinez des pixels sur un écran. Vous pouvez écrire une petite bibliothèque pour dessiner des formes, comme des quads ou des triangles. Cela fonctionnera, bien sûr. Il existe de nombreuses bibliothèques pour faire exactement cela. Certains d'entre eux implémentent même la spécification OpenGL (ils sont donc comme un côté logiciel pour opengl) qui fera exactement ce que fait Casey Muratori. Ils calculent tout du côté logiciel, définissent les pixels du côté logiciel et écrivent le résultat à l'écran.
Mais c'est lent . Le CPU qui finira par exécuter toutes ces choses n'a pas été conçu pour ce scénario. C'est à cela que servent les GPU. Ce qu'OpenGL fait (sauf s'il s'agit d'une implémentation logicielle bien sûr), c'est de prendre tout ce que vous lui demandez de faire et de pousser toutes les données, tous les appels, presque tout vers la carte graphique et de dire au GPU de faire le travail. Le GPU est spécialement conçu pour ce type de travail. Multiplier les nombres à virgule flottante (c'est ce que vous faites beaucoup lorsque vous dessinez une scène 3D) et exécuter des shaders. Et cela en parallèle. Juste pour vous donner une idée de la vitesse du GPU, pensez à une simple scène en 3D en plein écran avec 1920x1080 pixels. Ce sont, multipliés, 2 073 600 pixels à dessiner. Pour chaque singlepixel, le GPU exécutera le fragment-shader au moins une fois , la plupart du temps plus d'une fois. Maintenant, disons que nous fonctionnons à 60 images par seconde. Cela signifie que le GPU exécute le fragment-shader 2 073 600 * 60 = 124 416 000 fois par seconde . Pensez-vous que vous pouvez faire quelque chose comme ça sur votre CPU? (C'est une explication assez simplifiée, il y a beaucoup plus de choses à considérer comme le nombre de pixels que vous surplombez par des objets plus proches, la quantité de MSAA que vous utilisez, etc., mais les 124 416 000 fois par seconde sont probablement les plus faibles que vous pouvez obtenir, et vous aura facilement beaucoup plus de 60 images par seconde avec une scène simple)
C'est ce que font OpenGL et Direct3D, pour quels moteurs voient @Uri Popovs répondre.