Когда включен 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"