title: How to input many vertex to geometry shader, Buffers and shaders pass data to each other?
body: <p>I want do a bokeh app on Android, use OpenGL ES 3.0, I read this article <a href="https://therealmjp.github.io/posts/bokeh/" rel="nofollow noreferrer">How To Fake Bokeh</a>:</p>
  <blockquote>
  <ol>
  <li><p>Do a full-res bokeh point extraction pass. For each pixel, compute the average brightness of the 5x5 block surrounding the pixel and
  compare it with the brightness of the current pixel. If the pixel
  brightness minus the average brightness is above a certain threshold
  and the CoC size is above a certain threshold, <strong>push the pixel
  position + color + CoC size onto an append buffer and output a value
  of 0.0 as the pixel color</strong>. If it doesn’t pass the threshold, output
  the input color.</p>
  </li>
  <li><p>Do a regular DOF pass. I implemented two versions: one that does a
  full-res disc-based blur in two passes using 16 samples on a Poisson
  disc with radius == CoC size, and one that does ye olde 1/4-res
  Gaussian blur (with edge bleeding reduction) and a full-screen lerp
  between the un-blurred and blurred version.</p>
  </li>
  <li><p><strong>Copy the embedded count from the append buffer to another buffer,
  and use the second buffer as an indirect arguments buffer for a
  DrawInstancedIndirect call. Basically this lets us draw however many
  points are in the buffer, without having to copy anything back to
  the CPU. The vertex shader for each point then samples the
  position/color/CoC size from the append buffer and passes it to the
  geometry shader, which expands the point into a quad with size equal
  to the CoC size</strong>. The pixel shader then samples from a texture
  containing the aperture shape, and additively blends the result into
  an empty render target. The render target can be either full res, or
  1/4 res to save on bandwidth.</p>
  </li>
  </ol>
  </blockquote>
  <p>Because I don't know much about OpengL ES, I don't know how to implement above bold, How does Java push the results of the fragment shader to the buffer and the contents of the buffer to the geometry shader? Can you give me some demo or example?</p>