2011-10-06 41 views
0

现在,我正在使用XNA 4.0和Windows Phone开发人员工具在MSDN上使用预定义的四边形类创建纹理立方体。尝试在XNA中使用四边形绘制纹理立方体基元

立方体的正面/背面/左/右面将画好(对于我制作的每个立方体),但顶面和底面不会呈现。光栅化器状态的剔除模式被设置为无,并且表示顶面的四边形存在,并且看起来好像它将画出,但由于某种原因它不会。

我的代码有问题吗,或者这是因为其他原因而没有发生?

下面的代码:

+0

你所有的法线翻转..不确定是否这是原因,但它肯定没有帮助。对于左脸你有Vector3.Right,其余的都翻转过来。 – 2011-10-06 21:28:04

+0

谢谢你。我改变他们到正确的价值观,现在照明效果更好,但顶部和底部的脸仍然不会渲染... – user981643

回答

0

这是因为你的顶面和底面的高度给他们。他们应该有0高度。

在这里,你传递一个值作为高度:

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

然后在这里四构造它被用来给不正确LowerLeft & LowerRight值:

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

我将建议改变如何你创建所有的四边形;每张脸真的应该有不同的参数。现在你所有的面孔都在传递几乎相同的东西。

+0

啊我明白了。非常感谢!我改变了四边形的代码,以保存4个预定义的角落,现在他们完美地工作。 – user981643