Graphics DirectX-BackBuffer概念

Graphics DirectX-BackBuffer概念,graphics,directx,gdi,Graphics,Directx,Gdi,我是DirectX新手,在花了一些时间阅读文档之后,我知道有两个视频缓冲区,FrontBuffer和BackBuffer。我正在执行POC以验证最快的屏幕捕获方法,根据一些来源,BackBuffer可能会执行此操作。(FrontBuffer访问对我来说太慢) 但不幸的是,互联网上没有那么多好的文章详细解释这一理论。我有一些问题,如果得到回答,也可能对其他人有所帮助 后台缓冲区仅仅是应用程序可以写入的表面吗 后台缓冲区是否特定于应用程序?i、 e.每个DX应用程序是否有单独的后台缓冲区 如果我运行

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

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

  • 后台缓冲区仅仅是应用程序可以写入的表面吗
  • 后台缓冲区是否特定于应用程序?i、 e.每个DX应用程序是否有单独的后台缓冲区
  • 如果我运行的某个应用程序使用DirectX在屏幕上显示一些数据,我可以捕获它的后缓冲区吗?(根据FRAPS分析,DLL可以连接到应用程序来实现这一点。但有什么指导原则吗?)
  • 对。根据使用的DirectX版本,后缓冲区是创建为渲染目标的曲面或纹理
  • 对。每个应用程序都有自己的前后缓冲区。应用程序甚至不限于使用一个后台缓冲区。相反,它可以使用三个或更多缓冲区,或者根本不使用后台缓冲区
  • 嗯,我不是挂接DirectX应用程序的专家,但这应该是可能的。基本上,您将使用在呈现缓冲区之前捕获缓冲区的方法替换
    Present
    方法。有关更多信息,请参阅
  • 请注意(第2页),使用3个以上的缓冲区是不必要的,但可能很有用:如果使用第三个缓冲区完成,则可以将其设置为下一个要绘制的缓冲区,并重新开始第二个缓冲区的工作(假设您仍在等待第一个缓冲区完成绘制)。但是,如果您需要回滚几帧,或者出于某种原因,可以提前准备好结果(即,某些内容与帧速率成线性关系,或者您在某些时间点之间来回移动),您可以将它们准备好,因为它们可以预算。否则它只会占用内存空间。