游戏开发论坛

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

关于dx里的移动问题!

[复制链接]

6

主题

16

帖子

16

积分

新手上路

Rank: 1

积分
16
发表于 2010-3-28 21:13:00 | 显示全部楼层 |阅读模式
我现在想控制一个方形的移动,比如说:按照x轴正向每步移动0.05f的距离,应该如何实现呢?


我原本打算用 “ 定时器” +“D3DXMatrixTranslation( &matWorld,0.05,0,0 );”来实现,但是发现弄出来的没有发生移动,
所以我想问一下各位大侠有什么好的方法来实现一个方形的移动吗?或者说我的方法错误在哪里?希望给予指出,谢谢!!

void CALLBACK TimerProc(HWND hWnd,UINT nMsg,UINT nTimerid,DWORD dwTime)
{
        _x=_x+0.5;
}
·
·
·
OID SetupWorldMatrice()
{
        //建立一个绕X轴动态旋转的世界矩阵
    D3DXMATRIX matWorld;
        SetTimer(g_Wnd,1,50,TimerProc); //一个1秒触发一次的定时器
        D3DXMatrixIdentity( &matWorld );     //将一个矩阵单位化
    D3DXMatrixTranslation( &matWorld,_x,0.,0 );
        //设置世界矩阵
    g_pd3dDevice->SetTransform( D3DTS_WORLD, &matWorld );
}
·
·
·
if( SUCCEEDED( g_pd3dDevice->BeginScene() ) )
    {
                //设置世界矩阵
        SetupWorldMatrice();   //动画一般在世界坐标系里改变

                //在后台缓冲区绘制图形
        g_pd3dDevice->SetStreamSource( 0, g_pVB, 0, sizeof(CUSTOMVERTEX) );
        g_pd3dDevice->SetFVF( D3DFVF_CUSTOMVERTEX );
        g_pd3dDevice->DrawPrimitive( D3DPT_TRIANGLELIST, 0,2 );

                //结束在后台缓冲区渲染图形
        g_pd3dDevice->EndScene();
    }


1

主题

18

帖子

20

积分

注册会员

Rank: 2

积分
20
QQ
发表于 2010-3-30 15:42:00 | 显示全部楼层

Re: 关于dx里的移动问题!

_x 初始化没?  

还有 这个 “  SetTimer(g_Wnd,1,50,TimerProc); ” 一直在调用  。。

6

主题

16

帖子

16

积分

新手上路

Rank: 1

积分
16
 楼主| 发表于 2010-3-30 19:15:00 | 显示全部楼层

Re:关于dx里的移动问题!

有的,_x刚开始时为0.5f的,现在我有一个新的疑问,比如说:用A表示一个三角形的做所坐标,

现在经过  D3DXMatrixTranslation( &matWorld,0.5,0.,0 );

这个函数平移沿“X”轴平移0.5f之后,那么这个A的坐标会改变吗?

0

主题

2

帖子

8

积分

新手上路

Rank: 1

积分
8
发表于 2010-3-31 00:33:00 | 显示全部楼层

Re:关于dx里的移动问题!

对于每一帧的渲染,物体都是先在初始位置的(我是将它理解为世界坐标系中的原点),然后利用世界变换矩阵,将物体变换到你需要的位置。

其实更准确的话,应该是物体坐标系和世界坐标系先是重合的,然后在世界坐标系下,世界变换矩阵将物体坐标系移动,旋转等。。

6

主题

16

帖子

16

积分

新手上路

Rank: 1

积分
16
 楼主| 发表于 2010-3-31 12:39:00 | 显示全部楼层

Re:关于dx里的移动问题!

按上面这位大侠的意思就是,经过世界变换后,物体的坐标会发生改变了,是吗?

0

主题

2

帖子

8

积分

新手上路

Rank: 1

积分
8
发表于 2010-3-31 23:48:00 | 显示全部楼层

Re:关于dx里的移动问题!

我也是初学DX,不是特别懂。
翻了下资料,发现这样解释比较好理解。

简单说,世界变换就是将一个物体模型从本地空间重新定位到世界空间。也就是说,构成物体模型的各个顶点坐标原先都是相对于它本地空间而言的(例如3dmax制作三维模型时,首先需要为模型设定一个本地坐标系),经过世界变换后,构成物体模型的顶点坐标发生改变,此时可以认为是相对世界空间的坐标了。这样物体就定位到世界空间了
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2025-6-10 10:14

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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