【问题标题】:DirectX - BackBuffer conceptDirectX - BackBuffer 概念
【发布时间】:2012-10-21 20:11:13
【问题描述】:

我是 DirectX 的新手,花了一些时间阅读文档后,我才知道有两个视频缓冲区,即 FrontBuffer 和 BackBuffer。根据一些消息来源,我正在执行 POC 以验证最快的屏幕捕获方法和 BackBuffer 可能会做到这一点。 (FrontBuffer 访问对我来说太慢了)

但不幸的是,互联网上并没有那么多详细解释该理论的好文章。如果得到解答,我有一些问题也可能对其他人有所帮助。

  1. 后台缓冲区只是应用程序可以写入的表面吗?
  2. 后台缓冲区应用程序是特定的吗?即为每个 DX 应用程序单独的后台缓冲区?
  3. 如果我正在运行一些应用程序,它使用 DirectX 在屏幕上显示一些数据,我可以捕获它的后台缓冲区吗? (根据 FRAPS 分析,可以将 DLL 连接到应用程序来执行此操作。但是有什么指南吗?)

【问题讨论】:

    标签: graphics directx gdi


    【解决方案1】:
    1. 是的。根据您使用的 DirectX 版本,后台缓冲区是作为渲染目标创建的表面或纹理。
    2. 是的。每个应用程序都有自己的后端和前端缓冲区。应用程序甚至不限于使用一个后台缓冲区。相反,它可以使用三个或更多缓冲区,或者根本不使用后台缓冲区。
    3. 好吧,我不是挂钩 DirectX 应用程序的专家,但这应该是可能的。基本上,您可以将Present 方法替换为在呈现之前捕获缓冲区的方法。有关其他信息,请参阅 here

    【讨论】:

    • 注意(关于 2.)使用 3 个以上的缓冲区是不必要的,但可能很有用:如果您完成了第三个缓冲区,您可以将其设置为下一个要绘制的缓冲区并重新开始工作第二个(假设您仍在等待第一个完成绘图)。但是,如果您需要回滚几帧,或者由于某种原因可以提前准备好结果(即随着帧速率线性进展,或者您在某些时间点之间来回走动),您可以让它们准备好,因为它们可以预先计算。否则它只会占用内存中的空间。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-07-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多