簡體   English   中英

iOS OpenGL ES邏輯緩沖區加載

[英]iOS OpenGL ES Logical Buffer Loads

通過Analyze儀器給出的OpenGL API使用性能警告列表,我發現我們每幀生成幾個邏輯緩沖區加載 - 我們沒有清除緩沖區的地方因為繪制調用完全覆蓋它。

與直覺glClear()為這些情況引入glClear()調用只是將警告的位置移動到glClear()調用。 Apple實現了GL_EXT_discard_framebuffer ,但是GL_EXT_discard_framebuffer使用它也不足以停止警告。 glDiscardFramebufferEXT()后跟glClear()會停止警告並顯着提高性能,但glClear()調用本身需要時間來清除緩沖區,在我們的用例中這是一個冗余操作。

其他人是否也發現他們需要調用這兩個函數以避免重新加載成本或者我錯過了什么? 是否有一種廉價的方式暗示OpenGL,幀緩沖的內容即將被完全覆蓋,因此不需要重新加載到tile內存中?

文檔暗示全屏glClear()設置了一些神奇的標志,這與我在調試相同問題時看到的一致。 我不擔心做一個冗余的glClear(),因為這是我能說的預期用法模式。

更新:您可能也遇到了我遇到的錯誤,我清除了顏色和深度緩沖區,但忘記在調用glClear()之前設置glDepthMask(GL_TRUE)。 這導致了邏輯緩沖區加載警告。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM