2010-10-23 23 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

但是也有一些回來成羣結隊的流線噸的老遊戲。因此,微軟目前似乎並不認爲這是一個好主意。