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++?
Respuesta
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.
En principio, incluso podría evitar Xlib y simplemente transmitir (y recibir, e interpretar) el protocolo X11 sin formato. Pero eso no es razonable. –
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.
¿Cómo se accede a la capa de gráficos para usar con OpenGL? –
@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
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.
- 1. Cómo hacer una ventana transparente en Linux
- 2. ¿Cómo puedo recibir una notificación cuando se crea una nueva ventana en Win32?
- 3. Crea una miniatura de un dwg en un entorno Linux
- 4. ¿Cómo se crea una interfaz de red virtual en Windows?
- 5. ¿Cómo se difunde UDP con C en Linux?
- 6. ¿Cómo se crea una cadena XML con sangría de un XDocument en C#?
- 7. ¿Cuándo se crea VTable en C++?
- 8. ¿Cómo se crea una tabla HTML con columnas ajustables?
- 9. ¿Cómo se crea una nueva matriz en VB.NET?
- 10. ¿Cómo se crea una DLL COM en Visual Studio 2008?
- 11. Zend ¿Cómo se crea una combinación izquierda
- 12. ¿Cómo se crea un objeto nulo en C#
- 13. ¿Cómo se crea un programa independiente en C++?
- 14. ¿Cómo crea C# una instancia de una clase?
- 15. Cómo crear una ventana oculta en C++
- 16. PyBrain: cuando se crea una red desde cero, ¿cómo y dónde se crea un sesgo?
- 17. ¿Cómo se crea un dispositivo virtual io en Linux que transmite datos a un dispositivo real?
- 18. Configuración de la ventana de recepción de TCP en C y trabajo con tcpdump en Linux
- 19. Bloquear archivos en Linux con c/C++
- 20. cómo se crea un NSManagedObjectContext
- 21. ¿Cómo crea la extensión Google Hangouts la ventana del panel?
- 22. ¿Cómo se crea un archivo temporal con cacao? Hace
- 23. procedimientos de mensajes de ventana en Linux vs Ventanas
- 24. ¿Cómo se crea una subclase personalizada de IO en Ruby?
- 25. ¿Cómo se crea una API REST en PHP?
- 26. cómo crear una ventana con dos botones que se abrirá una nueva ventana
- 27. ¿Forma estándar de abrir una ventana de carpeta en Linux?
- 28. ¿Cómo se crea una copia de una instancia de UIImageView?
- 29. ¿Cómo obtener una miniatura de una ventana en C#?
- 30. ¿Cómo se crea una aplicación portátil (funciona sin instalar)
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
Tengo curiosidad: ¿por qué esperarías que "linux api" (lo que sea que digas con eso exactamente) sea lo mismo que winapi? – PlasmaHH
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. –