从另一个应用程序获取一个应用程序的 OpenGL 输出
我想知道是否可以在 C/C++ 中启动应用程序并获取其标准视频输出?
这样做的目标是获取应用程序的缓冲区,并将其用作具有特殊纹理坐标的顶点网格的纹理(以便将其投影到 FullDome 中)?
我是在Linux下开发的。
I would like to know if it's possible, in C/C++, to launch an application and grab its standard video output?
The goal of this would be to grab the buffer of an application, and use it as a texture for a grid of vertex with special texture coordinate (in order to project it in a FullDome)?
I'm developing under Linux.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
理论上是有可能的。其他应用程序是否使用 OpenGL?或者只是任何 X11 应用程序?
如果只是一个 X11 应用程序,您需要执行合成管理器所做的操作,即使用 COMPOSITE X 扩展来获取窗口内容,然后处理它们。
如果只是一个 OpenGL 应用程序,并且您可以对其进行修改,则可以使用 FBO 将所有内容绘制到纹理,并使用共享内存 (SHM) 与其他应用程序共享纹理数据。
Theoretically, it's possible. Is the other application using OpenGL? Or is just any X11 application?
If is just an X11 app, you need to do what a compositing manager does, which is use the COMPOSITE X extension to get window contents, and then process them.
If is just a OpenGL app, and you can modify it, you can use a FBO to draw everything to a texture, and use shared memory (SHM) to share the texture data with the other application.