Adr*_*ley 7 textures canvas webgl compute-shader
我想要:
<canvas>标记.<canvas>在下一个渲染过程中使用内容(情况我渲染输出)作为纹理.我正在尝试制作计算着色器,并且需要在每个渲染过程中携带每像素值(片段).一个简单的例子是在每次渲染调用时递增像素的蓝色值.
即
pass 1: b=1
pass 2: b=2
pass 2: b=3
etc.
Run Code Online (Sandbox Code Playgroud)
这种着色器循环甚至可能吗?
有没有更好的方法在视频存储器中保持"进位"纹理以进行多通道处理(与标准着色器内多路处理不同,均匀值必须在通道之间改变)?
gma*_*man 10
简短的回答是你不能
您当前无法将画布作为纹理访问.其他一些解决方案
将画布复制到纹理
gl.texImage2D(gl.TEXTURE_2D, 0, gl.RGBA, gl.RGBA, gl.UNSIGNED_BYTE, gl.canvas);
Run Code Online (Sandbox Code Playgroud)
将画布的当前内容复制到textxure中.
通过将其附加到帧缓冲区来渲染到您自己的纹理.
在这种情况下,您将渲染到一个纹理,该纹理被设置为帧缓冲的附件,然后将该纹理渲染到画布(假设您想要查看结果而不是仅仅进行数学运算).这里和这里有一个例子.