Für OpenGL ist es am einfachsten, GLUT oder SDL zu verwenden. Hier ist ein ungefähres Beispiel mit 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");
/* ... */
}
Sie möchten wirklich vermeiden, Xlib direkt zu verwenden, da es äußerst mühsam ist, es zu verwenden. Darüber hinaus erleichtern GLUT und SDL die Portierung Ihrer OpenGL-Anwendung auf verschiedene Plattformen.
Das X-Window-System übernimmt im Allgemeinen das Zeichnen – Sie verwenden dann ein Toolkit wie Qt oder GTK auf der Basis von Roh-Xlib, um Ereignisschleifen, Drag-and-Drop, das Starten von Apps auf Mausklicks und all das andere „Desktop“-Zeug bereitzustellen.
Es ist ziemlich einfach, direkt mit Xlib und Opengl zu arbeiten, oder wenn Sie nur Opengl lernen möchten, bietet Glut das Framework, das Sie benötigen, um ein Fenster anzuzeigen, Maus-/Tastaturereignisse zu handhaben und so weiter.
Aktualisierte Antwort für 2019. Unix-ähnliche Systeme verwenden normalerweise das X-Window-System. Sie können direkt damit arbeiten, indem Sie Xlib verwenden, dies ist die Low-Level-API. Aber Sie brauchen wahrscheinlich eine einladendere und plattformübergreifende Lösung. Sie können Folgendes verwenden:
- OpenGL Utility Toolkit - GLUT
- Einfache und schnelle Multimedia-Bibliothek - SFML
- Einfache DirectMedia-Schicht - SDL
- Graphics Library Framework - GLFW (meine Empfehlung)
GLFW ist in C geschrieben und bietet native Unterstützung für Windows, macOS und viele Unix-ähnliche Systeme, die das X Window System verwenden, wie Linux und FreeBSD.
Erstellen Sie nach der Installation ein Fenster mit :
#include <GLFW/glfw3.h>
.
. //Entry and glfwInit()
.
GLFWwindow* window = glfwCreateWindow(1000, 1000, "MyWindow", NULL, NULL);
glfwMakeContextCurrent(window);