OBS如何在Windows上捕获基于OpenGL的游戏视频?

时间:2017-03-11 20:10:17

标签: windows opengl streaming broadcast

我正在尝试在Windows上捕获基于OpenGL的游戏的屏幕截图。互联网上的大多数答案都是让窗口可见并截取屏幕截图。但是当我使用OBS(Open Broadcaster Software)来播放我的游戏时,即使游戏窗口被最小化,也能够流式传输游戏内容。

任何人都可以帮助我了解他们是如何做到的吗?

谢谢!

1 个答案:

答案 0 :(得分:1)

OpenGL API提供了一种绘制内部"帧缓冲区对象的方法。 (FBO)可以对窗户进行装配。如果OBS没有提供访问该FBO的方法,那么您唯一的解决方案是使窗口可见。好吧,你也可以破解广播并试图找出那些字节...

编辑:

当OP澄清他的问题时,我很好奇。所以我挖到了OBS代码,发现对于Windows,它使用.dll注入和进程挂钩。

我还发现它挂钩"交换缓冲区"并使用glGetIntegerv(GL_DRAW_FRAMEBUFFER_BINDING ...)获取当前帧缓冲区,复制它,然后让Windows继续工作。

请注意我错了。但我发现的对我来说很好看。