游戏开发论坛

 找回密码
 立即注册
搜索
查看: 1670|回复: 5

请问一下为什么这个变换变之后两物体的位置会一样??

[复制链接]

52

主题

103

帖子

103

积分

注册会员

Rank: 2

积分
103
发表于 2009-7-31 20:39:00 | 显示全部楼层 |阅读模式
           pd3dDevice->BeginScene();
       
        pd3dDevice->SetStreamSource(0,plane,0,sizeof(Vertex));
        pd3dDevice->SetFVF(FVF);
        pd3dDevice->DrawPrimitive(D3DPT_TRIANGLELIST,0,2);

        D3DXMATRIX trans;
        D3DXMatrixTranslation(&trans,5,0,0);
        pd3dDevice->SetTransform(D3DTS_WORLD,&trans);
        pd3dDevice->SetStreamSource(0,vb,0,sizeof(Vertex));
        pd3dDevice->SetIndices(ib);
        pd3dDevice->SetFVF(FVF);
        pd3dDevice->DrawIndexedPrimitive(D3DPT_TRIANGLELIST,0,0,8,0,12);

        pd3dDevice->EndScene();

52

主题

103

帖子

103

积分

注册会员

Rank: 2

积分
103
 楼主| 发表于 2009-8-1 08:16:00 | 显示全部楼层

Re:请问一下为什么这个变换变之后两物体的位置会一样??

帮帮忙,我觉得那矩阵只对第二个物体进行了世界变换啊,为什么两个都动呢、

34

主题

443

帖子

478

积分

中级会员

Rank: 3Rank: 3

积分
478
发表于 2009-8-1 08:26:00 | 显示全部楼层

Re: 请问一下为什么这个变换变之后两物体的位置会一样?

GameZero: 请问一下为什么这个变换变之后两物体的位置会一样??
pd3dDevice->SetTransform(D3DTS_WORLD,&trans);

世界矩阵变了,当然都动了,开始第一个要矩阵恢复下

52

主题

103

帖子

103

积分

注册会员

Rank: 2

积分
103
 楼主| 发表于 2009-8-1 08:42:00 | 显示全部楼层

Re: 请问一下为什么这个变换变之后两物体的位置会一样?

如果要只变一个那代码应该怎么改呢?谢谢!!

34

主题

657

帖子

672

积分

高级会员

Rank: 4

积分
672
发表于 2009-8-1 11:13:00 | 显示全部楼层

Re:请问一下为什么这个变换变之后两物体的位置会一样??

那是因为你绘制第二个对象的世界变换影响了下一帧绘制时的第一个对象,所以两个都变。

你应该在每次绘制对象都设置一下世界变换矩阵。

34

主题

657

帖子

672

积分

高级会员

Rank: 4

积分
672
发表于 2009-8-1 11:15:00 | 显示全部楼层

Re:请问一下为什么这个变换变之后两物体的位置会一样??

pd3dDevice->BeginScene();

D3DXMATRIX matWorld;
D3DXMatrixIdentity(&matWorld);
pd3dDevice->SetTransform(D3DTS_WORLD, &matWorld);

pd3dDevice->SetStreamSource(0,plane,0,sizeof(Vertex));
pd3dDevice->SetFVF(FVF);
pd3dDevice->DrawPrimitive(D3DPT_TRIANGLELIST,0,2);

D3DXMatrixTranslation(&matWorld,5,0,0);
pd3dDevice->SetTransform(D3DTS_WORLD,&matWorld);
pd3dDevice->SetStreamSource(0,vb,0,sizeof(Vertex));
pd3dDevice->SetIndices(ib);
pd3dDevice->SetFVF(FVF);
pd3dDevice->DrawIndexedPrimitive(D3DPT_TRIANGLELIST,0,0,8,0,12);

pd3dDevice->EndScene();

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

作品发布|文章投稿|广告合作|关于本站|游戏开发论坛 ( 闽ICP备17032699号-3 )

GMT+8, 2025-6-21 22:18

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表