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
了。