私はDirectXを初めて使用しており、D3DPT_TRIANGLESTRIP
を使用して1つのシーンに2つの四角形を描画しようとしています。 1つの長方形は問題ありませんが、2つの長方形はまったく異なるボールゲームです。はい、D3DPT_TRIANGLELIST
プリミティブタイプで描画された4つの三角形を使用して描画できます。私の好奇心は、テクニックに関わっており、D3DPT_TRIANGLESTRIP
を使っています。私は次のようにD3DPT_TRIANGLESTRIP
を使用することで1長方形のために使用していたコードの パーツ:D3DPT_TRIANGLESTRIPプリミティブタイプを使用してDirectXで2つの切り離された四角形を描画する方法
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矩形かそのようなものを描く必要がある状況を考えて行く最善の方法ではないと感じます。事は、私には他のアイデアはありません。だから私の質問は、D3DPT_TRIANGLESTRIP
で2つの四角形を描画する最も効率的な方法は何ですか?現在の矩形を複製して変換する方法もありますか?
これは私が実際に探していたものです。その与えられた私に大きな洞察力。 1つのことは、CreateVertexBuffer関数で8つの頂点を持つので、4から8に変更することを忘れないでください。 –