我正在尝试将GL调用包装在外部函数和类中。因此,这提出了为我的着色器设置制服的问题:glGetUniformLocation是一个缓慢的操作吗?如果是这样,将使用std :: map存储由字符串中的制服名称索引的统一索引更慢还是更快?我试图避免静态编码(即使用宏等)
答案 0 :(得分:4)
编译/加载着色器时只调用glGetUniformLocation
一次,然后自己缓存结果;在框架中使用它会导致停顿,因为大多数驱动程序不会将其作为热路径实现,并且会在执行之前等待任何排队的管道操作完成(这适用于大多数glGet
函数,从不调用这些函数,打电话给他们并自己缓存结果。