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

标签 c graphics x11 glx

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

GLX extended X servers make a subset of their visuals available for OpenGL rendering. Drawables created with these visual can also be rendered into using the core X renderer and or any other X extension that is compatible with all core X visuals.

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

最佳答案

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

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

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

关于c - 使用 X 调用渲染到 GLX 后台缓冲区?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8845580/

相关文章:

video - 从远程终端在 X11 中使用 VLC 播放视频

c++ - 如果窗口存在,我如何 checkin xlib?

C检查二维数组中元素的所有邻居

java - 用于在 iOS/android 上为塔防等 2D 游戏制作动画的方法

x11 - 是否可以使用 Xrandr 获取监视器描述?

algorithm - 可以计算Shader算法的时间复杂度吗?

image - 在 Node.js 中对图像应用半透明水印

c - 我无法在 C 中正确创建双向链表

c - 如何在不加载其依赖项的情况下加载共享库?

C 程序,具有检查整数 A 是否包含整数 B 的函数