Ract native gl - текстуры не могут читать ресурсы изображений в сборке релиза (без сервера метро) - PullRequest
0 голосов
/ 10 июля 2020

Когда включен Metro-сервер, к дочернему элементу image(uri:imgPath) применяется шейдер. Но когда отладчик отключен от компьютера, шейдер не будет работать, он просто отображает пустой фон. Та же проблема в выпуске сборки apk.

Я предполагаю, что проблема в {inputImageTexture2: require('../assets/filters/map.png')} не удается получить ресурсы изображения, когда сервер метро отключен. Без каких-либо внешних текстурных карт шейдеры работают без проблем, даже если сервер метро не работает. Есть ли другой способ ссылаться на изображения? React native не будет добавлять эти изображения в папку ресурсов android apk. Я также вручную поместил эти изображения в папку с активами. Ни один из них не работал. Я определил, что response native сжимает эти изображения и помещает их в папку ресурсов android.

MyShader: {
        frag: `
      precision highp float;
      varying vec2 uv;

      uniform sampler2D inputImageTexture;
      uniform sampler2D inputImageTexture2;
     ..............
     ..............
export const Effect = ({children: inputImageTexture}) =>
    <Node
        shader={shaders.MyShader}
        uniforms={{
            inputImageTexture,
            inputImageTexture2: require('../assets/filters/map.png'),
        }}
    />;

<Surface style={{height: wp(100), width: wp(100)}} ref={image}>
        <Effect>
           {{uri:imgPath}}
       </Effect> 
</Surface>

Platform: Android 9.0 "react-native": "^ 0.62.0"

...