Original Post
Hello Well I have a liitle problem with DX9 in dx8 i do this stuff to animate a texture: in dx9 I tried this but this doesn't work: what is the problem? and BlitRect procedure is: Thanx in advance,
static float offset = 0.0f;
offset+=0.0001f;
if(offset >1.0f) offset = 0.0f;
D3DXMATRIX mat;
D3DXMatrixIdentity(&mat);
m_pd3dDevice->SetTextureStageState(0, D3DTSS_TEXTURETRANSFORMFLAGS, D3DTTFF_COUNT2);
m_pd3dDevice->SetTextureStageState(0, D3DTSS_ADDRESSU, D3DTADDRESS_WRAP);
m_pd3dDevice->SetTextureStageState(0, D3DTSS_ADDRESSV, D3DTADDRESS_WRAP);
mat._31=offset;
mat._32=offset;
m_pd3dDevice->SetTransform( D3DTS_TEXTURE0, &mat );
BlitRect(m_pd3dDevice,mytexture , 0x2fffffff);
static float offset = 0.0f;
offset+=0.0001f;
if(offset >1.0f) offset = 0.0f;
D3DXMATRIX mat;
D3DXMatrixIdentity(&mat);
g_pd3dDevice->SetTextureStageState(0, D3DTSS_TEXTURETRANSFORMFLAGS, D3DTTFF_COUNT2);
//g_pd3dDevice->SetTextureStageState(0, D3DTSS_ADDRESSU, D3DTADDRESS_WRAP);
//g_pd3dDevice->SetTextureStageState(0, D3DTSS_ADDRESSV, D3DTADDRESS_WRAP);
g_pd3dDevice->SetRenderState(D3DRS_WRAP1, D3DWRAPCOORD_0);
g_pd3dDevice->SetRenderState(D3DRS_WRAP1, D3DWRAPCOORD_1);
mat._31=offset;
mat._32=offset;
g_pd3dDevice->SetTransform( D3DTS_TEXTURE0, &mat );
BlitRect(g_pd3dDevice,mytexture, 0x2fffffff);
typedef struct _D3DTLVERTEX {
float sx; /* Screen coordinates */
float sy;
float sz;
D3DCOLOR color; /* Vertex color */
float tu; /* Texture coordinates */
float tv;
_D3DTLVERTEX() { }
_D3DTLVERTEX(const D3DVECTOR& v,
D3DCOLOR _color,
float _tu, float _tv)
{ sx = v.x; sy = v.y; sz = v.z;
color = _color;
tu = _tu; tv = _tv;
}
} D3DTLVERTEX, *LPD3DTLVERTEX;
#define D3DFVF_TLVERTEX D3DFVF_XYZ|D3DFVF_DIFFUSE|D3DFVF_TEX1
void BlitRect(LPDIRECT3DDEVICE9 lpDevice,
LPDIRECT3DTEXTURE9 lpSrc,
D3DCOLOR col)
{
float z = 1.0f;
// set up rectangle
D3DTLVERTEX verts[4];
verts[0]=D3DTLVERTEX(D3DXVECTOR3(0,0, z),col,0.0f,0.0f);
verts[2]=D3DTLVERTEX(D3DXVECTOR3(800,600, z),col,1.0f,1.0f);
verts[1]=D3DTLVERTEX(D3DXVECTOR3(800,0, z),col,1.0f,0.0f);
verts[3]=D3DTLVERTEX(D3DXVECTOR3(0,600, z),col,0.0f,1.0f);
// set the texture
lpDevice->SetTexture(0,lpSrc);
// configure shader for vertex type
lpDevice->SetFVF(D3DFVF_TLVERTEX);
// draw the rectangle
lpDevice->DrawPrimitiveUP(D3DPT_TRIANGLEFAN,2,verts,sizeof(D3DTLVERTEX));
}