openGL,webGL如何在纹理中间画一个光圈?

如何画在纹理中间画一个光圈,原本代码写成这样:

vec2 position = (uv * 2.-1.0) * vec2(1.0, 1.0);
    
    float d = abs( length(position) - 0.8) * 5.0;
    gl_FragColor += vec4(0.2/d, 0.2 / d, 0.2 / d, 1);

然后有个问题,这样会将纹理的非光圈部分的颜色也改变了,然后改成

if( length(position)<0.8 && length(position)>0.7 ){
        gl_FragColor += vec4(0.2/d, 0.2 / d, 0.2 / d, 1);
    }else{
        gl_FragColor =src_color;
    }

这样写虽然不影响其非光圈部分的颜色,但也没有光圈的感觉了。

clipboard.png

如何在纹理中间画个光圈而不影响光圈以外位置的颜色?

阅读 1.3k
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进