如何在Linux中使用C++创建窗口?

Ste*_*cto 23 c++ linux window

我期待一个类似于Windows API的Linux API.我在Google上看到的只是对Qt和GTK的引用.我真的不需要用OpenGL绘制一个简单的窗口,所以这些库看起来很臃肿供我使用.Qt和GTK用什么来在Linux下创建窗口?有没有更低级别的?

Mar*_*ett 10

X窗口系统通常会绘制图形 - 然后在原始Xlib之上使用Qt或GTK等工具包来提供事件循环,拖放,在鼠标点击上启动应用程序以及所有其他"桌面"内容

直接使用Xlib和opengl相当容易,或者如果你只是想学习opengl,那么过剩提供了显示窗口,处理鼠标/键盘事件等所需的框架.


C2H*_*5OH 9

对于OpenGL,最简单的方法是使用GLUTSDL.这是使用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");
    /* ... */
}
Run Code Online (Sandbox Code Playgroud)

你真的想避免直接使用Xlib,因为它使用起来非常繁琐.此外,GLUT和SDL使您可以更轻松地将OpenGL应用程序移植到不同的平台.


tom*_*une 5

更新了 2019 年的答案。类 Unix 系统通常使用 X 窗口系统。您可以使用 Xlib 直接使用它,这是低级 API。但您可能需要一个更受欢迎的跨平台解决方案。您可以使用:

GLFW 用 C 语言编写,对 Windows、macOS 和许多使用 X Window 系统的类 Unix 系统(例如 Linux 和 FreeBSD)提供本机支持。

安装后,创建一个窗口:

#include <GLFW/glfw3.h>
.
. //Entry and glfwInit()
.
GLFWwindow* window = glfwCreateWindow(1000, 1000, "MyWindow", NULL, NULL);
glfwMakeContextCurrent(window);
Run Code Online (Sandbox Code Playgroud)