是否glGetUniformLocation
和glGetAttribLocation
耗時?OpenGL - 我應該存儲屬性/統一位置嗎?
哪種方式更好?
- 致電
glGetAttribLocation
或glGetUniformLocation
每次我需要它嗎? - 將存儲位置保存在可變物中,並在需要時使用它們?
是否glGetUniformLocation
和glGetAttribLocation
耗時?OpenGL - 我應該存儲屬性/統一位置嗎?
哪種方式更好?
glGetAttribLocation
或glGetUniformLocation
每次我需要它嗎?無論是在Android或iPhone,對於OpenGL的表面,你將有類似的方法: onSurfaceCreated和onSurfaceChanged, 進入取校服的習慣,而這2種方法的屬性在這裏。
可以使渲染速度更快(這很快就會成爲你的優先級,當你的代碼跨越1000行代碼)的唯一方法是僅具有gluseprogram,glbindbuffer,質地結合和onDrawFrame方法內的其他結合,始終緩存裏面onSurfaceCreated變量和onSurfaceChanged
很好的回答。內部着色器中使用的屬性,制服和其他變量應緩存在init()方法中,而不是draw_Frame()方法。 – divyaSharma 2014-08-29 08:04:14
哪種方式更好?
想想吧。無論glGetUniformLocation
和glGetAttribLocation
的速度有多快,他們不能不僅僅是取出一個變量更快。所以如果你關心性能,那麼使用總是更快的方法。
根據我的測試,取這樣的位置了約100〜200倍,它採用單個glDrawElements
通話的時間量。這只是基於System.nanoTime()
的估計值,但我認爲應該將它們存儲在初始化變量中值得保存。
這是一個更好的答案。 (我希望數據當然是正確的,但我可以想象它是,因爲獲取屬性是同步的,並且繪圖不是)。 – 2017-09-23 16:12:05
感謝給予好評:d – GLES 2013-01-26 20:52:56