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
Linux 无背景、无窗口的OpenGL应用_Linux_Opengl - Fatal编程技术网

Linux 无背景、无窗口的OpenGL应用

Linux 无背景、无窗口的OpenGL应用,linux,opengl,Linux,Opengl,您是否在linux中使用或见过cairo dock?我在维基百科上读到,它是用C写的。我只是好奇他们是如何制作出一个使用OpenGl的无窗口、类似小部件的应用程序的。是否可以制作一个无窗口、无背景(或透明背景)的OpenGl应用程序。他们是用C从头开始做的吗?或者他们使用了其他工具吗?你所说的“无窗口”是什么意思。窗口是屏幕上的(矩形)区域,您可以使用绘图操作将其绘制到该区域。然而,从你的问题来看,我的印象是,你实际上是在询问如何创建一个没有装饰的窗口(即标题栏等) 在Linux中,或者更准确地

您是否在linux中使用或见过cairo dock?我在维基百科上读到,它是用C写的。我只是好奇他们是如何制作出一个使用OpenGl的无窗口、类似小部件的应用程序的。是否可以制作一个无窗口、无背景(或透明背景)的OpenGl应用程序。他们是用C从头开始做的吗?或者他们使用了其他工具吗?

你所说的“无窗口”是什么意思。窗口是屏幕上的(矩形)区域,您可以使用绘图操作将其绘制到该区域。然而,从你的问题来看,我的印象是,你实际上是在询问如何创建一个没有装饰的窗口(即标题栏等)

在Linux中,或者更准确地说是X11,窗口的外观由两件事控制:窗口管理器控制下的窗口的扩展窗口管理器提示(EMWH);窗口管理器是负责绘制装饰和边框的实际程序。以及重定向覆盖标志,该标志控制窗口是否真正处于窗口管理器的控制之下。如果你问的是“无背景”,那么我猜你的意思是,透明。首先看一看我制作的视频:这是你想要的吗?然后,您实际需要的是一个在其帧缓冲区配置(X11 XRender FBConfig)中具有Alpha通道的窗口,以及一个合成管理器(它可以,但不需要是窗口管理器的一部分)。此程序的源代码可在以下位置找到:

或者,您实际上是在询问一个OpenGL上下文,您可以将图片渲染到该上下文中,但它不会出现在屏幕上?这将是一个屏幕外上下文,使用X11实现这一点有两种方法:

  • 使用可用于上下文的无窗口PBuffer X11 drawable

  • 将隐藏窗口与OpenGL帧缓冲区对象一起使用

这两种方法各有利弊