首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >支持第三方应用程序的OpenGL屏幕捕获

支持第三方应用程序的OpenGL屏幕捕获
EN

Stack Overflow用户
提问于 2021-07-22 14:18:33
回答 1查看 29关注 0票数 0

我正在尝试为我正在创建的OpenGL游戏录制一段游戏视频。我能够捕获3D场景图形(渲染到自定义帧缓冲区),但无法捕获GUI图形(渲染到默认后台缓冲区)。

无论游戏是全屏运行还是窗口运行,OBS、Bandicam和FRAPS (都在Windows上)的行为都是一样的。切换覆盖捕捉不会更改行为。

是什么导致了这种情况?

EN

回答 1

Stack Overflow用户

发布于 2021-07-22 14:18:33

OpenGL应用程序支持屏幕捕获的标准要求是在交换缓冲区之前确保读取帧缓冲区指向后台缓冲区。其代码为:

代码语言:javascript
复制
glBindFramebuffer(GL_READ_FRAMEBUFFER, 0);

屏幕捕获软件使用活动帧缓冲区进行读取,理想情况下,软件不应更改帧缓冲区状态,而是假定目标应用程序在交换缓冲区时已将读取帧缓冲区设置为所需的捕获缓冲区。

如果交换时未将读取帧缓冲区设置为后台缓冲区,则将捕获中间图像,而不是最终图像。

此要求特定于屏幕捕获和覆盖注入,但不是正常渲染的其他要求,因为帧缓冲区状态不会影响缓冲区交换,并且渲染管道可能永远不需要从后台缓冲区读取。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68480028

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档