【发布时间】:2012-08-03 20:33:12
【问题描述】:
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 中缓存变量
【讨论】: