@@ -210,6 +210,27 @@ export class PrimitiveStream {
210210
211211 return primitive ;
212212 }
213+
214+ finishPrimitiveGPU ( renderer ) {
215+ if ( ! this . _vertexOffset ) {
216+ throw new Error ( `Attempted to call finishPrimitiveGPU() before creating any geometry.` ) ;
217+ }
218+
219+ let vertexBuffer = renderer . createRenderBuffer ( new Float32Array ( this . _vertices ) , 'vertex' ) ;
220+ let indexBuffer = renderer . createRenderBuffer ( new Uint16Array ( this . _indices ) , 'index' ) ;
221+
222+ let attribs = [
223+ new PrimitiveAttribute ( 'POSITION' , vertexBuffer , 3 , 5126 , 32 , 0 ) ,
224+ new PrimitiveAttribute ( 'TEXCOORD_0' , vertexBuffer , 2 , 5126 , 32 , 12 ) ,
225+ new PrimitiveAttribute ( 'NORMAL' , vertexBuffer , 3 , 5126 , 32 , 20 ) ,
226+ ] ;
227+
228+ let primitive = new Primitive ( attribs , this . _indices . length ) ;
229+ primitive . setIndexBuffer ( indexBuffer ) ;
230+ primitive . setBounds ( this . _min , this . _max ) ;
231+
232+ return primitive ;
233+ }
213234}
214235
215236export class GeometryBuilderBase {
@@ -233,6 +254,10 @@ export class GeometryBuilderBase {
233254 return this . _stream . finishPrimitive ( renderer ) ;
234255 }
235256
257+ finishPrimitiveGPU ( renderer ) {
258+ return this . _stream . finishPrimitiveGPU ( renderer ) ;
259+ }
260+
236261 clear ( ) {
237262 this . _stream . clear ( ) ;
238263 }
0 commit comments