游戏开发论坛

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

DX的网格Mesh移动方法

[复制链接]

2

主题

10

帖子

10

积分

新手上路

Rank: 1

积分
10
发表于 2011-1-13 23:01:00 | 显示全部楼层 |阅读模式
现在我知道的有两种方法:
假设当前帧目标网格的移动矩阵为M.

1. 对网格的每一个顶点加上移动矩阵M.

2. 根据网格原本位置和M获得新位置矩阵N
  用 SetTransform(D3DTS_WORLD, &N); “转换整个世界”
   然后绘制网格。
  定义 单位矩阵I;
用  SetTransform(D3DTS_WORLD, &I);  "将世界还原"

我感觉第二种方法在“世界”包含多个模型的时候,很不效率。
我倾向于第一种方法。但某些原因让我怀疑第二种方法才是王道。
所以发帖请教一下大家,实际中到底是怎么处理的,是不是有第3种方法?

1万

主题

1万

帖子

2万

积分

管理员

中级会员

Rank: 9Rank: 9Rank: 9

积分
20547
发表于 2011-1-14 11:39:00 | 显示全部楼层

Re:DX的网格Mesh移动方法

方法一 +1

2

主题

10

帖子

10

积分

新手上路

Rank: 1

积分
10
 楼主| 发表于 2011-1-15 14:23:00 | 显示全部楼层

Re:DX的网格Mesh移动方法

不能沉啊,请大家多多发表一下自己的看法。

0

主题

2

帖子

0

积分

新手上路

Rank: 1

积分
0
发表于 2011-1-18 09:34:00 | 显示全部楼层

Re:DX的网格Mesh移动方法

问题是你要在世界坐标还是相对坐标内移动物体。

2

主题

10

帖子

10

积分

新手上路

Rank: 1

积分
10
 楼主| 发表于 2011-1-18 19:11:00 | 显示全部楼层

Re:DX的网格Mesh移动方法

世界坐标。
但是如果用第二种方式能比较方便的实现相对坐标内移动?

2

主题

10

帖子

10

积分

新手上路

Rank: 1

积分
10
 楼主| 发表于 2011-1-29 22:39:00 | 显示全部楼层

Re:DX的网格Mesh移动方法

恩,终于明白了,原来是我对SetTransform()的理解不对。
我原本以为这是对顶点缓存中的所有顶点进行操作,就对他产生了效能问题。
但实际上SetTransform()并不会对顶点缓存进行处理,它就像一个画刷,
每次你要画(绘制)一个Mesh之前,将它设置成你要使用的状态就好了。
感谢大家都热情帮助。^_^
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2025-8-16 13:48

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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