Webgl:破坏还是重用缓冲区/纹理



我是WebGL的新手。:(我知道顶点数据和纹理不应该经常更新,但当它们发生变化时,首选哪一个:-通过调用gl.deleteBuffer销毁以前的缓冲区(static_draw(并创建一个新的缓冲区。-重复使用相同的(首先是Dynamic_Draw(

(不,我没有使用任何库,只是直接使用webgl(

同样的规则适用于纹理吗?感谢

很有趣,我找不到现有的讨论。。或者只是错过了他们。

让我们首先看看我们何时想要删除资源:

由于OpenGL是C风格的API,因此假设用户的任务是管理内存,其中一部分还管理GPU内存。由于封装和其他设计原则,并不总是能够共享和重用资源,因此delete*功能的存在是为了释放所分配的资源。在javascript中,垃圾收集器确保超出范围的WebGL资源被标记为删除,就像调用delete*一样,导致delete*函数在WebGL的上下文中变得相当多余。

清除后,您总是希望在可能的情况下更新资源,因为您还必须重做已经对它们进行的所有设置,例如设置顶点属性指针或纹理的过滤和包装模式。

最新更新