David, what’s fixed by that patch ?
I just found that filling a vertex data , as advertised in the manual, is SLOWER than .
By column is almost 31% faster.
from pandac.PandaModules import *
import direct.directbase.DirectStart
VCTarray = GeomVertexArrayFormat()
VCTarray.addColumn(InternalName.make('vertex'), 3, Geom.NTFloat32, Geom.CPoint)
VCTarray.addColumn(InternalName.make('color'), 3, Geom.NTFloat32, Geom.CColor)
VCTarray.addColumn(InternalName.make('texcoord'), 2, Geom.NTFloat32, Geom.CTexcoord)
VCTformat = GeomVertexFormat()
VCTformat.addArray(VCTarray)
VCTVtxFormat = GeomVertexFormat.registerFormat(VCTformat)
vdata = GeomVertexData('textline', VCTVtxFormat, Geom.UHStatic)
prim = GeomTriangles(Geom.UHStatic)
vW = GeomVertexWriter(vdata, 'vertex')
cW = GeomVertexWriter(vdata, 'color')
tW = GeomVertexWriter(vdata, 'texcoord')
iterRange=range(80000)
idx4=0
startT=globalClock.getRealTime()
if 0:
'''____AS SLOW AS SUGGESTED IN THE MANUAL____
elapsed : 8.00554908868
'''
for i in iterRange:
vW.addData3f(1,1,1)
cW.addData3f(1,1,1)
tW.addData2f(1,1)
vW.addData3f(2,2,2)
cW.addData3f(2,2,2)
tW.addData2f(2,2)
vW.addData3f(3,3,3)
cW.addData3f(3,3,3)
tW.addData2f(3,3)
vW.addData3f(4,4,4)
cW.addData3f(4,4,4)
tW.addData2f(4,4)
prim.addConsecutiveVertices(idx4,3)
prim.addVertices(idx4+3,idx4+2,idx4+1)
idx4+=4
else:
'''____THIS IS --> 30.9% <-- FASTER____
elapsed : 5.52589131891
'''
for i in iterRange:
vW.addData3f(1,1,1)
vW.addData3f(2,2,2)
vW.addData3f(3,3,3)
vW.addData3f(4,4,4)
for i in iterRange:
cW.addData3f(1,1,1)
cW.addData3f(2,2,2)
cW.addData3f(3,3,3)
cW.addData3f(4,4,4)
for i in iterRange:
tW.addData2f(1,1)
tW.addData2f(2,2)
tW.addData2f(3,3)
tW.addData2f(4,4)
prim.addConsecutiveVertices(idx4,3)
prim.addVertices(idx4+3,idx4+2,idx4+1)
idx4+=4
prim.closePrimitive()
geom = Geom(vdata)
geom.addPrimitive(prim)
print 'elapsed :',globalClock.getRealTime()-startT