Я нахожусь в ситуации, когда у меня есть (n+1)x(n+1) текстура, прикрепленная к фреймбуферу. Моя идея состоит в том, чтобы обновить эту текстуру за 2 прохода.
Нарисуйте полноэкранный четырехугольник и используйте тест ножниц, чтобы замаскировать крайний 1 пиксель, поэтому я записываю n x n «внутренних» пикселей текстуры.
Второй проход, когда я рисую линейные примитивы для записи в крайние пиксели и обновляю ту же текстуру, используя результат первого прохода в качестве входных данных. Вычисления на этом шаге зависят от состояния внутренней (n x n) сетки, которая была рассчитана на первом проходе.
Во втором проходе я бы привязал результат первого прохода как для чтения, так и для записи. Я знаю, что в соответствии с OpenGL это приведет к неопределенному поведению, но, поскольку я никогда не читаю и не пишу одновременно из одних и тех же текселей, я думаю, что это может сработать.
Это хорошая идея сделать это так, или, возможно, лучше нарисовать полноэкранный четырехугольник, а в моем шейдере glsl сделать проверку, например:
if (gl_FragCoord.x == 0.5 || gl_FragCoord.x == n + 0.5){
...
}