私はDirectXを初めて使用し、を使用して1つのシーンに2つの長方形を描画しようとしていD3DPT_TRIANGLESTRIPます。1つの長方形は問題ありませんが、2つの長方形はまったく異なる球技です。D3DPT_TRIANGLELISTはい、プリミティブ型で描画された4つの三角形を使用して描画できます。私の好奇心は、を使用することに関連する技術にありD3DPT_TRIANGLESTRIPます。私が使用している1つのRectangleに使用しているコードの一部は、D3DPT_TRIANGLESTRIP次のとおりです。
CUSTOMVERTEX recVertex[] = {
{ 10.0f, 10.0f, 0.10f, 1.0f, 0xffffffff, }, // x, y, z, rhw, color
{ 220.0f, 10.0f, 0.10f, 1.0f, 0xffffffff, },
{ 10.0f, 440.0f, 0.10f, 1.0f, 0xffffffff, },
{ 220.0f, 440.0f, 0.10f, 1.0f, 0xffffffff, },
};
if( FAILED( g_pd3dDevice->CreateVertexBuffer( 4 * sizeof( CUSTOMVERTEX ),
0, D3DFVF_CUSTOMVERTEX, D3DPOOL_DEFAULT, &g_pVB, NULL ) ) )
{
return E_FAIL;
}
より重要なコード...
VOID* precVertex;
if( FAILED( g_pVB->Lock( 0, sizeof( recVertex ), ( void** )&pGameField, 0 ) ) )
{
return E_FAIL;
}
memcpy( precVertex, recVertex, sizeof( recVertex ) );
次に、そのようにレンダリングします...
g_pd3dDevice->SetStreamSource( 0, g_pVB, 0, sizeof( CUSTOMVERTEX ) );
g_pd3dDevice->SetFVF( D3DFVF_CUSTOMVERTEX );
g_pd3dDevice->DrawPrimitive( D3DPT_TRIANGLESTRIP, 0, 2 );
このモデルに基づいて、コードを簡単に複製し、カスタム頂点のx値とy値を変更して、別の頂点バッファーを作成すると、機能します。
個人的には、特に100個の長方形などを描画する必要がある状況を考えると、これは最善の方法ではないと感じています。問題は、私には他のアイデアがないということです。だから私の質問は、2つの長方形を描くための最も効率的な方法は何D3DPT_TRIANGLESTRIPですか?また、現在の長方形を複製および変換する方法はありますか?