Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/406.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript three.js:纹理反馈循环(fbo乒乓球?)_Javascript_Opengl Es_Three.js_Fbo_Doublebuffered - Fatal编程技术网

Javascript three.js:纹理反馈循环(fbo乒乓球?)

Javascript three.js:纹理反馈循环(fbo乒乓球?),javascript,opengl-es,three.js,fbo,doublebuffered,Javascript,Opengl Es,Three.js,Fbo,Doublebuffered,我正在尝试实现我制作的hlsl着色器的web版本(使用VVV)-我对web编程相当陌生,但发现三个。js/webGL将是一个不错的选择 到目前为止,一切都正常,但现在我被困在最复杂的部分,这涉及到纹理反馈:renderpass的输出纹理是它在下一帧的输入纹理(在VVV中使用“frameDelay”函数很容易做到) 为了使这一点尽可能简单,让我们假设我想在每帧像素的红色分量中添加0.1(当然是模1.0)-因此红色值在0到1之间循环…我将如何在three.js中做到这一点? 我找不到任何实现类似功能

我正在尝试实现我制作的hlsl着色器的web版本(使用VVV)-我对web编程相当陌生,但发现三个。js/webGL将是一个不错的选择

到目前为止,一切都正常,但现在我被困在最复杂的部分,这涉及到纹理反馈:renderpass的输出纹理是它在下一帧的输入纹理(在VVV中使用“frameDelay”函数很容易做到)

为了使这一点尽可能简单,让我们假设我想在每帧像素的红色分量中添加0.1(当然是模1.0)-因此红色值在0到1之间循环…我将如何在three.js中做到这一点?

我找不到任何实现类似功能的例子;通过搜索web/此网站,我了解到使用“fbo乒乓球”或“双缓冲”通常是可能的(在GLSL中),但我没有运气实现这一点

因此,在发布所有代码之前,我想确认必要的步骤,非常感谢您的帮助:

-设置场景1+gemoetry -设置材质1:“红色计数器”着色器 (-设置场景2和材料2) -设置2 WebGLRenderTargets Texture1+Texture2

-将场景1渲染为纹理1,纹理2作为材质1的统一输入 (-将纹理1渲染到屏幕(使用场景2/material2))
-用Texture2交换Texture1并(重新)设置材质的制服1

我已经成功地在three.js中使用fbo纹理交换又名乒乓球进行了一个反馈循环,这(一如既往)带来了新的问题-对于任何试图实现纹理反馈的人,请看一下我发布代码的新位置(在渲染循环中,可以删除if语句,只保留else块中的内容)