首页 > 技术文章 > 'GL_EXT_shader_framebuffer_fetch' : extension is not supported

zmj97 2019-11-11 14:13 原文

在使用安卓模拟器加载Flutter应用时,
提示'GL_EXT_shader_framebuffer_fetch' : extension is not supported:

D/skia    (14043): Shader compilation error
D/skia    (14043): ------------------------
D/skia    (14043):    1 #version 300 es
D/skia    (14043):    2
D/skia    (14043):    3 #extension GL_EXT_shader_framebuffer_fetch : require
D/skia    (14043):    4 precision mediump float;
D/skia    (14043):    5 precision mediump sampler2D;
D/skia    (14043):    6 inout mediump vec4 sk_FragColor;
D/skia    (14043):    7 uniform mediump vec4 uleftBorderColor_Stage1_c0_c0;
D/skia    (14043):    8 uniform mediump vec4 urightBorderColor_Stage1_c0_c0;
D/skia    (14043):    9 uniform sampler2D uTextureSampler_0_Stage1;
D/skia    (14043):   10 in mediump vec4 vQuadEdge_Stage0;
D/skia    (14043):   11 in mediump vec4 vinColor_Stage0;
D/skia    (14043):   12 in highp vec2 vTransformedCoords_0_Stage0;
D/skia    (14043):   13 mediump vec4 stage_Stage1_c0_c0_c0_c0(mediump vec4 _input) {
D/skia    (14043):   14     mediump vec4 _sample1099_c0_c0;
D/skia    (14043):   15     mediump float t = vTransformedCoords_0_Stage0.x + 9.9999997473787516e-06;
D/skia    (14043):   16     _sample1099_c0_c0 = vec4(t, 1.0, 0.0, 0.0);
D/skia    (14043):   17     return _sample1099_c0_c0;
D/skia    (14043):   18 }
D/skia    (14043):   19 mediump vec4 stage_Stage1_c0_c0_c1_c0(mediump vec4 _input) {
D/skia    (14043):   20     mediump vec4 _sample1767_c0_c0;
D/skia    (14043):   21     mediump vec2 coord = vec2(_input.x, 0.5);
D/skia    (14043):   22     _sample1767_c0_c0 = texture(uTextureSampler_0_Stage1, coord).xyzw;
D/skia    (14043):   23     return _sample1767_c0_c0;
D/skia    (14043):   24 }
D/skia    (14043):   25 mediump vec4 stage_Stage1_c0_c0(mediump vec4 _input) {
D/skia    (14043):   26     mediump vec4 _sample1992;
D/skia    (14043):   27     mediump vec4 _sample1099_c0_c0;
D/skia    (14043):   28     _sample1099_c0_c0 = stage_Stage1_c0_c0_c0_c0(vec4(1.0));
D/skia    (14043):   29     mediump vec4 t = _sample1099_c0_c0;
D/skia    (14043):   30     if (t.x < 0.0) {
D/skia    (14043):   31         _sample1992 = uleftBorderColor_Stage1_c0_c0;
D/skia    (14043):   32     } else if (t.x > 1.0) {
D/skia    (14043):   33         _sample1992 = urightBorderColor_Stage1_c0_c0;
D/skia    (14043):   34     } else {
D/skia    (14043):   35         mediump vec4 _sample1767_c0_c0;
D/skia    (14043):   36         mediump vec4 _childInput_c0_c0_c1 = t;
D/skia    (14043):   37         _sample1767_c0_c0 = stage_Stage1_c0_c0_c1_c0(_childInput_c0_c0_c1);
D/skia    (14043):   38         _sample1992 = _sample1767_c0_c0;
D/skia    (14043):   39     }
D/skia    (14043):   40     {
D/skia    (14043):   41         _sample1992.xyz *= _sample1992.w;
D/skia    (14043):   42     }
D/skia    (14043):   43     return _sample1992;
D/skia    (14043):   44 }
D/skia    (14043):   45 void main() {
D/skia    (14043):   46     mediump vec4 outputCoverage_Stage0;
D/skia    (14043):   47     {
D/skia    (14043):   48         mediump float edgeAlpha;
D/skia    (14043):   49         mediump vec2 duvdx = dFdx(vQuadEdge_Stage0.xy);
D/skia    (14043):   50         mediump vec2 duvdy = -dFdy(vQuadEdge_Stage0.xy);
D/skia    (14043):   51         if (vQuadEdge_Stage0.z > 0.0 && vQuadEdge_Stage0.w > 0.0) {
D/skia    (14043):   52             edgeAlpha = min(min(vQuadEdge_Stage0.z, vQuadEdge_Stage0.w) + 0.5, 1.0);
D/skia    (14043):   53         } else {
D/skia    (14043):   54             mediump vec2 gF = vec2((2.0 * vQuadEdge_Stage0.x) * duvdx.x - duvdx.y, (2.0 * vQuadEdge_Stage0.x) * duvdy.x - duvdy.y);
D/skia    (14043):   55             edgeAlpha = vQuadEdge_Stage0.x * vQuadEdge_Stage0.x - vQuadEdge_Stage0.y;
D/skia    (14043):   56             edgeAlpha = clamp(0.5 - edgeAlpha / length(gF), 0.0, 1.0);
D/skia    (14043):   57         }
D/skia    (14043):   58         outputCoverage_Stage0 = vec4(edgeAlpha);
D/skia    (14043):   59     }
D/skia    (14043):   60     mediump vec4 output_Stage1;
D/skia    (14043):   61     {
D/skia    (14043):   62         mediump vec4 _sample1992;
D/skia    (14043):   63         _sample1992 = stage_Stage1_c0_c0(vec4(1.0, 1.0, 1.0, 1.0));
D/skia    (14043):   64         output_Stage1 = _sample1992;
D/skia    (14043):   65     }
D/skia    (14043):   66     {
D/skia    (14043):   67         mediump vec4 _dstColor = sk_FragColor;
D/skia    (14043):   68         sk_FragColor.w = output_Stage1.w + (1.0 - output_Stage1.w) * _dstColor.w;
D/skia    (14043):   69         sk_FragColor.xyz = ((1.0 - output_Stage1.w) * _dstColor.xyz + (1.0 - _dstColor.w) * output_Stage1.xyz) + output_Stage1.xyz * _dstColor.xyz;
D/skia    (14043):   70         sk_FragColor = outputCoverage_Stage0 * sk_FragColor + (vec4(1.0) - outputCoverage_Stage0) * _dstColor;
D/skia    (14043):   71     }
D/skia    (14043):   72 }
D/skia    (14043):   73
D/skia    (14043): Errors:
D/skia    (14043): ERROR: 0:3: 'GL_EXT_shader_framebuffer_fetch' : extension is not supported
D/skia    (14043): ERROR: 0:6: 'inout' : syntax error 

解决办法:
点击:

setting => Advanced => opengl es api level 修改为opengl es 1.1/2.0
然后重启安卓模拟器即可解决

推荐阅读