我正在使用directx。我在窗口上顯示兩個對象。它們相互交叉。我找到了相交的物體。想使物體透明
我的問題是-
我想要兩個原始物體是透明的,並且產生的相交部分是不透明的,這樣可以清楚地看到相交的部分。
我發現一些與透明度有關的問題,但它們與窗口的透明度有關。但我希望對象是透明的。
我正在使用directx。我在窗口上顯示兩個對象。它們相互交叉。我找到了相交的物體。想使物體透明
我的問題是-
我想要兩個原始物體是透明的,並且產生的相交部分是不透明的,這樣可以清楚地看到相交的部分。
我發現一些與透明度有關的問題,但它們與窗口的透明度有關。但我希望對象是透明的。
您可以通過這樣做使alpha混合:
pDevice->SetRenderState(D3DRS_ALPHABLENDENABL, TRUE);
設置爲false,最後一個參數來禁用它。
現在有多種不同類型的混合可供您使用。最簡單的是添加劑阿爾法混合設置如下:
pDevice->SetRenderState(D3DRS_SRCBLEND, D3DBLEND_ONE);
pDevice->SetRenderState(D3DRS_DESTBLEND, D3DBLEND_ONE);
其他形式可能需要排序正確顯示多晶硅。
其還值得注意的是,如果你想看到模型的背部,以及你需要剔除模式設置爲none:
pDevice->SetRenderState(D3DRS_CULLMODE, D3DCULL_NONE);
據我所知,DirectX不會爲您計算兩個對象之間的確切相交體積,因此不會執行任何體積代數。
你可以做的是假的:尋找陰影投射的解決方案。基本上假定攝像機位置是光源。假設您已確定對象A與對象B相交,則確定哪個對象更接近相機。使用您選擇的陰影投射方法,確定更多距離物體上的哪個網格面將成爲更近物體的陰影。一旦確定了陰影中的網格面,將它們饋送到渲染管線中,但通常會點亮。
你誤會我的問題。我已經有三個對象。我只想知道如何使兩個對象透明和第三個不透明。 – Himadri 2010-05-08 09:56:47
@Himadri:對不起,我誤解了你的問題。原來的問題似乎要求讓兩個對象的交點可見。我看到你已經更新了這個問題,以表明你已經有了這個交點作爲第三個對象。 – Ants 2010-05-08 19:33:43