需要帮助将伪代码转换为c#

时间:2011-07-22 13:12:19

标签: c# xna pseudocode

我一直在努力建立一个icosphere,并且几乎已经完成了它。

现在我要做的是使任何不面向相机的三角形都不会添加到绘图列表中,因为我正在处理很多三角形,并且正在填充顶点缓冲区。我已设法使面向初始摄像机位置的三角形被隐藏(参见附图),但隐藏的三角形不会随着我移动相机而更新。

以下两张图片显示了这一点:

http://i41.photobucket.com/albums/e262/cstgirllover/Cho/IcosphereCulledFront.png

http://i41.photobucket.com/albums/e262/cstgirllover/Cho/IcosphereCulledSide.png

我一直在使用本网站的(伪)代码来帮助我做到这一点:

http://decadeengine.blogspot.com/2011/03/remove-back-facing-patches-before.html

但我似乎找不到任何相应的代码:

p_pGraphics->get_Matrix(eModelView)

这是来自页面上最后一段代码,它解决了我遇到的问题。

我的周围代码如下所示:

public float isFacing(Vector3 pos1, Vector3 pos2, Vector3 pos3, Camera dotCamera)
    {
        Vector3 temp1 = CalculateNormal(pos1, pos2, pos3);

        float dotp = Vector3.Dot(temp1, dotCamera.GetDirection * _________);
        return dotp;

    }

等效代码需要在“dotCamera.GetDirection *”

之后进入

2 个答案:

答案 0 :(得分:0)

我认为此代码段取决于您使用的是哪种3D引擎。 有效地尝试获得表示视图当前旋转/位置的矩阵。

如果你的目标是XNA,你可以找到帮助Rotation&Transaltion

答案 1 :(得分:0)

那不是伪代码。没有足够的信息来提供可靠的答案,但你试过这个吗?

float dotp = Vector3.Dot(temp1, dotCamera.GetDirection * p_pGraphics.get_Matrix(eModelView));