Para OpenGL, la forma más fácil de hacerlo es usando GLUT o SDL. Aquí hay un ejemplo aproximado usando 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");
/* ... */
}
Realmente desea evitar usar Xlib directamente, ya que es extremadamente tedioso de usar. Además, GLUT y SDL facilitan la migración de su aplicación OpenGL a diferentes plataformas.
El sistema de ventanas X generalmente hace el dibujo:luego usa un conjunto de herramientas como Qt o GTK encima de Xlib sin procesar para proporcionar bucles de eventos, arrastrar y soltar, iniciar aplicaciones con clics del mouse y todas las demás cosas de 'escritorio'
Es bastante fácil trabajar directamente con Xlib y opengl o, si solo desea aprender opengl, glut proporciona el marco que necesita para mostrar una ventana, manejar eventos de mouse/teclado, etc.
Respuesta actualizada para 2019. Los sistemas similares a Unix normalmente usan el sistema de ventanas X. Puede trabajar con él directamente usando Xlib, esta es la API de bajo nivel. Pero es probable que necesite una solución más acogedora y multiplataforma. Puedes usar:
- Kit de herramientas de utilidad OpenGL - GLUT
- Biblioteca multimedia simple y rápida - SFML
- Capa de DirectMedia simple - SDL
- Framework de la biblioteca de gráficos - GLFW (mi recomendación)
GLFW está escrito en C y tiene soporte nativo para Windows, macOS y muchos sistemas similares a Unix que utilizan el sistema X Window, como Linux y FreeBSD.
Una vez instalado, cree una ventana con:
#include <GLFW/glfw3.h>
.
. //Entry and glfwInit()
.
GLFWwindow* window = glfwCreateWindow(1000, 1000, "MyWindow", NULL, NULL);
glfwMakeContextCurrent(window);