GNU/Linux >> Tutoriels Linux >  >> Linux

Comment créer une fenêtre sous Linux avec C++ ?

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);

Linux
  1. Comment avez-vous commencé avec Linux ?

  2. Comment créer un utilisateur avec un répertoire personnel personnalisé sous Linux

  3. Linux - Comment intégrer le son aux événements de bureau ?

  4. Comment créer des threads sous Linux (avec un exemple de programme C)

  5. Comment utiliser les expressions régulières avec la commande cp sous Linux ?

Comment créer un fichier sous Linux

Comment créer des raccourcis sur le bureau Linux

Comment créer des lecteurs USB multiboot avec Ventoy sous Linux

Comment créer un alias SSH sous Linux

Comment créer un groupe de volumes sous Linux avec LVM

Comment créer un ebook avec Calibre sous Linux [Guide complet]