Per OpenGL, il modo più semplice per farlo è utilizzare GLUT o SDL. Ecco un esempio approssimativo che utilizza 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");
/* ... */
}
Vuoi davvero evitare di usare Xlib direttamente perché è estremamente noioso da usare. Inoltre, GLUT e SDL semplificano il porting della tua applicazione OpenGL su diverse piattaforme.
Il sistema X window generalmente esegue il disegno:quindi utilizzi un toolkit come Qt o GTK sopra Xlib grezzo per fornire loop di eventi, trascinamento della selezione, avvio di app con clic del mouse e tutte le altre cose "desktop"
È abbastanza facile lavorare direttamente con Xlib e opengl o se vuoi solo imparare opengl il glut fornisce il framework necessario per visualizzare una finestra, gestire gli eventi del mouse/tastiera e così via.
Risposta aggiornata per il 2019. I sistemi simili a Unix normalmente utilizzano il sistema X window. Puoi lavorarci direttamente usando Xlib questa è l'API di basso livello. Ma probabilmente hai bisogno di una soluzione più accogliente e multipiattaforma. Puoi usare:
- OpenGL Utility Toolkit - GLUT
- Libreria multimediale semplice e veloce - SFML
- Livello DirectMedia semplice - SDL
- Graphics Library Framework - GLFW (la mia raccomandazione)
GLFW è scritto in C e ha il supporto nativo per Windows, macOS e molti sistemi simili a Unix che utilizzano il sistema X Window, come Linux e FreeBSD.
Una volta installato, crea una finestra con :
#include <GLFW/glfw3.h>
.
. //Entry and glfwInit()
.
GLFWwindow* window = glfwCreateWindow(1000, 1000, "MyWindow", NULL, NULL);
glfwMakeContextCurrent(window);