2013-05-08 179 views
1

我正在使用Direct3D 9繪製線條。如何以另一種顏色在頂點緩衝區中繪製頂點

我現在使用的頂點格式爲D3DFVF_XYZ|D3DFVF_DIFFUSE,存儲在頂點緩衝區中。它們用DrawPrimitive作爲D3DPT_LINELIST來繪製。

如何更改整個繪製的頂點緩衝區或甚至特定頂點的繪製顏色,而不鎖定頂點緩衝區以修改其內容?這必須每幀完成。

這是可能的頂點緩衝區?我更喜歡沒有自定義着色器的解決方案(使用默認的direct3d 9管道)。

如果這是不可能的,那麼做什麼是明智的下一個最好的事情?我只能想到鎖定頂點緩衝區或使用DrawPrimitiveUP。這兩個表現都非常糟糕。


已更新,解決方案代碼:

m_pDevice->SetTextureStageState(0, D3DTSS_COLOROP, D3DTOP_SELECTARG1); 
m_pDevice->SetTextureStageState(0, D3DTSS_ALPHAOP, D3DTOP_SELECTARG1); 
m_pDevice->SetTextureStageState(0, D3DTSS_COLORARG1, D3DTA_CONSTANT); 
m_pDevice->SetTextureStageState(0, D3DTSS_ALPHAARG1, D3DTA_CONSTANT); 
m_pDevice->SetTextureStageState(0, D3DTSS_CONSTANT, D3DCOLOR_ARGB(120,0,255,0)); 

頂點不需要FVF_DIFFUSE了。

回答

1

使用固定功能流水線,您可以使用SetTextureStageStatedoc)指定恆定顏色,該顏色應與D3DTSS_CONSTANTdoc)一起使用。有了這個選項,你可以爲整個drawcall設置一個顏色。

相關問題