8

是否glGetUniformLocation耗时glGetAttribLocation

哪种方式更好?

  1. 打电话glGetAttribLocation还是glGetUniformLocation每次我需要的时候?
  2. 将位置存储在变量中并在需要时使用它们?
4

3 回答 3

9

哪种方式更好?

想想看。无论速度有多快glGetUniformLocationglGetAttribLocation它们都不能比仅仅获取一个变量更快。因此,如果您担心性能,请使用总是更快的方法。

于 2012-08-03T22:17:28.853 回答
8

根据我的测试,获取这些位置所花费的时间大约是单次glDrawElements调用所需时间的 100~200 倍。这只是基于 的估计System.nanoTime(),但我认为值得在初始化时将它们存储在变量中。

于 2015-09-26T07:57:59.650 回答
5

无论是在 Android 还是 iPhone 上,对于一个 opengl 表面,你都会有类似的方法: onSurfaceCreated 和 onSurfaceChanged,养成在这两个方法中获取制服和属性的习惯。

使渲染更快的唯一方法(当您的代码跨越 1000 行代码时,这将很快成为您的优先事项)是在 onDrawFrame 方法中仅使用gluseprogram、glbindbuffer、纹理绑定和其他绑定,始终在 onSurfaceCreated 和 onSurfaceChanged 中缓存变量

于 2012-08-05T15:19:13.107 回答