2017-02-13 197 views
-1

下面是每個GIS應用程序可以執行的任務:給定一些多邊形,用選定的顏色填充每個多邊形。就像這樣:imageOpengl:着色世界地圖?

什麼是OpenGL中反覆做這個的最好方法?也就是說,多邊形不會改變,並且我想要改變數據的顏色以產生不同的效果圖。

每個渲染重繪的多邊形是最簡單的解決方案,但它似乎是一種浪費,因爲幾何形狀完全不改變。

或者是更好地爲每個多邊形模板和模板打印整個地圖?如果有太多的多邊形,會有數百或數千的渲染通道產生問題嗎?

回答

0

對於多邊形的每個頂點,映射一個特定的顏色。這意味着當您將數據發送到着色器時,每次調用頂點數組對象都會發送2個參數:頂點着色器中需要的向量和向量這將用作片段顏色。這是最簡單的方法。

例如,想象一下在opengl中繪製的三角形。如果每次頂點進入着色器管線時將頂點發送到頂點着色器並在片段着色器中設置一個顏色,則它將相應地定位並置於使用來自片段着色器的給定顏色設置的屏幕上。

我不好解釋的技術(我不是最好的解釋),用於顏色插值的彩色三角形示例。紅色配對角,綠色配對另一個,藍色配到最後。如果你把它設置成紅色映射到每個角落,你就可以得到你的彩色三角形。這是基本原則。你和你畫出最少的三角形數,你需要一對着色器。 注意:多邊形由N個三角形組成,您需要將相同顏色映射到該多邊形中繪製的每個三角形的每個頂點。

0

我認爲更大的問題將是OpenGL的不支持多邊形或矢量繪圖一般,但也有庫這一點。您必須使用現有的矢量繪圖解決方案,否則,您將不得不將GIS數據(通常是多邊形的點列表)轉換爲三角形。這可能是最大的障礙。

事實上,幾何不改變是不是一個真正的問題,你一般會儲存幾何體的一個或多個緩衝區,然後創建邏輯只繪製你有什麼看法點區域內可見,甚至去爲遠不僅僅爲可見區域生成幾何圖形。

另請參閱此問題及其答案。

Rendering Vector Graphics in OpenGL?