2011-06-15 21 views
3

我需要加速一些使用密集計算的程序,其中需要從立方體,球體和類似物之間的交點進行表面計算。使用CUDA我需要指定我需要的所有formuale,當然,爲了分析計算與交叉點有關的信息。但是因爲我只需要對結果曲面進行很好的近似處理,所以我瞭解到OpenGL可以計算或估計這些曲面。不知您是否可以給我您的意見或指向相關參考哪些幾何計算可以使用OpenGL加速

+1

你可以更具體地說明你正試圖完成的任務嗎? – kvark 2011-06-15 18:55:41

+0

計算球體和立方體之間相交所產生的物體的表面,具體是否足夠? – flow 2011-06-15 21:11:59

+1

否(回答您的評論,而不是您的問題,但也可能適用),因爲這不像您預期​​的那樣直觀地映射到OpenGL。查看datenwolf的答案,感受解決幾何問題和柵格化三角形之間的差異。 – 2011-06-15 21:36:52

回答

1

如果你只需要渲染的對象,你可以使用模板緩存來評價你需要的任何布爾運算:http://www.opengl.org/resources/code/samples/advanced/advanced97/notes/node11.html

,可以從任一對相交表面的角度或正投影來計算的任何數量的可能從這樣的渲染以及其深度緩衝區中推導出來。如果您需要提取整個交點,則可以嘗試使用深度剝離和模板化CSG一起提取完整交點的分層表示,儘管在與查看方向平行的表面部分可能非常不準確,而您將需要做一些額外的工作縫合層回到一起: http://developer.download.nvidia.com/SDK/10/opengl/src/dual_depth_peeling/doc/DualDepthPeeling.pdf

編輯:這將適用於任意的,自由形式的表面,是一個相當標準的技術。但它確實有其侷限性,因爲您獲得的準確性會相當差,您可能必須投影到多個視圖才能獲得足夠的對象覆蓋。作爲一個例子,這裏是碰撞檢測的一個應用:http://www.cs.ucl.ac.uk/staff/b.spanlang/ISBCICSOWH.pdf

1

OpenGL在這裏比CUDA或OpenCL更少使用,因爲它主要針對繪製三角形網格。當然,您可以在現代OpenGL的各種着色器階段進行復雜的幾何計算。問題是,所有這些計算的結果都是基於像素的圖片。有一個反饋機制來檢索處理過的頂點數據,但只會給你一個網格。

任何平面或/和球的交點實際上是相當簡單的,可以通過分析來完成。真正的難題是自由曲面(Bezìer或NURBS)相交。那些通常沒有封閉的解決方案,所以你需要做的是在數值上逼近最適合交叉點的修剪曲線。