2013-07-04 47 views
2

我想在Android上構建一個OpenGL ES 2.0渲染系統。 我有一個FloatBuffer,我把所有的頂點數據。目前,我只是分配大量的字節,並忽略繪圖調用,如果他們將溢出緩衝區的大小。 有沒有辦法動態調整緩衝區大小?如果我在每次渲染之後釋放緩衝區並重新分配緩衝區,我想這會很慢。Android OpenGL動態調整大小FloatBuffer?

回答

1

有沒有辦法來動態調整緩衝區?

編號您目前的方法看起來不錯。您可能需要擴展它,如果數據不適合當前緩衝區,則創建一個新的更大的數據並填充新數據。

不幸的是,OpenGL-ES沒有函數as OpenGL-3 does它允許您在緩衝區對象之間複製數據。使用它可以在完全停留在GPU內存的BO之間進行復制,因此您只需更新缺少的部分。

如果我只是釋放緩衝區並在每次渲染後重新分配緩衝區,我想這會很慢。

它肯定不會提高性能,沒錯。根據您的實際實施情況,它可能會對性能產生巨大影響,這是正確的。所以我建議不要這樣做。

2

我其實還在學習高性能OpenGL渲染的過程中,但切換到頂點緩衝區對象通常會允許儘可能高的執行時間。最後你必須嘗試並測試。

這裏進一步閱讀一些消息來源:

  1. Android Lesson Seven: An Introduction to Vertex Buffer Objects (VBOs)

    這是罰款時,沒有大量的數據傳輸,但作爲我們 場景得到更多的對象更加複雜和三角形,這可能會增加CPU和內存使用的額外成本。我們能做些什麼 這個?我們可以使用頂點緩衝對象。而不是每幀傳輸來自客戶端內存的頂點信息,信息將被傳輸一次,然後將從此圖形 內存緩存完成渲染。

  2. OpenGL Vertex Buffer Object (VBO) -> Updating VBO

  3. Vertex Specification Best Practices -> Dynamic VBO

+0

謝謝你的鏈接,但他們沒有太多的解決我的問題。 :/ – chimitos