我正在写汽车拉力赛。用于建模道路我使用的是“PositionNormalTextured”顶点类型,并用于建模我从网格中使用的汽车。汽车是固定的,道路在它下面移动我有一个装置,我用它来渲染汽车和道路。现在我想要左右移动汽车,但汽车和公路一起移动。我该怎么办才能搬家 汽车左右没有行驶?
答案 0 :(得分:1)
你如何进行渲染?你是如何翻译的?
如果您向世界矩阵添加翻译然后渲染并且同时移动,那么您不会设置不同的世界矩阵。
您的代码应该是这样的:
RenderCar();
TranslateRoadBack( speed );
TranslateRoadSideways( amount );
RenderRoad();
这样你就可以将汽车渲染到世界的起源。当汽车向前或向侧面移动时,您可以在汽车下方移动轨道。但请注意,汽车和道路是分开进行的。
值得注意的是,这是一个解决方案。你可以保持道路静止并移动汽车(这可能看起来更合乎逻辑取决于你的心态)但是如果你想让摄像机留在汽车后面,那么你也需要移动摄像机。
编辑:我回答您的评论,您只需再次设置D3DTS_WORLD即可。当您调用DrawIndexed Primitive(DIP)时,它使用当前设置的矩阵。如果更改矩阵然后再次调用DIP,则在新DIP调用中呈现的数据将使用新矩阵。
(注意:这与DrawPrimitive(DP)调用一样,与DrawIndexedPrimitive一样多,但你应该更喜欢DIP over DP,因为它允许卡不用它刚刚转换的索引重新转换顶点。)