【问题标题】:Trying to draw textured cube primitive in XNA with quads尝试使用四边形在 XNA 中绘制纹理立方体基元
【发布时间】:2011-10-06 06:17:17
【问题描述】:

现在我正在使用带有 Windows Phone 开发工具的 XNA 4.0 来使用 MSDN 上预定义的四边形类创建纹理立方体。

立方体的前/后/左/右面会很好地绘制(对于我制作的每个立方体),但是顶面和底面不会渲染。光栅化状态的剔除模式设置为无,表示顶面的四边形存在,看起来好像会绘制,但由于某种原因它不会。

我的代码有问题,还是因为其他原因没有发生?

代码如下:

【问题讨论】:

  • 你所有的法线都被翻转了..不确定这是否是原因,但它肯定没有帮助。左脸有 Vector3.Right,其余的也都翻转了。
  • 谢谢。我将它们更改为正确的值,现在照明效果更好,但顶面和底面仍然无法渲染...

标签: c# 3d xna cube


【解决方案1】:

这是因为您的顶面和底面都有一个高度。它们的高度应该为 0。

这里你传入一个值作为高度:

Faces[4] = new Quad(topFaceOrigin, Vector3.Normalize(Vector3.Down), Up, Size, Size);

然后在 Quad 构造函数中,它被用来给出不正确的 LowerLeft 和 LowerRight 值:

LowerLeft = UpperLeft - (Up * height);
LowerRight = UpperRight - (Up * height);

我建议更改创建所有四边形的方式;每张脸真的应该有不同的参数。现在你所有的脸都在传递几乎相同的东西。

【讨论】:

  • 啊,我明白了。非常感谢!我更改了四边形的代码以保留 4 个预定义的角,现在它们可以完美地工作了。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-08-14
  • 2013-02-18
  • 1970-01-01
相关资源
最近更新 更多