WebGL中的失真/水

WebGL中的失真/水,webgl,distortion,Webgl,Distortion,我对WebGL和OpenGL都比较陌生,但最近几天我已经把大部分时间都用在为它编写一个小游戏上了。然而,当我想要实现热浪之类的东西,或者任何形式的变形时,我被卡住了 现在,我可以使用片段着色器生成纹理涟漪,但在扭曲对象后面的内容时,我觉得我缺少了一些东西。是否有任何方法可以获取已在片段着色器中渲染的像素的颜色 我已经尝试渲染到纹理,然后让对象的纹理成为纹理,但是如果选择将场景渲染到纹理,则无法将其渲染到屏幕。除此之外,如果要渲染到纹理,该纹理必须是二的幂(许多屏幕分辨率不太适合) 任何帮助都将不

我对WebGL和OpenGL都比较陌生,但最近几天我已经把大部分时间都用在为它编写一个小游戏上了。然而,当我想要实现热浪之类的东西,或者任何形式的变形时,我被卡住了

现在,我可以使用片段着色器生成纹理涟漪,但在扭曲对象后面的内容时,我觉得我缺少了一些东西。是否有任何方法可以获取已在片段着色器中渲染的像素的颜色

我已经尝试渲染到纹理,然后让对象的纹理成为纹理,但是如果选择将场景渲染到纹理,则无法将其渲染到屏幕。除此之外,如果要渲染到纹理,该纹理必须是二的幂(许多屏幕分辨率不太适合)


任何帮助都将不胜感激。

您必须渲染到纹理,并在扭曲纹理的同时将该纹理绘制到屏幕上。此外,在OpenGL ES 2.0(WebGL使用的图形API)中,不要求帧缓冲区对象的大小必须为2倍。但是“两个纹理的非幂”不能有mipmapping或纹理包装。

您必须渲染到一个纹理,并在扭曲它的同时将该纹理绘制到屏幕上。此外,在OpenGL ES 2.0(WebGL使用的图形API)中,不要求帧缓冲区对象的大小必须为2倍。但是两种纹理的非幂不能有mipmapping或纹理包装。

我相信你可以。可能是一个很好的方法,以涟漪小面积,但可能不是gpu加速。

我相信你可以。可能是一个很好的方法,可以使一个小区域波动,但可能不是gpu加速的。

Hm,我不认为有一种方法可以只绘制帧缓冲区,我已经将其余元素绘制到屏幕上,是吗?我的意思是,现在我假设我只需要做一个正方形,上面有帧缓冲区作为纹理,这样它就可以被渲染了。但是如果有什么方法,我可以直接将帧缓冲区应用到屏幕上,这样会更好。不,你必须用一个带纹理的四边形在屏幕上手动绘制它。但这项练习的目的不是要扭曲它吗?是的,不是的。我只是试图扭曲非常小的区域。(即火焰上方的失真)因此没有必要扭曲整个屏幕。嗯,我不认为有办法只绘制帧缓冲区,我已经将其余元素绘制到屏幕上,是吗?我的意思是,现在我假设我只需要做一个正方形,上面有帧缓冲区作为纹理,这样它就可以被渲染了。但是如果有什么方法,我可以直接将帧缓冲区应用到屏幕上,这样会更好。不,你必须用一个带纹理的四边形在屏幕上手动绘制它。但这项练习的目的不是要扭曲它吗?是的,不是的。我只是试图扭曲非常小的区域。(即火焰上方的失真)因此无需扭曲整个屏幕。