【发布时间】:2014-05-29 10:24:40
【问题描述】:
我在绘制两个排成一行的 3D 立方体时遇到了问题。在我的代码中,我创建了一个立方体类,在 game1 类中,我构建了两个立方体,A 在右侧,B 在左侧。我还在 3D 世界中设置了 FPS 相机。问题是如果我先画立方体B(蓝色),然后将相机向左移动到立方体B,A(红色)仍然站在B前面,这显然是错误的。
我想有些照片会很有意义。 然后,我把相机移到另一边,情况是这样的: 这是错误的...... 从这个角度来看,红色立方体 A 应该在蓝色立方体 B 之后......
有人可以帮我吗?
这是 Cube 类中的抽奖
Matrix center = Matrix.CreateTranslation(
new Vector3(-0.5f, -0.5f, -0.5f));
Matrix scale = Matrix.CreateScale(0.5f);
Matrix translate = Matrix.CreateTranslation(location);
effect.World = center * scale * translate;
effect.View = camera.View;
effect.Projection = camera.Projection;
foreach (EffectPass pass in effect.CurrentTechnique.Passes)
{
pass.Apply();
device.SetVertexBuffer(cubeBuffer);
RasterizerState rs = new RasterizerState();
rs.CullMode = CullMode.None;
rs.FillMode = FillMode.Solid;
device.RasterizerState = rs;
device.DrawPrimitives(
PrimitiveType.TriangleList,
0,
cubeBuffer.VertexCount / 3);
}
这是game1中的Draw方法
A.Draw(相机,效果); B.Draw(相机、效果);
【问题讨论】:
-
我不知道这是否会有所帮助,但请尝试对所有立方体使用相同的 RasterizerState。