javascript - 反馈循环 THREE.js

标签 javascript three.js shader pixel-shader

我通过执行以下操作实现了反馈循环(后备缓冲区):

function render()   
{ 
    renderer.setRenderTarget(BufferA);       
    renderer.render(BufferAScene, camera);
    renderer.setRenderTarget(null); 
    renderer.clear(); let temp = BufferA; 
    BufferA = BufferAFeedBack; 
    BufferAFeedBack = temp; 
    ...
 }

虽然它有效,但它会发出警告,表明纹理目标和帧缓冲区之间存在反馈循环。我想这就是为什么所有着色器在移动设备上都不可见的原因。 有没有更有效的方法在 THREE.js 中交换 FBO? 我知道 OpenGL 并且已经实现了同样的事情,所以我想我可以在 vanilla WebGL 中实现该应用程序,但我不想从头开始再次编写主机应用程序! 虽然抽象层似乎让我重复了普通 WebGL 中不需要的对象,但有什么建议吗?

最佳答案

摘自 gman 的评论我做了一些调整,效果很好:

function render()
{

    BufferAUniforms.iChannel0.value = BufferAFeedBack.texture;
    ImageUniforms.iChannel0.value = BufferA.texture;

    renderer.setRenderTarget(BufferA);
    renderer.render(BufferAScene, camera);

    renderer.setRenderTarget(null);
    renderer.clear();

    let temp = BufferA;
    BufferA = BufferAFeedBack;
    BufferAFeedBack = temp;

    renderer.render(BufferImageScene, camera);

}

关于javascript - 反馈循环 THREE.js,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57508011/

相关文章:

javascript - 在谷歌自动完成更改设置值到公共(public)对象

three.js - Three.js 的导出 Blender 模型中的 Material 不起作用

java - 添加灯光后,环境光变得更亮(OpenGL、法线贴图)

python - 如何在 Kivy 中将纹理绑定(bind)到 3D 网格?

javascript - js中未定义的路径名

javascript - 使用 Node 创建的图像响应 GET 请求

javascript - 尝试在 Three.js 中为立方体着色

javascript - 三、TrackballControls 旋转中心

shader - 使用着色器函数从变量中删除负数

javascript - 有效的 javascript 对象属性名称