首页 > 开发 > HTML5 > 正文

浅谈three.js中的needsUpdate的应用

2024-09-05 07:19:51
字体:
来源:转载
供稿:网友
three.js里的很多对象都有一个needsUpdate属性,文档中很少有写(不过three.js的文档本来就没多少,很多问题还得靠github上的issues),网上各式各样的教程中也不太会写这个,因为对于简单的入门程序而言,是用不到这个属性的。
那么这个属性到底是用来干嘛的,一言以敝之就是告诉renderer这一帧我该更新缓存了,尽管作为一个标志位用途很简单,但是因为要知道为什么要更新缓存,要更新哪些缓存,所以还是有必要好好了解下的。
为什么需要needsUpdate
首先还是来看下为什么需要缓存,缓存的存在一般都是为了减少数据传输的次数,从而减少程序在数据传输上消耗的时间,这里也是,一般一个物体(Mesh)要最后能够成功显示到屏幕前是很不容易的,需要转三次战场
首先是通过程序将所有的顶点数据和纹理数据从本地磁盘读取到内存当中。
然后程序在内存中做了适当的处理之后就要将那些需要绘制到屏幕前的物体的顶点数据和纹理数据传输到显存当中。
最后在每一帧渲染的时候将显存中的顶点数据和纹理数据flush到GPU中进行装配,绘制。
根据那个金字塔式的数据传输模型,第一步显然是最慢的,如果是在WebGL这样的环境中通过网络来传输,那就更加慢了,其次是从内存传输到显存的时间,这个后面会做一个简单的数据测试。
然后是这三步操作的使用频率,对于小场景来说,第一步是一次性的,就是每次初始化程序的时候就会将一个场景的所有数据都加载到内存中了,对于大场景来说,可能会做一些异步加载,但是目前暂时不在我们考虑的问题当中。 对于第二步的频率,应该是这次要讲的最主要的,首先写个简单的程序测试一下做这一步传输所带来的消耗

复制代码
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表