D3DFVF_XYZRHW 如何旋转?
我用d3d纹理贴图 定点格式 FVF = D3DFVF_XYZRHW | D3DFVF_TEX1
使用了RHW,现在用矩阵做旋转没效果了,它根本就不受矩阵影响!!
现在我想旋转这张纹理,怎么才能办到呢??
[解决办法]
D3DFVF_XYZRHW是一种已经做过透视投影变换的顶点格式,所以再给它乘上变化矩阵就不会有效果了。
楼主可以使用D3DFVF_XYZ试试。
[解决办法]
用ID3DXSprite!
[解决办法]
2D游戏做旋转,也很常用,但更多的应该是用ddraw来做比较好。
这个是我用ID3DXSprite的旋转实现:
// 渲染图像,同时旋转angle度void WuYuan::CD3DTexture::RenderEx(int x, int y, double angle, DWORD color/*=0xFFFFFFFF*/){ if (m_pD3DSystem == NULL) return; if (!(m_State & _STATE_VISIBLE)) return; if (m_pSprite == NULL) return; if ((color>>24) == 0) return; m_pSprite->Begin(D3DXSPRITE_ALPHABLEND); // 旋转,平移 { float dstX = x + m_OriginalWidth/2.0f; float dstY = y + m_OriginalHeight/2.0f; D3DXMATRIX matrixResult; D3DXMATRIX matrixXY; D3DXMATRIX matrixZ; D3DXMatrixRotationZ(&matrixZ, float(angle*(3.1415926/180.0))); D3DXMatrixTranslation(&matrixXY, dstX, dstY, 0); D3DXMatrixMultiply(&matrixResult, &matrixZ, &matrixXY); m_pSprite->SetTransform(&matrixResult); } m_pSprite->Draw(m_pTexture, NULL, &D3DXVECTOR3(x+m_OriginalWidth/2.0f, y+m_OriginalHeight/2.0f, 0), &D3DXVECTOR3(float(x), float(y), 0), color); m_pSprite->End();}