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