2009-02-11 174 views

回答

3

是的,可以共享在此描述D3D9Ex以及使用該技術D3D10設備之間的資源:

Feature Summary (Direct3D 9 for Windows Vista) - Sharing Resources

注意,要共享表面GPU訪問不同步 - 例如,如果渲染到同一渲染表面上的兩個同時期待各種各樣的腐敗和種族。

要解決該問題,請確保一個設備在其他人使用之前完成了對共享表面的渲染。一個選項是事件查詢(IDirect3DQuery9),另一個是對StretchRect做一個小表面並鎖定它(如果鎖定成功,GPU完成所有以前的工作)

-1

有人糾正我,如果我錯了,但是,沒有和沒有。

你打算什麼?在兩個設備上有靜態紋理?如果是這樣,通過將兩個相同的紋理加載到兩個不同的默認池中很容易實現。請注意,修改其中一個不一定會修改另一個。

如果您試圖在兩臺設備上共享託管紋理,我認爲這不能通過任何控制實現。 SLI可能會在現場進行,但您無法控制它。

如果您要明確使用從另一臺設備上的一臺設備生成的紋理,則必須從源設備下載並在每幀上載到目標設備。這將是緩慢的,但如果絕對必要的話可以這樣做。

0

您可以在設備或進程之間共享Direct3D9資源。

Feature Summary (Direct3D 9 for Windows Vista) - Sharing Resources

類似的技術適用於Direct3D10資源(還指定共享句柄)。

這個GameDev.net topic詳細討論了D3D9Ex和D3D10之間的共享。該主題的結論似乎是,儘管基於文件,它應該是可能的(有一些限制),但實際上它根本不起作用(或許這些限制是嚴重的,它們阻止了任何實際使用情況?)