1

我正在玩 GLX 和 xlib,我很好奇在 openGL 缓冲区上使用直接 X 调用进行渲染。glx简介清楚地表明:

GLX 扩展的 X 服务器使其视觉的子集可用于 OpenGL 渲染。使用这些视觉对象创建的可绘制对象也可以使用核心 X 渲染器和/或与所有核心 X 视觉对象兼容的任何其他 X 扩展进行渲染。

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

4

1 回答 1

1

我认为答案是否定的,但也许有一些替代方案。

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

您还可以使用 Cairo 绘制到客户端内存缓冲区,并使用 alpha 通道显示背景。然后将结果作为纹理上传到 GL 并在背景上绘制。Clutter 工具包为它的一些绘图执行此操作。

于 2012-01-24T19:45:36.013 回答