我使用glDrawArrays(GL_POINTS,...)繪製諧波。 我想知道OpenGL根據頂點 生成曲面(三角形?)的順序,並以這種方式計算曲面面積? 我可以這樣做,如果是的話。表面積計算
我將試圖解釋它更好
我具有的值的2D陣列並在其上執行紫外映射。(ⅰ產生諧波) 和繪製使用調用glDrawArrays表面接受。 我想計算我想象的表面積。 我認爲我應該通過創建一個三角形網格來「翻譯」這個問題,使其更易於進行這樣的計算,它適用於繪製點 - 這將簡化我的計算。
我使用glDrawArrays(GL_POINTS,...)繪製諧波。 我想知道OpenGL根據頂點 生成曲面(三角形?)的順序,並以這種方式計算曲面面積? 我可以這樣做,如果是的話。表面積計算
我將試圖解釋它更好
我具有的值的2D陣列並在其上執行紫外映射。(ⅰ產生諧波) 和繪製使用調用glDrawArrays表面接受。 我想計算我想象的表面積。 我認爲我應該通過創建一個三角形網格來「翻譯」這個問題,使其更易於進行這樣的計算,它適用於繪製點 - 這將簡化我的計算。
我使用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
幾何着色階段包含有關繪製多邊形的信息,因此您可以從那裏計算出曲面量。爲了得到它的總和,你可以渲染成帶有疊加混合的1x1 R_32F framebuffer對象,然後將該值讀入系統內存。
你要計算的表面(它是一個數字),使用OpenGL渲染的區域?你想怎麼做? – mouser
這是一個轉貼 – Ulterior