【问题标题】:Retaining data across GLSL shader calls跨 GLSL 着色器调用保留数据
【发布时间】:2016-09-02 11:25:03
【问题描述】:

我正在努力理解一个概念,我希望有人可以让我明白这一点。

我正在尝试构建 GLSL 模拟,以在每次绘制调用中保留数据,但我希望这一切都在 GPU 上完成,这样它既快速又高效。我知道您通过将您想要的数据渲染到纹理然后从该纹理中读取来做到这一点。

我有一个简单的演示,其中我有一个渲染目标,我正在向其绘制颜色,并且每次绘制调用我想通过读取当前颜色并将颜色值增加 0.01 并将其添加到它,但是我得到错误:

Source and destination textures of the draw are the same.

这让我觉得我完全误解了这个概念,因为我觉得你不能将当前的渲染目标作为纹理传递。谁能帮我解决这个问题,因为我现在很困惑

【问题讨论】:

    标签: textures webgl retain rendertarget


    【解决方案1】:

    嗯,很明显你在做什么,读取和写入相同的纹理。只需创建两个纹理,一个将设置为渲染目标,第二个用于读取。因此,您读取 tex1,写入 tex2,然后在下一帧交换它们的用法,因此您写入 tex1 并从 tex2 读取。只需在框架上交替使用它们即可。

    webGL 不支持同时读/写。只有最新版本的 OpenGL 具有可以以这种方式使用的 Image 对象,但 webGL 尚不支持它们,这就是为什么您必须使用两个纹理并来回乒乓球,交替使用它们的原因。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-01-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-11-30
      • 2012-04-04
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多