【问题标题】:DirectDraw better than Direct3d for streaming?DirectDraw 比 Direct3d 更适合流式传输?
【发布时间】:2010-10-23 17:11:59
【问题描述】:

让我指定一点背景。

我目前使用开源程序来运行我的电视调谐器 (DScaler)。该软件的最终版本对 Direct3D 输出有一些支持,但问题是它滞后。我一直在阅读代码并阅读 DirectX 文档,试图找到一个优化代码的地方,以便 DirectX 的渲染与 DirectDraw 上一样流畅。因为该软件为关键的显示例程(锁定缓冲区、解锁、翻转等)内置了分析功能。我知道在使用 Direct3D 时遇到问题的地方是覆盖翻转部分。我得出的结论是,向 D3Device 演示太慢了,无法跟上电视调谐器的捕获速度,因此我会丢失帧并且无法以 29fps 显示它们。

由于我不太了解 DirectX,我的问题是:Direct3d 是否不是显示视频捕获的最佳选择,或者问题仅仅是代码可能不是最好的?我问是因为我仍然有兴趣尝试找到一种使其工作的方法,以便我可以在某些流上显示我的捕获(即:Xfire)。

谢谢。

【问题讨论】:

  • 我想发布我修复了滞后问题的帖子。该程序最初使用 D3DPRESENT_INTERVAL_ONE 作为其 PresentInterval。一些线程建议在某些情况下 Present() 可以在等待 VSYNC 时长时间阻塞 CPU,人们建议尝试 INTERVAL_IMMEDIATE 代替。这解决了我的滞后问题。所以我认为 Present() 被阻塞并导致捕获缓冲区备份和丢帧。我仍然想知道解耦渲染线程是否可以解决问题并重新允许等待 VSYNC。

标签: video streaming direct3d capture directdraw


【解决方案1】:

我个人不会使用 DirectDraw,因为它已被弃用,这意味着它已计划删除并且不再维护。

这是关于它的维基百科文章:http://en.wikipedia.org/wiki/DirectDraw

【讨论】:

  • 我明白了。就目前而言,在这种特定类型的设置中,使用 DirectDraw 表面似乎比 Direct3D 更快。除非他们从库中删除它,否则我认为这不是问题,因为该软件的开发已经停止。感谢您的意见。
  • 嗯,这几乎就是弃用的定义——这意味着它将从库中删除=/
【解决方案2】:

有大量的老游戏在流媒体线上成群结队地回归。因此,目前对 Microsoft 而言,弃用似乎不是一个好主意。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-01-14
    • 2015-08-26
    • 1970-01-01
    • 2017-07-02
    • 1970-01-01
    • 1970-01-01
    • 2014-02-26
    相关资源
    最近更新 更多