簡體   English   中英

需要幫助將偽代碼轉換為 c#

[英]Need help converting pseudo-code to c#

我一直在努力構建一個 icosphere,並且幾乎完成了它。

現在我要做的就是讓任何不面向相機的三角形都不會添加到繪制列表中,因為我正在處理很多三角形,並且正在填充頂點緩沖區。 我已經設法做到了,所以面對初始相機 position 的三角形被隱藏(見附圖),但是當我移動相機時,隱藏的三角形不會更新。

這是顯示這一點的兩張圖片:

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;

    }

等效代碼需要 go 在“dotCamera.GetDirection *”之后

我認為此代碼段將取決於您使用的 3d 引擎。 有效地嘗試獲取表示視圖當前旋轉/位置的矩陣。

如果你的目標是 XNA,你可能會發現這個幫助Rotation&Transaltion

那不是偽代碼。 沒有足夠的信息來給出可靠的答案,但是您嘗試過嗎?

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM