将WebGL非连续线渲染为单个对象

时间:2013-06-24 04:52:23

标签: javascript coffeescript three.js webgl

我有多个WebGL线要渲染,它们都具有相同的渲染风格。因此,对于性能,我想在一次绘制调用中将它们全部渲染为单个对象。

但问题是这些线路并非全部相互连接。

请参阅此处的示例:http://jsfiddle.net/b6jgS/6/

rings

正如你可以看到戒指连接,但我不希望它们。然而,我仍然想在一次平局电话中画出它们。

相关代码是这样的,它只是为某些环生成一些几何图形:

# Pardon the coffeescript!
ringsGeom =  new THREE.Geometry()
for u in [-2..2]
  for v in [0..100]
    ringsGeom.vertices.push new THREE.Vector3(
      Math.sin(v/100 * 2 * Math.PI)
      Math.cos(v/100 * 2 * Math.PI)
      u
    )


rings = new THREE.Line(
  ringsGeom
  new THREE.LineBasicMaterial(
    color: 0xffff00
    linewidth: 1
  )
)
scene.add rings

如何让单个对象绘制多条谨慎的断开线?

1 个答案:

答案 0 :(得分:2)

您将几何体构造为表示各个线段的点对数组,然后像这样创建线条:

var line = new THREE.Line( geometry, material, THREE.LinePieces );

有关示例,请参阅GridHelper.js

three.js r.58

P.S。 three.js包含requestAnimationFrame()垫片。您不需要自己包含它。