Używam this library for GPUImage processing.MultiInputFilter nie działa dla 3 wejść w AndroidFastImageProcessing
Próbuję uruchomić filtry równolegle, tak jak robimy w bibliotece iOS GPUImage, ale mam problemy podczas dodawania 3 wejścia do jednego filtra, który rozszerza MultiInputFilter
. Próbuję połączyć
BasicCameraInputFilter
CannyEdgeDetectionFilter
SobelEdgeDetectionFilter
gdzie BasicCameraInputFilter
jest bezpośrednie wejście dla kamery.
BasicCameraInputFilter cameraInput = new BasicCameraInputFilter();
CannyEdgeDetectionFilter cannyEdgeDetectionFilter = new CannyEdgeDetectionFilter(1.0f,0.3f,0.6f);
SobelEdgeDetectionFilter sobelEdgeDetectionFilter = new SobelEdgeDetectionFilter();
CombinationFilter combinationFilter = new CombinationFilter();
cameraInput.addTarget(combinationFilter);
cannyEdgeDetectionFilter.addTarget(combinationFilter);
sobelEdgeDetectionFilter.addTarget(combinationFilter);
combinationFilter.registerFilterLocation(cameraInput,0);
combinationFilter.registerFilterLocation(cannyEdgeDetectionFilter,1);
combinationFilter.registerFilterLocation(sobelEdgeDetectionFilter,2);
combinationFilter.addTarget(this);
registerInitialFilter(cameraInput);
registerFilter(cannyEdgeDetectionFilter);
registerFilter(sobelEdgeDetectionFilter);
registerTerminalFilter(combinationFilter);
Oto mój fragment shader dla mojego CombinationFilter
"precision mediump float;\n"
+"uniform sampler2D " + UNIFORM_TEXTURE0 + ";\n"
+"uniform sampler2D " + UNIFORM_TEXTUREBASE + 1 + ";\n"
+"uniform sampler2D " + UNIFORM_TEXTUREBASE + 2 + ";\n"
+"varying vec2 " + VARYING_TEXCOORD + ";\n"
+"void main(){\n"
+" vec4 color1 = texture2D(" + UNIFORM_TEXTURE0 + ", " + VARYING_TEXCOORD + ");\n"
+" vec4 color2 = texture2D(" + UNIFORM_TEXTUREBASE + 1 + ", " + VARYING_TEXCOORD + ");\n"
+" vec4 color3 = texture2D(" + UNIFORM_TEXTUREBASE + 2 + ", " + VARYING_TEXCOORD + ");\n"
+" vec4 whiteColor = vec4(1.0);\n"
+" whiteColor.r = color1.r * color2.r * color3.r;\n"
+" whiteColor.g = color1.g * color2.g * color3.g;\n"
+" whiteColor.b = color1.b * color2.b * color3.b;\n"
+" gl_FragColor = whiteColor;\n"
+"}\n";
Jakie masz problemy? – Brian
Umieściłeś dobrze zdefiniowany przykład. Ale jaki jest problem? Czy możesz pokazać nam komunikat o błędzie lub zrzut ekranu z nieoczekiwanym wynikiem? – Rabbid76
nie ma błędów, po prostu nie działa, i nie możemy debugować shaderów w prawo .. – Thesoham24