1

Direct3D 9 を使用して線を描画しています。

私が使用している頂点はフォーマットD3DFVF_XYZ|D3DFVF_DIFFUSEを持っており、頂点バッファに格納されています。それらは as で描画さDrawPrimitiveD3DPT_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ません。

4

1 に答える 1