【发布时间】:2012-02-14 16:27:30
【问题描述】:
我想使用 webGL 着色器进行一些渲染,但我需要读取由着色器从前一帧生成的数据数组。我正在使用着色器写入纹理并使用相同的着色器读取该纹理。但是,这不起作用。着色器可以从最后一帧读取纹理并完美地写入帧缓冲区,但它不能再次写入纹理。我也尝试将纹理复制到其他图像单元,但它也不起作用。我想知道 webGL 的纹理是否有任何限制,你不能在同一个着色器中读/写?还是我做错了什么?
提前致谢, 易
【问题讨论】:
我想使用 webGL 着色器进行一些渲染,但我需要读取由着色器从前一帧生成的数据数组。我正在使用着色器写入纹理并使用相同的着色器读取该纹理。但是,这不起作用。着色器可以从最后一帧读取纹理并完美地写入帧缓冲区,但它不能再次写入纹理。我也尝试将纹理复制到其他图像单元,但它也不起作用。我想知道 webGL 的纹理是否有任何限制,你不能在同一个着色器中读/写?还是我做错了什么?
提前致谢, 易
【问题讨论】:
来自http://www.opengl.org/wiki/GLSL_:_common_mistakes 中的常见错误: “通常,您不应同时对纹理进行采样并渲染到同一纹理。这会给您带来不确定的行为。它可能适用于某些 GPU 和某些驱动程序版本,但不适用于其他版本。”
使用乒乓方法代替两个纹理(以下教程是 OpenGL,但在 WebGL 中使用该技术应该是直截了当的):
http://www.mathematik.tu-dortmund.de/~goeddeke/gpgpu/oldstuff/HelloPingPong.pdf
【讨论】: