调用是如何在three.js中工作的?
how do drawcalls work in three.js?
我有许多潜在的长折线(或短,顶点数是高度不稳定的)要显示,所以我正在考虑将它们打包在一堆固定大小(假设10000个顶点)位置BufferAttribute
中,并发送一个drawcall
每个折线。如果一条折线越过10000个极限边界,我可以把它分割,重复前一个缓冲区的最后一个顶点作为新缓冲区的第一个顶点,并继续使用多个THREE.Line
对象。
我的理解是drawcall
是由addGroup()
在最近的three.js中定义的,但我很难理解与setDrawRange()
的链接。
我在这个例子中用addGroup()
代替了setDrawRange()
: http://jsfiddle.net/1v00pxx5/,它不再动画了(用three.js动态地画一条线)。
我替换了:
line.geometry.setDrawRange( 0, drawCount );
line.geometry.clearGroups();
line.geometry.addGroup( 0, drawCount );
看起来我误解了一些东西,因为它呈现了所有内容,而不仅仅是我定义的单个组。
这是我疯狂的上下文:我正在构建一个chrome封装的应用程序访问USB, webgl和USB都必须在主JS线程上,但有时当将几何图形上传到webgl时,它会饿死USB,我不能使用更大的USB缓冲区,因为USB电缆的另一边的设备没有足够的内存。
BufferGeometry.groups
现在用于支持多种材料(以前的MultiMaterial
或MeshFaceMaterial
)。例如,
geometry.clearGroups();
geometry.addGroup( start1, count1, 0 ); // materialIndex 0
geometry.addGroup( start2, count2, 1 ); // materialIndex 1
var mesh = new THREE.Mesh( geometry, materialsArray );
设置geometry.drawRange
将渲染几何的子范围。
geometry.setDrawRange( start, count );
var material = new THREE.LineBasicMaterial( { color: 0xff0000 } );
var line = new THREE.Line( geometry, material );
小提琴:http://jsfiddle.net/w67tzfhx/
three.js r.91
相关文章:
- 谷歌地图不是以HTML显示,而是在JS Fiddle上工作
- JS可以在Chrome中工作,但不能在Firefox中工作
- JS,用于播放提示音以通知未按预期工作
- JS在firefox中无法正常工作
- 为什么不是'我的JS滑块正在工作
- 谷歌地图Api和JS代码不工作
- 从js引擎的角度来看闭包和构造函数是如何工作的
- 当加载几个js文件时,defer属性应该如何工作
- 这和javascript中的闭包(在纸上工作.js)
- 嘶嘶声中的正则表达式如何工作.js
- 第一个现实生活-工作JS脚本.我怎样才能使它更有效率
- 简单事件侦听器不工作-JS
- 为什么不't工作js调试智能
- 字符串模板不工作- js
- 多维数组indexOf不工作js
- 原型“this"不工作(JS)
- 不能让Autobahn的例子工作(js和python)
- 为什么这个选择器不能工作?JS
- 为什么这个脚本不能工作?(JS)
- Spring MVC 和 Bootstrap - css,img 工作.js不工作