如何在使用 opengl 的 Xlib 窗口中绘制二维文本?

Sud*_*esh 1 opengl xlib

我在 Xlib 窗口中使用 opengl。如何在此窗口上绘制文本(不是在 3d 中)?

dat*_*olf 5

您可以使用通常的 X 字体绘制功能。在单个缓冲窗口中,OpenGL 只是另一个绘图基元。在glXSwapBuffers你需要之后的双缓冲窗口中,XSync然后可以使用 X 字体基元(你也可以使用 Xft)绘制 OpenGL 绘图。

但是请注意,在双缓冲 OpenGL 窗口的情况下,您不能将 X 文本与 OpenGL 自由混合。

更新:

此外,如果您有GLX_ARB_texture_from_pixmap可用的扩展(主要用途是实现合成器,但您也可以将其用于其他用途):您可以使用常规 X11 绘图基元(+ X11 扩展)将文本绘制到服务器端 X11 像素图像 XRender 和 Xft),然后将该像素图绑定到 OpenGL 纹理单元作为图像源。

当然,使用任何 X11 专用函数会将您的程序锁定到 X11。