首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >OpenGL挂钩--渲染到任意大小的FBO

OpenGL挂钩--渲染到任意大小的FBO
EN

Stack Overflow用户
提问于 2017-12-23 15:28:40
回答 1查看 253关注 0票数 1

因此,我正在尝试使OpenGL应用程序以比正常情况下更高的分辨率呈现。我已经创建了一个共享库,它挂接了大多数相关的GLX/OpenGL函数。以下是我目前的方法(在高级别):

代码语言:javascript
运行
复制
When my hooked SwapBuffers() is called
    Unbind my FBO
    Call the (original/unhooked) SwapBuffers()
    Bind my FBO
    Set the viewport to (0, 0, HIGH_RES_X, HIGH_RES_Y)
    Set the scissor region to (0, 0, HIGH_RES_X, HIGH_RES_Y)
    return

这种方法似乎不适用于(大多数)应用程序。我怀疑这是因为一些应用程序通过将glFragCoord.xy除以表示其屏幕分辨率的一致性(从屏幕空间转换为纹理坐标)来执行纹理查找(用于屏幕空间操作)。

如果不能调整输出的大小,我想知道是否可以在不使用glReadPixels的情况下获得绘制到默认帧缓冲区(即颜色和深度缓冲区)上的内容。理想情况下,会有一种方法以纹理的形式访问这些数据(所以它已经在GPU上了)。我听说过有关Pixel Buffer对象的事情--使用其中一个对象会防止管道停滞吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-01-04 06:02:56

我提出的技术实际上适用于少数应用程序,但大多数情况下它就是不起作用。

如果您只想提取颜色/深度缓冲区,则可以使用带有glReadPixels的PBO池或使用glBlitFramebuffer。如果需要考虑延迟,则不能选择前者;后者工作得相当好(请参阅reshade项目中的example )

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

https://stackoverflow.com/questions/47950666

复制
相关文章

相似问题

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