无背景和无窗口OpenGL应用程序

时间:2012-09-18 07:17:01

标签: linux opengl

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

1 个答案:

答案 0 :(得分:1)

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

在Linux中,或者更准确地说是X11,窗口的外观由两个部分控制:窗口管理器控制下的窗口的扩展窗口管理器提示(EMWH);窗口管理器是负责绘制装饰和边框的实际程序。以及重定向覆盖标志,如果窗口实际上受窗口管理器的控制,则控制该标志。如果你问的是“无背景”,那么我认为你的意思是透明的。首先来看看我制作的这个视频:http://www.youtube.com/watch?v=iHZfH1Qhonk这就是你所追求的吗?那么你真正想要的是一个窗口,它的帧缓冲配置(X11 XRender FBConfig)中有一个 Alpha通道,还有一个合成管理器(可以但不一定要成为窗口的一部分)经理)。可以在https://github.com/datenwolf/codesamples/tree/master/samples/OpenGL/x11argb_opengl_glsl

找到此程序的源代码

或者您实际上是在询问可以渲染图片的OpenGL上下文,但是没有它出现在屏幕上?那将是一个离屏上下文,有两种方法可以用X11实现它:

  • 使用无窗口PBuffer X11绘制上下文

  • 将隐藏窗口与OpenGL Framebuffer对象一起使用

这两种方法各有利弊。