通過分析儀器給出的OpenGL API使用性能警告列表,我發現我們每幀產生幾個邏輯緩衝區負載 - 我們沒有清除緩衝區的地方,因爲繪圖調用完全覆蓋它。iOS OpenGL ES邏輯緩衝區負載
違反直覺,引入glClear()
調用這些情況只是將警告的位置移動到glClear()
調用。蘋果公司實施GL_EXT_discard_framebuffer
,但是單獨使用它也不足以阻止警告。 A glDiscardFramebufferEXT()
後跟glClear()
會停止警告,並會顯着提高性能,但glClear()
調用本身需要時間來清除緩衝區,這在我們的用例中是一個冗餘操作。
其他人也發現他們需要調用這兩個函數來避免重新加載成本或者我錯過了什麼?有沒有一種便宜的OpenGL提示框架緩衝區的內容即將被完全覆蓋,所以不需要重新加載到內存中?