Direct3D的血条制作问题

刚好在做人物的血条公告板,发现一个诡异的地方,那就是,一开始血条一直在人物的上方,之后死亡了,换位置了就不在人物上方了。

之后发现他是按照我的人物的移动半径来旋转血条的。但是这不是我想要的,因为血条永远都要在人物上方嘛。因为以前学过opengl的关系,所以后来想到了是要将矩阵的旋转和平移分开写,要先旋转在平移,因为在原点旋转了,那就不会再影响到后面的平移了。

这里使用DX封装好的函数:

D3DXMATRIX * D3DXMatrixTranslation(
 D3DXMATRIX * pOut,
 FLOAT x,
 FLOAT y,
 FLOAT z
);
第一个参数是返回平移矩阵,第二个参数是X轴的平移量,第三个参数是Y轴的平移量,第四个参数是Z轴的平移量。
matView = V;
	D3DXMATRIX matBillboard;
	D3DXMatrixIdentity(&matBillboard);
	matBillboard._11 = matView._11;
	matBillboard._13 = matView._13;
	matBillboard._31 = matView._31;
	matBillboard._33 = matView._33;
	D3DXMatrixInverse(&matBillboard,NULL,&matBillboard);
	D3DXMATRIX matRole;
	D3DXMatrixIdentity(&matRole);
	D3DXMATRIX matTransform;
	D3DXMatrixTranslation(&matTransform,x,y,z);
	matRole =  matBillboard * matTransform * matRole;
	g_device->SetTransform(D3DTS_WORLD,&matRole);




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值