D3DX9 Sprite比例按不同位置变化

时间:2020-02-29 13:43:00

标签: c++ matrix 3d transformation directx-9

我在世界上画了雪碧 但是如果我走出去,精灵的规模会增加,而走进去的话,规模会减少

我希望它在任何位置上都显示相同的比例尺,或者如果我靠近则增加 并在我走开时减少

图片[通过看木板可以看到不同的图片

步行时 https://cdn.discordapp.com/attachments/425643121234280452/683307103716245546/Screenshot_18.png

走进去 https://cdn.discordapp.com/attachments/425643121234280452/683307095843668010/Screenshot_17.png

代码

            WorldToScreen(pDevice, &SpritePos, &SPos, &matMat, &viewmat);
            if (SPos.z > 1.0f) return;

            pDevice->SetRenderState(D3DRS_ALPHABLENDENABLE, TRUE);
            pDevice->SetRenderState(D3DRS_SRCBLEND, D3DBLEND_SRCALPHA);
            pDevice->SetRenderState(D3DRS_DESTBLEND, D3DBLEND_INVSRCALPHA);
            pDevice->SetTextureStageState(0, D3DTSS_COLOROP, D3DTOP_SELECTARG1);
            pDevice->SetTextureStageState(0, D3DTSS_COLORARG1, D3DTA_TEXTURE);
            pDevice->SetTextureStageState(0, D3DTSS_COLORARG2, D3DTA_DIFFUSE);
            pDevice->SetFVF(D3DFVF_XYZRHW | D3DFVF_DIFFUSE | D3DFVF_TEX1);
            ARPGUIDATA.Texture.QuestSprite->Begin(NULL);
            D3DXMatrixTransformation2D(&ARPD3DDATA.SpriteTransMatrix, NULL, 0.0, &D3DXVECTOR2(1, 1), 0,0, &D3DXVECTOR2(SPos.x, SPos.y));

            ARPGUIDATA.Texture.QuestSprite->SetTransform(&ARPD3DDATA.SpriteTransMatrix);

            ARPGUIDATA.Texture.QuestSprite->Draw(ARPGUIDATA.Texture.QuestionMarkIcon, NULL, NULL, NULL, D3DCOLOR_ARGB(255, 255, 255, 255));
            ARPGUIDATA.Texture.QuestSprite->End();

0 个答案:

没有答案
相关问题