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