|
我自己编写了一个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显示不同的模型? |
|