我期待一个类似于Windows API的Linux API。 我在Google上看到的所有内容都是对Qt和GTK的引用。 我真的不需要用OpenGL绘制一个简单的窗口,所以这些库看起来很臃肿。 Qt和GTK在Linux下使用什么来创build窗口? 有没有更低层次的?
X窗口系统通常执行绘图 – 然后在原始Xlib的顶部使用工具包(如Qt或GTK)来提供事件循环,拖放操作,在鼠标点击和所有其他“桌面”东西
直接使用Xlib和opengl是相当容易的,或者如果你只是想学习opengl, glut提供了显示窗口,处理鼠标/键盘事件等所需的框架。
对于OpenGL来说,最简单的方法是使用GLUT或SDL 。 这是一个使用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"); /* ... */ }
你真的想避免直接使用Xlib,因为它使用起来非常繁琐。 此外,GLUT和SDL使您更容易将OpenGL应用程序移植到不同的平台上。
Axe Martin说,X11(或者它的fork XOrg)是窗口系统,但是实际上你可以在不使用工具包的情况下编写X11应用程序(即客户端),而只需要使用X库。 看到这里的文件。
这通常不是最好的想法,因为这是相当痛苦的,并且会涉及大量的代码,相对简单的应用程序按照您的预期工作。