尝试在具有四边形的XNA中绘制带纹理的立方体基元

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了尝试在具有四边形的XNA中绘制带纹理的立方体基元相关的知识,希望对你有一定的参考价值。

现在,我将XNA 4.0与Windows Phone开发人员工具结合使用,以使用MSDN上的预定义四元类创建带纹理的多维数据集。

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

我的代码是否有问题,或者是否由于其他原因而没有发生?

这里是代码:

答案

这是因为您的顶面和底面高度都很高。它们的高度应为0。

这里您要传递一个值作为高度:

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

然后在Quad构造函数中,它用于提供不正确的LowerLeft和LowerRight值:

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

我建议您更改所有四边形的创建方式;每个面孔确实应该具有不同的参数。现在,您的所有面孔几乎都在传递相同的内容。

以上是关于尝试在具有四边形的XNA中绘制带纹理的立方体基元的主要内容,如果未能解决你的问题,请参考以下文章

绘制带纹理的四边形 OpenGL

XNA纹理问题

大量相同纹理的四边形

OpenGL:纹理基元 + 高帧率

如何将纹理应用到四边形以纹理立方体?

C# XNA - 如何使用 2 个矩形变量绘制动画纹理?