【问题标题】:DirectX — is there an analogue of DirectDraw surface Flip()?DirectX — 有 DirectDraw 表面 Flip() 的类似物吗?
【发布时间】:2012-03-28 18:09:11
【问题描述】:

我正在构建一个应用程序,该应用程序根据提供的两张图片(非 3D 模型)在 200 Hz 屏幕上绘制立体图(立体图像)。所以重绘的速度完整性非常重要。我使用 DirectDraw 表面及其 Flip() 获得了最好的结果(将当前表面的图像切换到辅助图像):

(void) lpddsPrimary->Flip(nullptr, DDFLIP_WAIT);

但是 DirectDraw 已经过时了,我正在寻找一种基于现代 DirectX 库重新实现此功能的方法。但是我真的不想创建一个四边形,绘制图片作为它的纹理,计算 3D 投影矩阵只是为了输出 2D 图像。

对于如何使用 DirectX 完成此操作的任何 sn-p,我将非常感激。提前致谢。

【问题讨论】:

  • 我不明白为什么 directdraw 已经过时了。为此我自己使用direct3d只是为了它提供的功能,但原理几乎相同......

标签: c++ directx directdraw


【解决方案1】:

出于您的目的,您可以使用 DXGI 并完全避免 D3D。您没有说明如何将数据放入后台缓冲区,但 DXGI 允许您创建交换链、翻转它(Present)并访问表面(例如锁定它们 - 现在称为 Map)。对于 3D,您需要“1”版本,例如DXGISwapChain1。见http://msdn.microsoft.com/en-us/library/windows/desktop/bb205075(v=vs.85).aspx

请注意,DXGISwapChain1 是 DXGISwapChain 的子类,GetBuffer 等一些重要的方法在基接口中。

【讨论】:

  • 谢谢!但是兼容性呢?程序需要在WinXP终端机上运行。
  • 那你就不能使用现代 DirectX 库了。
猜你喜欢
  • 2012-02-10
  • 1970-01-01
  • 2013-09-03
  • 2016-05-10
  • 2012-08-02
  • 2011-06-23
  • 1970-01-01
  • 2011-08-28
  • 1970-01-01
相关资源
最近更新 更多