沒有人知道一個簡單的方法將一個恆定延遲(約30毫秒)添加到XNA 4應用程序的圖形輸出嗎?在XNA 4的圖形輸出中增加恆定延遲
我想保持我的圖形輸出與實時緩衝的音頻流保持同步,這種音頻流本質上具有恆定的延遲。
感謝您對此的任何想法!
最大
沒有人知道一個簡單的方法將一個恆定延遲(約30毫秒)添加到XNA 4應用程序的圖形輸出嗎?在XNA 4的圖形輸出中增加恆定延遲
我想保持我的圖形輸出與實時緩衝的音頻流保持同步,這種音頻流本質上具有恆定的延遲。
感謝您對此的任何想法!
最大
如果你真的需要耽誤您的顯卡,那麼你可以做的是使你的遊戲騎車一系列渲染目標。因此,在的框架上,您將顯示在n-2處呈現的框架。這隻適用於較小的延遲,並且需要大量額外的圖形內存和少量額外的GPU時間。
甲好得多方法是不耽誤圖形輸出在所有,但延遲正被用於生成圖形輸出音頻。通過緩衝它或者在音頻緩衝區中有兩個讀取位置。讀取「遊戲」前的「音頻」讀取爲X毫秒(延遲)。
所以,如果您的計算機的音頻硬件具有潛伏期(並不少見)的100ms的和圖形硬件有16ms的潛伏期:當你在100毫秒餵養樣品放入音響系統,你是將16ms的音頻樣本送入您的圖形計算。與此同時,來自0ms的音頻正在擊打揚聲器,並且匹配的圖形正在擊中屏幕。
顯然,如果生成圖形輸出的東西也在生成音頻,這將不起作用。但是這兩種方法的總體原則是,你必須在輸入圖形鏈的某處緩衝輸入,以便引入與音頻體驗相對應的延遲。在那條鏈上最容易插入緩衝區取決於你。
對於< 100ms的延遲,我不會爲大多數遊戲擔心。你只關心音頻節目和節奏遊戲的這種延遲。
我可能不明白這個問題,但是不能跟蹤更新被調用的次數和mod 2嗎? 60fps mod 2是30 ...
您能否給我們一些關於您正在談論的延遲的想法? (即:多少毫秒?) – 2011-04-26 08:41:10
延遲時間大約爲30毫秒 – Max 2011-04-26 08:57:17
這看起來好像沒有多少延遲可以彌補。這是30FPS的1幀,60FPS的2幀。 – 2011-04-26 12:19:25