使用X调用渲染到GLX后台缓冲区?

时间:2012-01-13 03:34:30

标签: c graphics x11 glx

我正在玩GLX和xlib,我很好奇在openGL缓冲区上使用直接X调用进行渲染。 glx intro明确地说:

  

GLX扩展X服务器使其可视化的子集可用于OpenGL渲染。使用这些可视化创建的Drawable也可以使用核心X渲染器和/或与所有核心X视觉效果兼容的任何其他X扩展来渲染。

而且,实际上,我能够使用一些彩虹效果渲染一个简单的四边形颜色,然后使用xlib调用在它上面绘制。 然而,GLX使用后台缓冲区扩展X窗口,我必须先切换到前面,然后再直接渲染到窗口。我的问题是:在使用它完成openGL之后,是否可以使用X渲染到 back 缓冲区,然后将该缓冲区批量交换到前面,从而在我的openGL上提供无闪烁的动画。 X图形?

1 个答案:

答案 0 :(得分:1)

我认为答案是肯定的,但也许有其他选择。

您可以使用像素图执行另一层双缓冲(将X和GL渲染到像素图,然后将像素图绘制到X窗口)。如果您正在进行FPS游戏,它可能会破坏您的帧率,但是您描述的内容可能并不重要。

你也可以使用Cairo绘制到客户端内存缓冲区,使用alpha通道显示背景。然后将结果作为纹理上传到GL并将其绘制在背景上。 Clutter工具包为它的一些绘图做了这个。