found this http://msdn.microsoft.com/en-us/library/bb219800(v=VS.85).aspx#Sharing_Resources
turns out when you create a surface you just have to give it a yet unused handle and put it in D3DPOOL_DEFAULT memory class. opening happens with the same function using an existing handle. if that handle is NULL the surface is private. i will test it in vvvv with textures. if it really works this simple the only task will be creating an ffgl plugin (for flexibility) what converts a dx surface to an opengl one or converts an opengl surface to a shared dx surface and find a vendor-independent solution for that.