Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/opengl/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
为什么基于GLX的应用程序可以在Ubuntu的Wayland上运行?_Ubuntu_Opengl_Glx_Wayland - Fatal编程技术网

为什么基于GLX的应用程序可以在Ubuntu的Wayland上运行?

为什么基于GLX的应用程序可以在Ubuntu的Wayland上运行?,ubuntu,opengl,glx,wayland,Ubuntu,Opengl,Glx,Wayland,因此,GLX是X11上OpenGL的图形上下文创建和管理系统。但从设计上看,Wayland与X11不兼容,并为OpenGL上下文管理而不是GLX实现EGL。那么,在Ubuntu17.10上基于Wayland的会话上,我如何仍然可以运行使用GLX创建上下文的应用程序(例如,glxinfo和glxgears)?是否正在进行一些透明的GLX仿真 另外(因为这可能与上述问题有关)为什么在Wayland上运行时,这些基于GLX的应用程序不能使用MSAA(例如,glxinfo不返回任何支持MSAA的上下文类

因此,GLX是X11上OpenGL的图形上下文创建和管理系统。但从设计上看,Wayland与X11不兼容,并为OpenGL上下文管理而不是GLX实现EGL。那么,在Ubuntu17.10上基于Wayland的会话上,我如何仍然可以运行使用GLX创建上下文的应用程序(例如,
glxinfo
glxgears
)?是否正在进行一些透明的GLX仿真


另外(因为这可能与上述问题有关)为什么在Wayland上运行时,这些基于GLX的应用程序不能使用MSAA(例如,
glxinfo
不返回任何支持MSAA的上下文类型)-至少在我测试它们的英特尔GPU上-而MSAA对相同的应用程序运行良好,在X.org而不是Wayland上运行GPU和Ubuntu版本?

因此根据@genpfault提供的链接:

  • XWayland是XOrg的一部分,XOrg在Wayland之上提供了一个X服务器。任何与X11 LIB链接并在Wayland下运行的应用程序都将自动使用XWayland作为其后端。因此,XWayland的GLX部分是允许基于GLX的OpenGL应用程序在Wayland上运行的机制
  • 无法在基于GLX的应用程序中使用MSAA似乎是XWayland的一个已知缺陷,至少对于Intel和AMD GPU(参见)。但我找不到关于此事的任何其他信息

@genpfault:这就解释了为什么GLX可以工作。关于为什么XWayland在MSAA支持方面的行为与原生X.org不同,有什么见解吗?遗憾的是,没有,不知道MSAA支持为什么会有不同:(尝试通过在终端运行来强制X11后端
export GDK_backend=X11
,然后启动你的应用程序
/myapp
,如果有人对“Wayland/Xorg”更了解的话可以更深入地了解细节。