我正在尝试将此(http://madebyevan.com/webgl-water/ )移植到三个。我想我已经接近了(现在只想要模拟,不关心焦散/折射)。我想让它与着色器一起使用以提高 GPU 性能。
这是我当前使用着色器的三个设置:http: //jsfiddle.net/EqLL9/2/ (第二个较小的平面用于调试 WebGLRenderTarget 中的当前内容)
我正在努力的是从 WebGLRenderTarget (在我的示例中为 rtTexture)读取数据。在示例中,您将看到围绕中心点的 4 个顶点向上移动。这是正确的(在 1 个模拟步骤之后),因为它以中心点作为唯一的位移点开始。
如果我可以从 rtTexture 读回数据并更新每一帧的数据纹理 (buf1),那么模拟应该会正确地设置动画。如何直接从 WebGLRenderTarget 读取数据?所有示例都演示了如何将数据发送到目标(渲染到目标),而不是从中读取。还是我做错了?有些东西告诉我,我必须使用多种纹理,并以某种方式来回交换,类似于 Evan 的做法。
TL;DR:在这样的调用之后,如何将数据从 WebGLRenderTarget 复制到 DataTexture:
// render to rtTexture
renderer.render( sceneRTT, cameraRTT, rtTexture, true );
编辑:可能在 jsfiddle /gero3/UyGD8/9/ 找到了解决方案,将进行调查并报告。