Creando un filtro de desenfoque con un sombreador: ¿tiene acceso a píxeles adyacentes desde el sombreador de fragmentos?

Quiero crear un efecto de desenfoque utilizando un sombreador de fragmentos en OpenGL ES 2.0. El algoritmo que me interesa es simplemente un desenfoque promedio: agregar todos los píxeles adyacentes a mí mismo y dividir por 9 para normalizar.

Sin embargo, tengo 2 problemas:

1) ¿esto requiere que primero renderice a un framebuffer, luego cambie los objetivos de renderizado? O hay una forma más fáci

2) suponga que enlazo mi imagen "fuente" para desenfocar como textura 0, y estoy generando mi textura borrosa. ¿Cómo accedo a los píxeles que no son los que estoy tratando actualmente? El sombreador vertical me ha invocado para el píxel i, pero necesito acceder a los píxeles a mi alrededor. ¿Cómo? ¿Y cómo sé si soy un caso extremo (literalmente en el borde de la pantalla)

(3: ¿hay un algoritmo más adecuado para obtener un vidrio esmerilado borroso que se vea borroso)

Respuestas a la pregunta(2)

Su respuesta a la pregunta