diff --git a/pixelgl/vertex.go b/pixelgl/vertex.go index 1f93a490229647b3da9eb593543bdaac2292d194..ec0d5353bd5aa382a2e8e3d80a8bfc4368a7016c 100644 --- a/pixelgl/vertex.go +++ b/pixelgl/vertex.go @@ -180,6 +180,17 @@ func (va *VertexArray) Draw() { va.End() } +// Data returns a copy of data inside a vertex array (actually it's vertex buffer). +func (va *VertexArray) Data() []float64 { + data := make([]float64, va.count*va.format.Size()) + Do(func() { + gl.BindBuffer(gl.ARRAY_BUFFER, va.vbo) + gl.GetBufferSubData(gl.ARRAY_BUFFER, 0, 8*len(data), gl.Ptr(data)) + gl.BindBuffer(gl.ARRAY_BUFFER, 0) + }) + return data +} + // UpdateData overwrites the current vertex array data starting at the index offset. // // Offset is not a number of bytes, instead, it's an index in the array.