游戏开发论坛

 找回密码
 立即注册
搜索
查看: 2207|回复: 2

使用shader渲染模型时出现了一些问题,请高手指点。

[复制链接]

83

主题

169

帖子

202

积分

中级会员

Rank: 3Rank: 3

积分
202
发表于 2011-3-16 09:31:00 | 显示全部楼层 |阅读模式
我自己编写了一个3d模型的格式使用DX9的IDirect3DVertexBuffer9:ock()加载到程序中,按住鼠标左键拖动鼠标可以移动场景。
使用以下代码显示模型:

UINT nPasses;

pEffect->Begin(&nPasses,0);
pEffect->BeginPass(pass);
//渲染模型1
BasicModel2.ShowModel("模型1");
pEffect->EndPass();
pEffect->End();

pEffect->Begin(&nPasses,0);
pEffect->BeginPass(pass);
//渲染模型2
BasicModel2.ShowModel("模型2");
pEffect->EndPass();
pEffect->End();

程序运行发现移动场景时两个模型并不同时运动,就像有弹簧拉着两个物体,一个先动一个后动,场景移动越快两者间隔的距离越大。停止移动两者的就离恢复正常。

如果我按照以下方式编写渲染代码就不会出现这样的问题:

UINT nPasses;

pEffect->Begin(&nPasses,0);
pEffect->BeginPass(pass);
//渲染模型1
BasicModel2.ShowModel("模型1");
//渲染模型2
BasicModel2.ShowModel("模型2");
pEffect->EndPass();
pEffect->End();

这样不正常现象出现的原因是什么?
使用第二段代码确实可以避免这样的错误,但是使用第一段代码可以实现使用多个shader显示不同的模型,如果不解决这个问题怎样实现使用不同的shader显示不同的模型?

1

主题

8

帖子

8

积分

新手上路

Rank: 1

积分
8
发表于 2011-3-16 23:00:00 | 显示全部楼层

Re:使用shader渲染模型时出现了一些问题,请高手指点。

第一种做法也不应该出现这种问题,我怀疑是你在渲染第二个模型的时候位置更新有延迟。

83

主题

169

帖子

202

积分

中级会员

Rank: 3Rank: 3

积分
202
 楼主| 发表于 2011-3-25 17:20:00 | 显示全部楼层

Re:使用shader渲染模型时出现了一些问题,请高手指点。

解决了。改变物体位置后应该调用ID3DXEffect::CommitChanges()。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2025-6-7 04:36

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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