我使用Blendshape代碼中的數據鎖定並填充Direct3d9中每一幀的頂點緩衝區。我的着色使用兩個步驟,所以我使用一個着色器渲染一次,然後使用其他着色器繪製疊加混合。Z-fighting Direct3D9,只有動態緩衝區
由於我之外的原因,我的頂點緩衝區中的數據(顯然)在這兩個繪圖調用之間略微不同,因爲我有閃爍的z戰鬥,第二遍有時會在第一遍後面渲染。
這一切都是在一個線程中完成的,並且緩衝解鎖渲染調用之前很長一段時間。此外,不會更改任何着色器指令,因此數據應該是,這兩個調用中的完全相同。如果混合形狀不發生變化,則不會發生z戰鬥。
現在我「推」的深度在我的渲染一點,但是這是一個非常不雅的解決方案。
這個數據爲什麼可以改變?爲什麼DirectX可以在解鎖後更改緩衝區中的數據?我可以強迫它不要改變它嗎?