讓我指定一點背景。DirectDraw比Direct3d更適合流式傳輸嗎?
我目前使用開源程序來運行我的電視調諧器(DScaler)。該軟件的最終版本對Direct3D輸出有一些支持,但問題在於它滯後。我一直在瀏覽代碼並通過DirectX文檔閱讀,試圖找到一個地方來優化代碼,以便渲染與DirectX一樣平滑。由於軟件內置了針對關鍵顯示例程(鎖定緩衝區,解鎖,翻轉等)的分析,因此我知道使用Direct3D時,出現問題的點位於疊加翻轉部分。我得出的結論是,向D3Device演示速度太慢,無法跟上電視調諧器的捕捉速度,結果我失去了幀數,並且沒有以29fps的速度顯示它們。
因爲我不太瞭解DirectX,所以我的問題是:Direct3d不是顯示視頻捕捉的最佳選擇,還是問題只是代碼可能不是最好的?我問,因爲我仍然有興趣試圖找到一種方法使其工作,所以我可以顯示我的捕獲在一些流(即:Xfire)。
謝謝。
我想發佈,我解決滯後問題的排序。該程序最初使用D3DPRESENT_INTERVAL_ONE作爲其PresentInterval。有些線程建議在某些情況下,Present()會在等待VSYNC的同時長時間阻塞CPU,而人們建議嘗試使用INTERVAL_IMMEDIATE。這固定了我的滯後問題。所以我認爲Present()阻塞並導致捕獲緩衝區備份和丟棄幀。我仍然想知道是否解耦渲染線程將解決問題,並重新允許等待VSYNC。 – Vix 2010-10-24 01:58:35