我一直在学习DirectX一段时间了我到了从.obj文件中将多个对象绘制到屏幕上的重点。我的问题是,如果我绘制2个对象,第二个绘图将位于第1个顶部。
例:
Obj1 =纸板箱
Obj2 = Cube
loadStuff_&_draw(Obj1);
loadStuff_&_draw(Obj2);
即使它在/后面,也会在框外/前面绘制立方体。
如何将多个对象绘制在一起以便它们正确重叠?
我所知道的唯一绘图是:
修改
这是一个盒子里的立方体图片。它表明立方体在盒子后面而不是在盒子里面。它还显示盒子的边缘夹在盒子后面。不确定发生了什么。
我画了立方体,然后画了空心框。
答案 0 :(得分:1)
这就是深度缓冲区(有时称为z缓冲区)的用途。在绘制一个对象期间写入像素时,它会记录深度缓冲区中该像素的视点距离。然后,当您绘制第二个也会写入该像素的对象时,它可以将该对象的新对象深度值与缓冲值(来自之前的对象)进行比较,并且只有在新值接近旧值时才覆盖像素。一。如果绘制了像素,则更新深度值以反映更接近的值。
某些链接可能会为您提供有关如何实现此目的的一些建议:
http://msdn.microsoft.com/en-gb/library/windows/desktop/bb205074%28v=vs.85%29.aspx
答案 1 :(得分:-1)
这取决于你如何设置对象的世界矩阵,如果你想在第一个对象后面的第二个对象,那么在绘制之前设置正确的世界矩阵。假设对象1位于原点(0,0,0),那么您可以将object2转换为(0,0,-10)以使其位于object1之后。并转换为(0,0,10)将使它在object1前面。