首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网络游戏 >

D3DFVF_XYZRHW 怎么旋转

2012-08-29 
D3DFVF_XYZRHW 如何旋转?我用d3d纹理贴图 定点格式 FVF D3DFVF_XYZRHW | D3DFVF_TEX1使用了RHW,现在用矩

D3DFVF_XYZRHW 如何旋转?
我用d3d纹理贴图 定点格式 FVF = D3DFVF_XYZRHW | D3DFVF_TEX1

使用了RHW,现在用矩阵做旋转没效果了,它根本就不受矩阵影响!!

现在我想旋转这张纹理,怎么才能办到呢??

[解决办法]
D3DFVF_XYZRHW是一种已经做过透视投影变换的顶点格式,所以再给它乘上变化矩阵就不会有效果了。
楼主可以使用D3DFVF_XYZ试试。
[解决办法]
用ID3DXSprite!
[解决办法]
2D游戏做旋转,也很常用,但更多的应该是用ddraw来做比较好。
这个是我用ID3DXSprite的旋转实现:

C/C++ code
// 渲染图像,同时旋转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();} 

热点排行