2

我有一个使用 DirectDraw2 的传统游戏,它将其绘制到两个缓冲区中,一个正面和背面,正面是主要表面(屏幕上),背面是屏幕外缓冲区。现在在主循环中,它很好地锁定了前端缓冲区,将其绘制到前后,然后再次解锁。然而,在同一个游戏中,主菜单代码只是让前端缓冲区一直锁定。

根据这两个看似矛盾的观察结果,我有几个关于 Lock 和 Unlock 的问题,MSDN 和 Google 都没有回答。

  • 前端缓冲区被锁定时,视频卡可以显示到显示器上吗?
  • 如果可以,再次解锁有什么好处吗?假设我们不打算执行任何硬件 blit。
  • 如果在 vsync 更新期间锁定会发生什么?它会等待,还是您只是可以访问缓冲区?
  • 就监视器的更新次数而言,是什么决定了“帧率”。是每次调用 Unlock 时,还是仅遵循屏幕刷新率,与我们的锁定/解锁无关。在那种情况下,我们会流泪吗?

我认为它会像 Direct3D 一样工作,您可以在其中锁定顶点缓冲区,但需要先解锁它,然后 GPU 才能对其进行处理。

4

0 回答 0