2010-09-02 51 views
-1

如何在DX 9中僅混合紋理的某些部分?如何在DX 9中僅混合紋理的某些部分?

例如,在Photoshop(或支持層的任何其它照片編輯程序)層。
可以繪製在一個層(背景充滿了阿爾法)的東西,那麼發生在原始圖像層(在屏幕上繪製紋理),這導致了原始圖像+只有我在層提請東西。

是的,我知道我的英語不是很「閃亮」。

非常感謝你,提前!

P.S.我的紋理背景充滿了阿爾法。

回答

0

所以,你必須設置上要覆蓋這種紋理的alpha 0是透明的(即表示什麼下方),然後1是不透明的(即顯示了覆蓋紋理)?

如果是這樣,那麼你只需要設置一個簡單的混合模式:

pDevice->SetRenderState(D3DRS_SRCBLEND, D3DBLEND_SRCALPHA); 
pDevice->SetRenderState(D3DRS_DESTBLEND, D3DBLEND_INVSRCALPHA); 
pDevice->SetRenderState(D3DRS_ALPHABLENDENABLE, TRUE); 

,請務必先繪製背景!另請注意,介於0和1之間的值表示背景與疊加紋理之間的線性插值。

+0

我啓用了alphablending,並做了其他所有你說的,但似乎每當我設置這些渲染狀態: pDevice-> SetRenderState(D3DRS_SRCBLEND,D3DBLEND_SRCALPHA); pDevice-> SetRenderState(D3DRS_SRCBLEND,D3DBLEND_INVSRCALPHA); 紋理顯示爲全黑。 哦,順便說一句,我的遊戲是2D的,我一直想知道整個一天,我使用的FVF中的RHW與我遇到的問題有什麼關係。 非常感謝,提前! 哦,我希望我沒有濫用評論。 – C4theWin 2010-09-03 12:44:40

+0

背景是什麼顏色?什麼是頂點顏色設置? – Goz 2010-09-03 13:09:34

+0

背景色是D3DCOLOR_XRGB(150,200,255)。頂點顏色都是D3DCOLOR_ARGB(255,255,255,255),儘管我也嘗試了其他一些顏色。 – C4theWin 2010-09-04 08:59:15