Pourquoi SDL et OpenGL sont-ils liés?
Je déconnais avec SDL et j'ai découvert que vous ne pouvez pas faire pivoter les images avec SDL. Partout où la question a été posée, les gens ont dit d'utiliser OpenGL pour faire la rotation. J'ai toujours pensé que SDL était complètement séparé D'OpenGL, ai-je tort de penser cela? J'ai même trouvé des tutoriels pour utiliser OpenGL dans SDL, ce qui m'a confus encore plus loin. Quelle est exactement la relation entre SDL et OpenGL? Pourquoi ne pas simplement utiliser OpenGL si c'est plus puissant et vous permet de faire plus (c'est à partir de ce que j'ai lire)?
6 réponses
SDL est une bibliothèque multimédia multi-plateforme conçue pour fournir un accès de bas niveau à l'audio, au clavier, à la souris, au joystick, etc. Il prend également en charge le matériel 3D via OpenGL.
OpenGL est une spécification standard définissant une API multi-langage et multi-plateforme pour l'écriture d'applications qui produisent des infographies 2D et 3D . L'interface se compose de plus de 250 appels de fonction différents qui peuvent être utilisés pour dessiner des scènes tridimensionnelles complexes à partir de simples primitives. OpenGL a été développé par Silicon Graphics Inc. (SGI) en 1992 [4] et est largement utilisé dans la CAO, la réalité virtuelle, la visualisation scientifique, la visualisation de l'information et la simulation de vol. Il est également utilisé dans les jeux vidéo, où il est en concurrence avec Direct3D sur les plates-formes Microsoft Windows (voir OpenGL vs Direct3D).
SDL est une couche au-dessus D'OpenGL; en fait, il utilise GDI sur Windows par défaut et a également un backend DirectX. Les gens disent probablement que vous pouvez utiliser OpenGL pour contourner les limitations de SDL sur les plates-formes qui utilisent par défaut OpenGL (ahem, Linux) car l'abstraction de niveau supérieur n'expose pas cette fonctionnalité. Cependant, votre code est" moins " portable Pour Windows (ou au moins Windows en utilisant le backend GDI).
En outre, SDL fait beaucoup d'autres choses que les graphiques-audio, d'entrée, etc. que OpenGL ne pas le faire.
SDL gère l'entrée, la création de fenêtres, le chargement d'images et plusieurs autres fonctionnalités qu'OpenGL ne gère pas.
SDL utilise OpenGL comme moteur de rendu matériel pour le contenu qui souhaite un rendu matériel sur certaines plates-formes. Si vous avez une telle plate-forme, alors OpenGL est L'API sous-jacente sur laquelle SDL est une abstraction.
A propos de votre exemple sur la rotation des graphiques: il est préférable de le faire avec OpenGL (c'est-à-dire accéléré hardware) qu'avec SDL lui-même (c'est-à-dire sur le CPU) car il est généralement intensif sur le plan computif (surtout si vous avez beaucoup de bitmaps pour faire pivoter chaque image et que vous voulez que
Cependant, rien (à part la raison) ne vous empêche d'utiliser le paquet SDL_gfx qui a le module SDL_rotozoom responsable de la rotation et de la mise à l'échelle des bitmaps.
Comme beaucoup de gens l'ont déclaré. SDL gère plus que le simple Rendu. En plus de gérer l'audio, l'entrée et tous les autres trucs sympas, il rend l'utilisation des graphiques plus simple en vous donnant accès à de nombreuses fonctions que vous auriez besoin de mettre en œuvre par vous-même sinon.
Donc ys, SDL est une couche d'abstraction au-dessus D'OpenGL. Vous êtes toujours en mesure d'accéder à OpenGL dans votre application et donc l'utiliser à pleine puissance.
Un ajout simple, puisque vous semblez être nouveau dans ce genre D'API: si vous voulez une API qui est similaire à SDL (pour les graphiques 2D) je peux recommander de jeter un oeil à SFML . Il est basé sur C++ au lieu de C a des fonctions pour des choses comme la rotation. Il est également basé sur OpenGL. :)