Dynamic 渲染后向three.js网格添加几何体

Dynamic 渲染后向three.js网格添加几何体,dynamic,geometry,three.js,mesh,Dynamic,Geometry,Three.js,Mesh,我正在使用一个3.Geometry实例创建一个网格,然后动态填充几何体的顶点和面数组。几何体经过迭代优化,在每次迭代时添加额外的顶点和面。如果我在将网格添加到场景之前细化几何体,它将正确渲染。但是,如果将网格添加到场景中并进行渲染,然后对其进行修改,则仅显示第一次渲染中包含的几何体的初始N个面。对这些面使用的顶点位置所做的更改将得到尊重,但仅渲染这些N个面 几何体实例被标记为dynamic=true,每次修改几何体后,我都会设置verticesNeedUpdate、elementsnedupda

我正在使用一个3.Geometry实例创建一个网格,然后动态填充几何体的
顶点
数组。几何体经过迭代优化,在每次迭代时添加额外的顶点和面。如果我在将网格添加到场景之前细化几何体,它将正确渲染。但是,如果将网格添加到场景中并进行渲染,然后对其进行修改,则仅显示第一次渲染中包含的几何体的初始N个面。对这些面使用的顶点位置所做的更改将得到尊重,但仅渲染这些N个面

几何体实例被标记为
dynamic=true
,每次修改几何体后,我都会设置
verticesNeedUpdate
elementsnedupdate
buffersnedupdate
。我还尝试设置所有其他“脏”标志,尽管我只希望设置这三个标志(即使这样,我也不确定是否需要BuffersNedupdate)

据我所见,几何体的
geometryGroup
geometryGroupList
属性是从第一次渲染网格时存在的面构建和填充的,但没有重建以包括随后添加的面


我做错了什么?

我假设您使用的是
WebGLRenderer

正如three.js wiki文章中所述,您只能更新缓冲区的内容,不能调整缓冲区的大小


three.js r.59

啊,我没有看到那页,谢谢。所以基本上这是不受支持的。在这种情况下,我不能预先分配缓冲区,因为我事先不知道它们需要多大。此时,我正在从场景中移除网格,并在每个渲染上实例化一个新的网格+几何体,这很有效,但可能不是很有效。。。我必须考虑一种方法,在块中预先分配,并且只在传递预先分配的缓冲区大小时重新创建几何体,或者其他什么。嘿,我正在做类似的事情。我在想,你有没有想过?谢谢@lharper71@C.温多尔夫相关答案和类似答案可能会有所帮助。谢谢@WestLangley!非常有用的答案