Maybe on the `Buffer` we should have:

    def asVertex(vertexCount: Int, attributeCount: Int): VertexBuffer

And the users have to instantiate it only once themselves to avoid allocating an object each time in the render loop.