2011-07-11 211 views
1

我使用glDrawArrays(GL_POINTS,...)繪製諧波。 我想知道OpenGL根據頂點 生成曲面(三角形?)的順序,並以這種方式計算曲面面積? 我可以這樣做,如果是的話。表面積計算


我將試圖解釋它更好

我具有的值的2D陣列並在其上執行紫外映射。(ⅰ產生諧波) 和繪製使用調用glDrawArrays表面接受。 我想計算我想象的表面積。 我認爲我應該通過創建一個三角形網格來「翻譯」這個問題,使其更易於進行這樣的計算,它適用於繪製點 - 這將簡化我的計算。

+0

你要計算的表面(它是一個數字),使用OpenGL渲染的區域?你想怎麼做? – mouser

+0

這是一個轉貼 – Ulterior

回答

2

我使用glDrawArrays(GL_POINTS,...)來繪製諧波。

點沒有表面。

我想知道OpenGL根據頂點生成曲面(三角形?)的順序,並以這種方式計算曲面面積?我能做到嗎,如果是的話,我該怎麼做。

OpenGL不會生成三角形。它柵格化你發送它的三角形。按照您指定它們的順序。 glDrawArrays(mode, first, count)行爲酷似

myDrawArrays(GLenum mode, GLuint first, GLuint count) 
{ 
    GLuint *indices = malloc(count * sizeof(GLuint)); 
    /* just assume malloc never fails, OpenGL doesn't have to alloc here, of course) */ 
    for(int i=0; i<count; i++) 
     indices[i] = first + i; 
    glDrawElements(mode, count, GL_UNSIGNED_INT, indices); 
    free(indices); 
} 

原語在他們指定的順序光柵化。

所以你想知道一個表面區域,但繪製點。如前所述,點(數學)沒有表面。但是它們至少覆蓋一個(子)像素。那麼是不是真的想知道像素覆蓋範圍

然後OpenGL爲您提供了一種稱爲「遮擋查詢」的方法,通過該方法它可以返回多少個(屏幕/幀緩衝區)像素,通過在查詢內繪製基元來觸及。

http://www.opengl.org/registry/specs/ARB/occlusion_query.txt

+0

我編輯了我的問題請看看謝謝 – Yakov

+0

@Yakov:我還不清楚你想幹什麼?你用波浪作爲網格的變形或類似的東西嗎?無論如何:OpenGL只處理繪圖的東西。這不是某種幾何圖形庫,不能幫助你。你的問題實際上是根源於微分幾何,所以我會應用微分算法來解決這個問題。具體來說,您應該區分您的採樣函數並集成差異表面元素。 HTTP://www.usna。埃杜/用戶/數學/ WDJ /教/ sm221_surface_area1.html – datenwolf

1

幾何着色階段包含有關繪製多邊形的信息,因此您可以從那裏計算出曲面量。爲了得到它的總和,你可以渲染成帶有疊加混合的1x1 R_32F framebuffer對象,然後將該值讀入系統內存。