2017-03-09 397 views
0

我必須畫出數以百萬計的箭頭。我擁有的信息如下。每個箭頭方向上的每個箭頭(矢量方向)opengl實例化繪圖 - 3D箭頭

  • 長度的

    • 的位置,如果每個箭頭

    利用該信息,可予使用OpenGL實例化圖繪製箭頭。

    我已經通過實例化的例子了。在所有這些例子中,他們已經解釋了每個實例的矩陣轉換等。

    但是,我並不清楚,上述的數據,是否有可能做還是不做。

  • +0

    你可以。但你爲什麼想要?這聽起來像你必須爲每個箭頭生成新的頂點/原語,這取決於你想如何呈現箭頭。 –

    回答

    1

    假設箭頭是一個向量,您可以將所有的矢量數據插入到一個統一的數組**中,並使用gl_InstanceID在頂點着色器中查找它們,並簡單地將它們傳遞給gl_Position。

    如果您需要對箭頭應用轉換(通過查看數據:位置轉換,方向旋轉和長度縮放),您可以在單個頂點集上執行實例化繪圖語句(您的基本箭頭),使用統一的矩陣陣列進行轉換,並在頂點着色器中以類似方式查看這些矩陣。

    **根據您有多少個實例,數據可能不適合統一數組。所以你可以看看使用Uniform塊(它允許你存儲更多的數據而不是簡單的統一變量),如果這還不夠,GL_TEXTURE_BUFFER可以解決這個問題。 不要讓名稱欺騙你,GL_TEXTURE_BUFFER可以保存任意數據,而不僅僅是紋理數據。

    統一塊由https://www.khronos.org/opengl/wiki/Uniform_Buffer_Object

    支持紋理緩存,讀出https://www.khronos.org/opengl/wiki/Buffer_Texture