title: Types of Cuda & OpenGL interop
body: <p>I'm working on a 3D simulation (2D for now), I'm using CUDA for the computation and OpenGL for the rendering. My questions concerns the interoperability between CUDA and OpenGL.
  As far as I'm seeing it there are two general approaches to do this:</p>
  
  <p>Number one would be to use a Pixel Buffer Object (or Vertex Buffer Object) which is mapped to the CUDA Global Memory and afterwards copied to a OpenGL texture. This is said to be a very fast approach.</p>
  
  <p>Number two would be to copy a texture Object directly to the CUDA Texture Memory. Which would also be very nice since then I could use all the Texture Memory features like Texture Caching and so on.</p>
  
  <p>Now, could someone explain to me what the general differences between those two approaches are? And for what kind of cases each of them are normally used?</p>