翻译的问题

时间:2010-09-01 01:08:18

标签: directx

我正在写汽车拉力赛。用于建模道路我使用的是“PositionNormalTextured”顶点类型,并用于建模我从网格中使用的汽车。汽车是固定的,道路在它下面移动我有一个装置,我用它来渲染汽车和道路。现在我想要左右移动汽车,但汽车和公路一起移动。我该怎么办才能搬家 汽车左右没有行驶?

1 个答案:

答案 0 :(得分:1)

你如何进行渲染?你是如何翻译的?

如果您向世界矩阵添加翻译然后渲染并且同时移动,那么您不会设置不同的世界矩阵。

您的代码应该是这样的:

RenderCar();
TranslateRoadBack( speed );
TranslateRoadSideways( amount ); 
RenderRoad();

这样你就可以将汽车渲染到世界的起源。当汽车向前或向侧面移动时,您可以在汽车下方移动轨道。但请注意,汽车和道路是分开进行的。

值得注意的是,这是一个解决方案。你可以保持道路静止并移动汽车(这可能看起来更合乎逻辑取决于你的心态)但是如果你想让摄像机留在汽车后面,那么你也需要移动摄像机。

编辑:我回答您的评论,您只需再次设置D3DTS_WORLD即可。当您调用DrawIndexed Primitive(DIP)时,它使用当前设置的矩阵。如果更改矩阵然后再次调用DIP,则在新DIP调用中呈现的数据将使用新矩阵。

(注意:这与DrawPrimitive(DP)调用一样,与DrawIndexedPrimitive一样多,但你应该更喜欢DIP over DP,因为它允许卡不用它刚刚转换的索引重新转换顶点。)