通常人们如何通过GUI和3D渲染的混合来制作GUI程序? 即SolidWorks
更具体地说:看起来,OpenGL更适合渲染和创build3D对象/世界,这更像是一个游戏,因为缺乏更好的描述。 所以例如,如果我想用OpenGL创build一个GUI(即像MATLAB),我将不得不从头开始编写所有字符信息以进行文本编辑,button等,这似乎很荒谬。 所以,如果我想创build这些窗口,我会使用像Qt这样的生成器,但它的所有function都是有限的,如果我想在Qt中创build一个奇特的3D模型,那么我不得不使用所有Qt函数,和OpenGl一样好吗? (Wayland如何融入这张照片?)
是什么让你觉得你不能混合和匹配的东西? 另外,你也会对OpenGL,Qt和Wayland产生误解。 总的来说,这个问题太广泛了,不能令人满意地回答。 我已经在这里给出了一个冗长的解释: https : //stackoverflow.com/a/18006486/524368
总之:
Westion:一个Wayland合成器,它创建帧缓冲器作为屏幕窗口供客户端绘制
X11:图形和用户输入服务器协议; 客户端可以连接到X11服务器,并将X11绘制命令发送给服务器执行到帧缓冲区(在X11中可绘制)。 传统上X11会直接画到屏幕上,但是如果X11服务器(Xwayland)可以使用Wayland的framebuffer。 此外,X11将用户输入(鼠标,键盘,游戏杆等)复用到连接的客户端。
X11客户端:连接到X11服务器并发送绘图命令。
OpenGL:一个面向帧缓冲的绘图API。 本质上,OpenGL提供了一些方法来高效地将点,线和三角形绘制到帧缓冲区。 绘图的过程既可以是硬连线操作(旧式OpenGL),也可以是自由编程(基于现代,基于着色器的OpenGL)的固定功能。 OpenGL绘图命令可以发送到实现GLX的X11服务器; 在这种情况下,OpenGL命令由X11服务器执行,客户端只是向服务器发送一个命令流。 然而,OpenGL命令通常是由OpenGL API直接执行的,直接由GPU处理,然后GPU将其处理为帧缓冲区中的像素。
像Qt或GTK的工具包:为创建用户界面提供抽象。 Windows和小部件是组织帧缓冲区内容的逻辑结构。 用户输入在事件系统中进行处理,程序员可以使用该系统来控制工具箱提供的功能。 用户界面元素是通过工具包可用的任何方式绘制的。 这可以是正在使用的图形系统的本地绘图方法(X11绘图命令),也可以是没有本地设置的绘图命令,如在Wayland中,无论是否符合法案。 所以OpenGL是一个可行的选项(如此使用),如果该进程的运行时环境非常适合,则可以绘制它的用户界面元素。
通常人们如何通过GUI和3D渲染的混合来制作GUI程序? 即SolidWorks
他们使用像Qt这样的工具包,并且必须使用OpenGL(或类似的API)来绘制3D东西。
看起来,OpenGL更适合于渲染和创建3D对象/世界,这更像是一个游戏,因为缺乏更好的描述。
OpenGL只是绘制点,线和三角形。
OpenGL中没有“场景”或“世界”。 看起来像一个场景或游戏环境的一切都是由于使用OpenGL的程序逻辑而产生的,结果看起来像这样。
此外,OpenGL不会做窗户,它不会对用户输入。 为整个小部件业务使用GUI工具包,并使用OpenGL绘制场景。