Pour OpenGL, la façon la plus simple de le faire est d'utiliser GLUT ou SDL. Voici un exemple approximatif utilisant GLUT :
#include <GL/glut.h>
int main (int argc, char **argv)
{
glutInit(&argc, argv);
glutInitDisplayMode(GLUT_RGBA | GLUT_DOUBLE | GLUT_DEPTH);
glutInitWindowSize(800, 600);
glutInitWindowPosition(100, 100);
glutCreateWindow("My new window");
/* ... */
}
Vous voulez vraiment éviter d'utiliser Xlib directement car il est extrêmement fastidieux à utiliser. De plus, GLUT et SDL facilitent le portage de votre application OpenGL sur différentes plates-formes.
Le système X Window fait généralement le dessin - vous utilisez ensuite une boîte à outils telle que Qt ou GTK au-dessus de Xlib brut pour fournir des boucles d'événements, glisser-déposer, démarrer des applications sur des clics de souris et toutes les autres choses "de bureau"
Il est assez facile de travailler directement avec Xlib et opengl ou si vous voulez simplement apprendre opengl, glut fournit le cadre dont vous avez besoin pour afficher une fenêtre, gérer les événements souris/clavier, etc.
Réponse mise à jour pour 2019. Les systèmes de type Unix utilisent normalement le système X Window. Vous pouvez travailler directement avec Xlib, c'est l'API de bas niveau. Mais vous avez probablement besoin d'une solution plus accueillante et multiplateforme. Vous pouvez utiliser :
- Boîte à outils de l'utilitaire OpenGL – GLUT
- Bibliothèque multimédia simple et rapide - SFML
- Couche DirectMedia simple – SDL
- Cadre de la bibliothèque graphique – GLFW (ma recommandation)
GLFW est écrit en C et prend en charge nativement Windows, macOS et de nombreux systèmes de type Unix utilisant le système X Window, tels que Linux et FreeBSD.
Une fois installé, créez une fenêtre avec :
#include <GLFW/glfw3.h>
.
. //Entry and glfwInit()
.
GLFWwindow* window = glfwCreateWindow(1000, 1000, "MyWindow", NULL, NULL);
glfwMakeContextCurrent(window);