我正在使用 libgdx,想要制作一个常见的高斯模糊后处理效果。按照本指南,我遇到了纹理过滤的一些问题。这里是图像:
实际图像:

半径 = 1 时模糊:

半径 = 5 进行模糊处理:

在最简单的情况下,我只有一个透明的帧缓冲区对象,其中渲染了一些对象。然后我需要对此应用一些着色器效果,基本上只是模糊,然后将结果渲染到屏幕上。我还想调整模糊半径,但如果我将半径设置为大于 1,它就会看起来非常粗糙。我猜它应该与一些线性过滤一起使用,但它不在这里。所以我只需要应用相同的效果与软模糊和可配置的半径,也许还有一些其他着色器侧选项。我还尝试将线性过滤显式分配给 FBO 纹理,这不会改变任何内容。
片段着色器:
//"in" attributes from our vertex shader
varying vec4 vColor;
varying vec2 vTexCoord;
//declare uniforms
uniform sampler2D u_texture;
uniform float resolution;
uniform float radius;
uniform vec2 dir;
void main() {
//this will be our RGBA sum
vec4 sum = vec4(0.0);
//our original texcoord for this fragment
vec2 tc = vTexCoord;
//the amount to blur, i.e. how far off center to sample from
//1.0 …Run Code Online (Sandbox Code Playgroud)