WebGL Texture для чтения / записи одновременно - PullRequest
1 голос
/ 14 февраля 2012

Я хочу сделать рендеринг с помощью шейдера WebGL, но мне нужно прочитать массив данных, которые были сгенерированы шейдером из предыдущего кадра. Я делаю это с помощью шейдера для записи в текстуру и чтения той же шейдерной текстуры. Тем не менее, это не работает. Шейдер может прочитать текстуру из последнего кадра и отлично записать в буфер кадра, но он просто не может снова записать в текстуру. Я также пытался скопировать текстуру в другой модуль изображения, но он тоже не работает. Мне интересно, есть ли какие-либо ограничения на текстуру webGL, что вы не можете делать чтение / запись в одном и том же шейдере? или я что-то не так сделал?

Спасибо заранее, Yi

1 Ответ

6 голосов
/ 14 февраля 2012

Из распространенных ошибок в http://www.opengl.org/wiki/GLSL_:_common_mistakes: "Как правило, вы не должны сэмплировать текстуру и визуализировать эту же текстуру одновременно. Это даст вам неопределенное поведение. Это может работать на некоторых графических процессорах и на некоторыхверсия драйвера, но не другие. "

Вместо двух текстур используйте подход пинг-понга (следующий урок - OpenGL, но методика в WebGL должна быть прямой):

http://www.mathematik.tu -dortmund.de / ~ goeddeke / GPGPU / oldstuff / HelloPingPong.pdf

...