«Размытие на месте» - это то, что может делать процессор, но при использовании графического процессора, который обычно работает параллельно, у вас должен быть другой буфер изображений в качестве цели рендеринга.
Даже с новыми шейдерами, чтение и записьиз / в тот же буфер может привести к повреждению, потому что они могут быть переупорядочены.Аналогичная проблема заключается в том, что ядро размытия по Гауссу, которое может обрабатывать размытие за один проход, зависит от соседних фрагментов, которые могли бы быть изменены ядром, примененным по их координате фрагмента.
Если у вас нетРасширение framebuffer_object, доступное для рендеринга в renderbuffers или даже текстуры (дополнительно требуется расширение render_texture), вы должны выполнить рендеринг в задний буфер, как в примере, а затем выполнить glReadPixels()
, чтобы получить изображение обратно для загрузки в исходный код.текстуру или сделайте быстрый и прямой glCopyTexImage2D()
(у OpenGL * 1.1 есть это).
Если цель рендеринга слишком мала, вы можете рендерить несколько плиток.