0

実行時に自分のテクスチャ (スプライト シートを含む) でテクスチャを交換したいと思います。ただし、ラスタライザーとは何かを理解するのに問題があり、どの種類のマトリックスを渡すべきかわかりません。

class CUSTOMVERTEXBEN
{
public:
    FLOAT x, y, z, rhw; // The transformed position for the vertex
    DWORD color;        // The vertex color
`enter code here`FLOAT tu, tv;
};

#define D3DFVF_CUSTOMVERTEX (D3DFVF_XYZRHW|D3DFVF_DIFFUSE|D3DFVF_TEX1)
D3DXMATRIX m_mtxTexture;
D3DXMatrixIdentity(&m_mtxTexture);

m_mtxTexture._41= 1.0f;
m_mtxTexture._42= 1.0f;


g_pd3dDevice->SetStreamSource( 0, g_pVB, 0, sizeof( CUSTOMVERTEX ) );
g_pd3dDevice->SetFVF( D3DFVF_CUSTOMVERTEX );
g_pd3dDevice->SetIndices(g_pIB);

m_mtxTexture._11= 0.f;
m_mtxTexture._12= 0.f;
//m_mtxTexture._33= 1.f;
g_pd3dDevice->SetTexture(0, g_pTexture );  
g_pd3dDevice->SetTextureStageState(0, D3DTSS_TEXTURETRANSFORMFLAGS, D3DTTFF_COUNT2);
g_pd3dDevice->SetTransform(D3DTS_TEXTURE0, &m_mtxTexture);

g_pd3dDevice->DrawIndexedPrimitive( D3DPT_TRIANGLELIST, 0, 0, 4, 0, 2);
4

1 に答える 1

0

スプライト シートを使用している場合は、UV 座標をあるスプライトから別のスプライトに変換する必要があります。これは、UV 変換で行うことができます。現在設定しているテクスチャ (通常はテクスチャ インデックス 0) の変換を設定できます。詳しくはこちらをご覧ください。

于 2013-05-15T17:04:17.820 に答える