2010-10-23 20 views
0

让我指定一点背景。DirectDraw比Direct3d更适合流式传输吗?

我目前使用开源程序来运行我的电视调谐器(DScaler)。该软件的最终版本对Direct3D输出有一些支持,但问题在于它滞后。我一直在浏览代码并通过DirectX文档阅读,试图找到一个地方来优化代码,以便渲染与DirectX一样平滑。由于软件内置了针对关键显示例程(锁定缓冲区,解锁,翻转等)的分析,因此我知道使用Direct3D时,出现问题的点位于叠加翻转部分。我得出的结论是,向D3Device演示速度太慢,无法跟上电视调谐器的捕捉速度,结果我失去了帧数,并且没有以29fps的速度显示它们。

因为我不太了解DirectX,所以我的问题是:Direct3d不是显示视频捕捉的最佳选择,还是问题只是代码可能不是最好的?我问,因为我仍然有兴趣试图找到一种方法使其工作,所以我可以显示我的捕获在一些流(即:Xfire)。

谢谢。

+0

我想发布,我解决滞后问题的排序。该程序最初使用D3DPRESENT_INTERVAL_ONE作为其PresentInterval。有些线程建议在某些情况下,Present()会在等待VSYNC的同时长时间阻塞CPU,而人们建议尝试使用INTERVAL_IMMEDIATE。这固定了我的滞后问题。所以我认为Present()阻塞并导致捕获缓冲区备份和丢弃帧。我仍然想知道是否解耦渲染线程将解决问题,并重新允许等待VSYNC。 – Vix 2010-10-24 01:58:35

回答

0

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

这里是维基百科的文章就可以了:http://en.wikipedia.org/wiki/DirectDraw

+0

我明白了。就像现在这样,在这种特殊的设置中,使用DirectDraw表面似乎比Direct3D快。除非他们从图书馆中删除它,否则我不认为这是一个问题,因为这个软件的开发已经停止。感谢您的输入。 – Vix 2010-10-23 21:54:25

+0

那么,这几乎就是弃用的定义 - 这意味着它将从库中删除= / – 2010-10-23 21:56:32

-1

但是也有一些回来成群结队的流线吨的老游戏。因此,微软目前似乎并不认为这是一个好主意。