E.g. to have a simple way of modifying particles using a pixel shader:
Texture t( 1000x1000, correctFormat );
initParticlePositions( t )
Mesh m( correctFormat );
loop{
// update positions using a shader
Texture t2 = renderFullscreenQuadToTexture( t, animationShader )
// attach new coordinates to mesh
swap( m._accessVBOBuffer(), t2._accessBufferObject() )
// render particles to screen
...
m.display()
...
// move vertexData back into the buffer.
swap( m._accessVBOBuffer(), t2._accessBufferObject() )
}