diff --git a/gltriangles.go b/gltriangles.go index 7d985fd6f42e50b29940c39bad114d9bdf43e924..1e55e4a2272f31882f3ad2ab6471176336f4facf 100644 --- a/gltriangles.go +++ b/gltriangles.go @@ -58,6 +58,26 @@ func (gt *glTriangles) resize(len int) { } func (gt *glTriangles) updateData(offset int, t Triangles) { + // TrianglesData short path + if t, ok := t.(*TrianglesData); ok { + for i := offset; i < offset+t.Len(); i++ { + var ( + px, py = (*t)[i].Position.XY() + col = (*t)[i].Color + tx, ty = (*t)[i].Texture.XY() + ) + gt.data[i*gt.vs.Stride()+0] = float32(px) + gt.data[i*gt.vs.Stride()+1] = float32(py) + gt.data[i*gt.vs.Stride()+2] = float32(col.R) + gt.data[i*gt.vs.Stride()+3] = float32(col.G) + gt.data[i*gt.vs.Stride()+4] = float32(col.B) + gt.data[i*gt.vs.Stride()+5] = float32(col.A) + gt.data[i*gt.vs.Stride()+6] = float32(tx) + gt.data[i*gt.vs.Stride()+7] = float32(ty) + } + return + } + if t, ok := t.(TrianglesPosition); ok { for i := offset; i < offset+t.Len(); i++ { px, py := t.Position(i).XY()