是否glGetUniformLocation
耗时glGetAttribLocation
?
哪种方式更好?
- 打电话
glGetAttribLocation
还是glGetUniformLocation
每次我需要的时候? - 将位置存储在变量中并在需要时使用它们?
是否glGetUniformLocation
耗时glGetAttribLocation
?
哪种方式更好?
glGetAttribLocation
还是glGetUniformLocation
每次我需要的时候?哪种方式更好?
想想看。无论速度有多快glGetUniformLocation
,glGetAttribLocation
它们都不能比仅仅获取一个变量更快。因此,如果您担心性能,请使用总是更快的方法。
根据我的测试,获取这些位置所花费的时间大约是单次glDrawElements
调用所需时间的 100~200 倍。这只是基于 的估计System.nanoTime()
,但我认为值得在初始化时将它们存储在变量中。
无论是在 Android 还是 iPhone 上,对于一个 opengl 表面,你都会有类似的方法: onSurfaceCreated 和 onSurfaceChanged,养成在这两个方法中获取制服和属性的习惯。
使渲染更快的唯一方法(当您的代码跨越 1000 行代码时,这将很快成为您的优先事项)是在 onDrawFrame 方法中仅使用gluseprogram、glbindbuffer、纹理绑定和其他绑定,始终在 onSurfaceCreated 和 onSurfaceChanged 中缓存变量