对于Linux来说,我是一个完全新手,我在第三学期的操作系统类中触及了一些,但就是这样.我的操作系统交互仅限于使用WinAPI.我正在为我的游戏引擎编写低级系统,即上下文创建,文件处理,HID,线程等等.我希望能够在Windows和Linux上实现相同的功能. .
在寻找有关Linux接口系统的信息时,我能找到的是Qt等库的推荐.这是一个很棒的图书馆,我在Windows上使用过它,但是我并不像我在学习使用Linux的过程那样对阻力最小的路径感兴趣.由于没有像Linux AFAIK的Windows.h这样的东西,这让人感到畏惧.
你们可以试着指点我正确的方向吗?Linux用于窗口系统的本机(如果存在)库(或者只是创建OpenGL上下文的方式,但具有窗口焦点,相对鼠标坐标,窗口最小化等Windows功能),键盘/鼠标/等的输入.,文件i/o和线程?不必具体,能够在Google中输入内容并获得正确结果会很不错.
GNU/Linux系统上的图形显示通常使用X Window System或简称X11.但与Windows不同,X11没有像嵌入式和标签这样的"内置"UI控件; 它是一个较低级别的API,只需打开一个窗口并将内容绘制到其中即可.
要构建UI,您可以使用原始X11并自己绘制所有内容,但大多数程序使用工具包,构建在X11之上的库并实现常用控件(如按钮)和用于编程的事件处理基础结构跟他们. GTK和Qt是目前最常见的两种,但还有其他一些,例如Motif(它更老,看起来不太好).请注意,GNOME桌面环境是使用GTK构建的,而KDE是使用Qt构建的.
如果要在X11中使用OpenGL,可以使用GLX创建GL上下文并将其与窗口关联.它在设计上类似于用于在Windows中设置GL上下文的WGL接口,但不同的是,为一个编写的代码不能用于另一个.为了方便和可移植性,应用程序通常使用更高级别的库(如GLFW或SFML)来处理GL上下文创建.
在一个名为Wayland的新窗口框架上正在开展工作,它将(可能)最终取代X11.更高级别的库(如GTK和Qt)将移植到使用Wayland作为后端 - 就像他们可以使用Windows GDI和Apple Quartz作为后端一样 - 因此使用这些更高级别工具包的应用程序不应受到交换机的影响到Wayland.