2010-05-18 57 views
1

這是一個難以搜索谷歌的問題,因爲它在金融領域具有其他意義。如何防止透支?

當然,我的意思是在這裏「繪圖」作爲..計算機圖形學..不要錢..

我很感興趣,防止透支的3D繪圖與2D繪圖兩者。
(我應該將它們分爲兩個不同的問題?)

我意識到這可能是一個非常廣泛的問題,因爲我沒有指定使用哪種技術。如果它太寬泛,可能對我可以讀取的一些資源提供一些提示。

編輯:
我的意思透支是:

  • 當你畫的對象太多,渲染一幀會很慢
  • 當你比你需要吸引更多的區域,呈現
  • 單幀會很慢
+1

Google [「圖形剔除」](http://www.google.com/#q=graphics+culling)。你會得到比「透支」更好的結果。 – 2010-05-18 15:37:57

+0

我不確定「透支」是什麼意思。也許你的意思是剪輯? – troelskn 2010-05-18 10:49:19

+0

這是當你繪製超過你應該。渲染一幀會很慢。 – 2010-05-18 10:55:01

回答

4

這是相當複雜的話題。

首先要考慮的是frustum culling。它會過濾出不在相機視野內的物體,以便在渲染階段傳遞它們。

第二件事是Z相機中的對象。最好從前到後渲染它們,以便近處物體將「深度值」寫入深度緩衝區,遠處物體的像素不會被繪製,因爲它們不會通過深度測試。這將節省您的GPU的填充率和像素着色器的工作。但請注意,如果場景中有半透明物體,則應首先按照先後順序進行繪製,以使alpha混合成爲可能。

如果您使用某種空間分區(如OctreeQuadtree),則可以實現這兩種功能。哪個更好取決於你的遊戲。 Quadtree更適合大開放空間,而Octree更適合多層次的室內空間。

並且不要忘記簡單的back-face culling,它可以在DirectX和OpenGL中使用單線啓用,以防止使用背面照相機來繪製人臉。

2

根據距離和位置減少考慮繪製的對象的數量(即拒絕觀看截屏以外的對象)。

另外考慮使用某種基於對象的遮擋系統來允許大對象遮擋小對象。然而,這可能不值得,除非你有很多具有相當規則形狀的大對象。在某些情況下,您可以預先處理靜態對象的潛在可見集。

您的API通常會拒絕面向視點的多邊形,因爲您通常不想繪製背面。

當涉及到實際渲染時間時,從前到後呈現不透明對象通常很有幫助,因此深度緩衝區測試最終會拒絕整個多邊形。如果你打開了深度緩衝,這也適用於2D。

請記住,這是一個性能優化問題。大多數應用程序不會出現透支問題。使用工具如PixNVIDIA PerfHUD來測量您的問題,然後再花費資源修復它。

4

問題實在是太廣:O)查看這些「指針」,要求更具體。

典型透支抑制劑是:

  • Z緩衝器
  • 閉塞爲基礎的技術(各種緩衝技術,HW閉塞,...)
  • 模板測試

上點點較高邏輯電平:

  • 剔除(通常由視錐)
  • 場景組織tehniques(通常樹木或瓦片)
  • 粗拉從前到後(這顯然是支持技術:O)

編輯:加入模板測試,已確實有趣的透支預防特別用於2d/3d的組合。