游戏开发论坛

 找回密码
 立即注册
搜索
查看: 4181|回复: 14

怎样在一个 设备下 导入多个x文件呢???

[复制链接]

23

主题

68

帖子

68

积分

注册会员

Rank: 2

积分
68
发表于 2006-4-2 00:13:00 | 显示全部楼层 |阅读模式
我想达到这样一个目的 ,就是场景(球面天空,草地,还包括一个球体)用一个x文件导入,然后我想让里边的球体 可以用键盘操作移动,但是我发现 我改变世界矩阵的位置所有模型都会移动.之后,我想尝试 分开来导入 就是天空和草地 为一份x文件,球体为单门一个文件,于是我把xfileload类定义了2个对象,我想一个用来导场景,一个用来导球体,但是我每次导球体的时候都 找不到x文件 ,我让这2个x文件用的是同一个 设备接口,因为渲染的时候要在一起渲染呀...求高手告诉我 我怎样才能达到 想要的结果.......

0

主题

237

帖子

237

积分

中级会员

Rank: 3Rank: 3

积分
237
发表于 2006-4-2 00:40:00 | 显示全部楼层

Re:怎样在一个 设备下 导入多个x文件呢???

分?它??, 每??物件???自?б??世界矩阵, 你想移??物件, 就改?A物件的矩阵.
但?出它??前, 每??物件都要SetTransform自?У木卣?
SetTransform (TS_WORLD, A->matrix);
A->Draw();
SetTransform (TS_WORLD, B->matrix);
B->Draw();
...
... 如此?推.

23

主题

68

帖子

68

积分

注册会员

Rank: 2

积分
68
 楼主| 发表于 2006-4-2 10:11:00 | 显示全部楼层

Re:怎样在一个 设备下 导入多个x文件呢???

朋友 你说的是:好比一份x文件里有 多个模型,然后分别改他们各自的世界矩阵吗?? 那A,B我要怎样来定义 或是 获取呢??谢谢

0

主题

237

帖子

237

积分

中级会员

Rank: 3Rank: 3

积分
237
发表于 2006-4-2 13:14:00 | 显示全部楼层

Re:怎样在一个 设备下 导入多个x文件呢???

不是"一份x文件里有 多个模型", 你可以定?多??mesh的, 例如 D3DXMesh *pMesh[10], 就是可以同?r有十???立的 .X 模型. (??拥亩?x是C/C++的基本知?吧)
那? pMesh[0]=LoadMesh("Box.x") 就是 ?入一??模型.
pMesh[1]=LoadMesh("Sphere.x") ?入第二??模型...
如此?推.

建?LZ多看DX SDK的samples吧.

23

主题

68

帖子

68

积分

注册会员

Rank: 2

积分
68
 楼主| 发表于 2006-4-2 15:37:00 | 显示全部楼层

Re:怎样在一个 设备下 导入多个x文件呢???

朋友 ,非常感谢你,你有代码吗?帮我看看我的代码好??我的代码 就在 写有:郁闷死了的那个帖子里.谢谢你了

0

主题

237

帖子

237

积分

中级会员

Rank: 3Rank: 3

积分
237
发表于 2006-4-2 20:39:00 | 显示全部楼层

Re:怎样在一个 设备下 导入多个x文件呢???

你的源?看了?, 你的D3D?程概念?了. 正?的???是 :
main ()
{
  Clear();
  BeginScene();
  for (int i=0; i<MESH_MAX; i++)
  {
    pMesh->SetTransform();
    pMesh->Render();
  }
  EndScene();
  Present();
}
而你的是每?一??Mesh都重覆地 Clear(); BeginScene(); EndScene(); Present();, 完全不需要的, ?是建?你多看DX SDK的Samples吧, 或者看?? "?源" ?鹊脑创a.

23

主题

68

帖子

68

积分

注册会员

Rank: 2

积分
68
 楼主| 发表于 2006-4-2 22:30:00 | 显示全部楼层

Re:怎样在一个 设备下 导入多个x文件呢???

朋友非常感谢 照你的方法 我成功的导入了2份x文件,就是用 D3DXMesh *pMesh[2],然后我想让第2个 mesh移动该怎样做呢??是这样吗:
void setball(float a,float b,float c)
{D3DXMATRIX worldmatrix;
D3DXMatrixTranslation(m_pD3DXMesh[1]->worldmatrix,a,b,c);
Device->SetTransform(D3DTS_WORLD,m_pD3DXMesh[1]->worldmatrix);
}

0

主题

237

帖子

237

积分

中级会员

Rank: 3Rank: 3

积分
237
发表于 2006-4-3 00:02:00 | 显示全部楼层

Re:怎样在一个 设备下 导入多个x文件呢???

是的. (建?用 float x, float y, float z ?泶? a,b,c 吧...)

matrix ?有很多要?W呢, 用Translation只能平移, 到了要Rotation?r.... 慢慢?戆?

23

主题

68

帖子

68

积分

注册会员

Rank: 2

积分
68
 楼主| 发表于 2006-4-3 01:37:00 | 显示全部楼层

Re:怎样在一个 设备下 导入多个x文件呢???

可是我用上边的代码做不行呀???'worldmatrix' : is not a member of 'ID3DXMesh'
这是我的渲染函数:帮我改改吧 谢谢了..
Render(){
        D3DXMATRIX worldmatrix;
                           :
                           :
for(DWORD i=0;i<m_dwMaterials2;i++){
        D3DXMatrixTranslation(m_pD3DXMesh->worldmatrix,0,100,0);

                m_pIDirect3DDevice->SetTransform(D3DTS_WORLD,m_pD3DXMesh              [m_dwMaterials2]->worldmatrix);

        m_pIDirect3DDevice->SetMaterial(&m_pD3DMaterialArray2);
        m_pIDirect3DDevice->SetTexture(0,m_ppDirect3DTextureArray2);
        m_pD3DXMesh[1]->DrawSubset(i);
        }
就回有上边的那个错误提示...帮我重写一下吧 感激不尽

11

主题

123

帖子

123

积分

注册会员

Rank: 2

积分
123
发表于 2006-4-4 13:43:00 | 显示全部楼层

Re:怎样在一个 设备下 导入多个x文件呢???

  你的那个我也看了,也回了,你基础弱。
  是这样,你现定义一个标准矩阵,它放在渲染开始,然后你要移动另一个.X文件即mesh时,先在渲染前先再定义一个移动的矩阵,渲染后再设置一下把世界矩阵还原成原来的标准矩阵。
  这是基本概念,还有种方法,锁住mesh,然后移动每个顶点,我没比较过两种方法的效率,
现在的硬件几乎都能忽视这些细节了。
  你应该买本书,一本德国人的写的DX 入门书不错,我原来啥也不懂,仔细读后,概念问题都解决了。里面还带有代码,你的问题正是它最初几个小例子程序解决的问题,祝顺利!
《DX 入门编程》大概是这个名字,我书不在手边,你上网搜一下。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2026-1-24 02:44

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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