refactor: abstract vertex buffer and index buffer