我正在尝试为我正在创建的OpenGL游戏录制一段游戏视频。我能够捕获3D场景图形(渲染到自定义帧缓冲区),但无法捕获GUI图形(渲染到默认后台缓冲区)。
无论游戏是全屏运行还是窗口运行,OBS、Bandicam和FRAPS (都在Windows上)的行为都是一样的。切换覆盖捕捉不会更改行为。
是什么导致了这种情况?
发布于 2021-07-22 14:18:33
OpenGL应用程序支持屏幕捕获的标准要求是在交换缓冲区之前确保读取帧缓冲区指向后台缓冲区。其代码为:
glBindFramebuffer(GL_READ_FRAMEBUFFER, 0);屏幕捕获软件使用活动帧缓冲区进行读取,理想情况下,软件不应更改帧缓冲区状态,而是假定目标应用程序在交换缓冲区时已将读取帧缓冲区设置为所需的捕获缓冲区。
如果交换时未将读取帧缓冲区设置为后台缓冲区,则将捕获中间图像,而不是最终图像。
此要求特定于屏幕捕获和覆盖注入,但不是正常渲染的其他要求,因为帧缓冲区状态不会影响缓冲区交换,并且渲染管道可能永远不需要从后台缓冲区读取。
https://stackoverflow.com/questions/68480028
复制相似问题