2012-06-25 32 views
20

Esperaba una API de Linux similar a la API de Windows. Todo lo que veo en Google son referencias a Qt y GTK. Realmente no necesito nada más que una simple ventana para dibujar con OpenGL, por lo que estas bibliotecas aparecen hinchadas para mi uso. ¿Qué utilizan Qt y GTK para crear ventanas bajo Linux? ¿No hay nada más de bajo nivel?¿Cómo se crea una ventana en Linux con C++?

+1

La API de Windows X suele ser la API de nivel más bajo para "ventanas" genéricas en * nix. http://tronche.com/gui/x/xlib/introduction/ – Chad

+0

Tengo curiosidad: ¿por qué esperarías que "linux api" (lo que sea que digas con eso exactamente) sea lo mismo que winapi? – PlasmaHH

+1

Realmente no desea ir a un nivel inferior. Utilice una de las abstracciones de mayor nivel (QT/GTK/WxLib/More); de lo contrario, se quedará atascado en muchas minucias que no desea manejar que los marcos de nivel superior eliminen. Todos ellos te permiten obtener una capa OpenGL y dibujar sobre ella. –

Respuesta

10

El sistema de ventanas X generalmente hace el dibujo; a continuación, utiliza un conjunto de herramientas como Qt o GTK encima del Xlib sin procesar para proporcionar bucles de eventos, arrastrar y soltar, iniciar aplicaciones en clics del mouse y todas las demás cosas de "escritorio"

Es bastante fácil trabajar directamente con Xlib and opengl o si solo quiere aprender opengl, glut proporciona el marco que necesita para mostrar una ventana, manejar eventos de mouse/teclado, etc.

+1

En principio, incluso podría evitar Xlib y simplemente transmitir (y recibir, e interpretar) el protocolo X11 sin formato. Pero eso no es razonable. –

8

Para OpenGL, la forma más fácil de hacerlo es usando GLUT o SDL. He aquí un ejemplo aproximado utilizando 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"); 
    /* ... */ 
} 

que realmente quiere evitar el uso de Xlib directamente, ya que es muy tedioso de usar. Además, GLUT y SDL hacen que sea más fácil portar su aplicación OpenGL a diferentes plataformas.

+0

¿Cómo se accede a la capa de gráficos para usar con OpenGL? –

+0

@LokiAstari: Si te refieres a algún tipo de tipo opaco que mantiene el estado del dibujo, realmente no lo sé. Cuando solía codificar en OpenGL (en la versión 1.2), solo había un lugar global para dibujar que manejaba internamente la implementación de OpenGL. – C2H5OH

3

Ax Martin dijo, X11 (o su fork XOrg en estos días) es el sistema de ventanas, pero en realidad puede escribir aplicaciones X11 (es decir, clientes) sin usar un juego de herramientas, simplemente usando las bibliotecas X. Consulte here para la documentación.

En general, no es la mejor idea hacerlo, ya que es bastante doloroso e implicará una gran cantidad de código para que las aplicaciones relativamente simples funcionen como usted espera.

Cuestiones relacionadas