【问题标题】:Combining GLX (OpenGL) and X11 graphics结合 GLX (OpenGL) 和 X11 图形
【发布时间】:2014-06-24 14:44:05
【问题描述】:

我必须在 Linux 上使用 X11 作为接口(在 C++ 中)编写一个应用程序。该应用程序使用 GLX 来渲染一些 openGL 图形,但我还需要在同一窗口中为此应用程序编写一些自定义 UI。

当我创建窗口时,我创建了一个 GC 和一个 GLX 上下文。理想情况下,我需要将 openGL “绘制”到窗口的一个区域(比如左侧),然后在 GL 视口一侧绘制 UI。

我该怎么做?

  • 如何结合 GLX 和 GC 绘图调用,例如 XDrawString。
  • 在同一个窗口中创建布局的最佳方式是什么.我需要为此创建子窗口吗?

【问题讨论】:

  • 您是否考虑过使用结合 X11 和 OpenGL 的工具包?
  • 考虑libsdlQtOpenGL等...
  • 是的,我做到了,我不能在这个项目或任何其他库中使用 Qt。使用 X11 和 GLX 是我唯一的解决方案。
  • 您准备好花费数月或数年的努力了吗?至少,研究一下这些免费软件库的源代码,它会教给你很多东西!还有GtkGLExt,或者FOX等等……
  • 谢谢,但这不是回答问题。我知道 Qt,我只是想问是否有人可以指出我这样做的方法,是的,我正在查看 Qt 的源代码。

标签: opengl user-interface x11


【解决方案1】:

我实际上在这里找到了一个有用的答案:

Create GLX context in specific region of a window

这个想法是从当前窗口生成一个子窗口并将 GL 内容绘制到它。

【讨论】:

  • 这将是 GLX 世界的标准做事方式。
  • 谢谢。我正在查看 Qt 中的代码,当您不熟悉它时当然很难理解事物是如何工作的,但它似乎并没有调用 X 函数来绘制事物......这是否意味着它在 GL 中为 Widgets 绘制所有图形?
【解决方案2】:

我建议使用BindTexImage 扩展,将您的 X11(通过 core / xrender / 不管)命令绘制到屏幕外像素图,然后将其合成为纹理。

【讨论】:

  • 你可以用其他方式做同样的事情:将你所有的 GL 渲染到屏幕外像素图(你可以将 gl 上下文与任何可绘制对象关联,而不仅仅是窗口),然后使用 XCopyArea 或 XRenderComposite 复制你的 gl 场景到一个窗口
  • 很高兴您知道一些我可以用作示例的代码。不用担心,否则我会弄清楚,但它会加快这个过程。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-01-22
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多