glGetUniformLocation
和glGetAttribLocation
耗时吗?
哪种方式更好?
glGetAttribLocation
或glGetUniformLocation
?答案 0 :(得分:9)
哪种方式更好?
想一想。无论glGetUniformLocation
和glGetAttribLocation
有多快,它们都不能比仅提取变量更快。因此,如果您关注性能,请使用始终更快的方法。
答案 1 :(得分:6)
无论是在Android还是iPhone上,对于opengl表面,您将拥有以下方法: onSurfaceCreated和onSurfaceChanged , 养成在这两种方法中获取制服和属性的习惯。
你可以更快地渲染渲染的唯一方法(当你的代码跨越1000行代码时很快会成为你的优先考虑)只有 gluseprogram,glbindbuffer,纹理绑定以及onDrawFrame方法中的其他绑定,始终在onSurfaceCreated和onSurfaceChanged中缓存变量
答案 2 :(得分:3)
根据我的测试,获取这些位置的时间大约是单次glDrawElements
呼叫所需时间的100~200倍。这只是基于System.nanoTime()
的估算值,但我认为可以说,在初始化时将它们存储在变量中是值得的。