Android GLSurface Просмотреть несколько изображений в действии

Я пытаюсь сделать фотоколлаж из 9 изображений (3х3) и применить к ним разные эффекты.
В настоящее время я пытаюсь редактировать этот демонстрационный проект:
https://github.com/Grishu/ImageEffects
Но я не знаю, как установить 9 изображений на экране. Когда я устанавливаю несколько GLSurfaceViews в Layout, ошибка показывает:

03-26 11:26:21.315    6237-6237/com.test.effectsfilter_demo E/AndroidRuntime﹕ FATAL EXCEPTION: main
    Process: com.test.effectsfilter_demo, PID: 6237
    java.lang.NullPointerException

Любая помощь, пожалуйста?

PS Есть ли другой способ сделать эффект Duotone?

1 ответ

Прежде всего, не создавайте несколько экземпляров GLSurfaceView. Каждый экземпляр SurfaceView состоит из двух частей: Surface и View. Создание девяти родственных видов - это нормально, но каждая поверхность представляет собой отдельный графический слой, составленный системой, и иметь девять из них будет неэффективно. В конечном итоге система будет использовать GLES для создания композиции, так что вам лучше (для эффективности, а также гибкости и, возможно, простоты) делать композицию самостоятельно.

Я не знаю, почему вы получаете именно эту ошибку. Вам нужно будет взглянуть на строку кода, которая выдает исключение. Если сообщение в вашем вопросе - это все, что вы получаете, тогда что-то фильтрует исключение, и вам нужно присоединить отладчик и сломать его в NPE.

В любом случае, вы хотите нарисовать все девять изображений в одном GLSurfaceView. Быстро взглянем на демонстрационный код (который выглядит красиво структурированным), функцию computeOutputVertices() в TextureRenderer.java устанавливается позиция и размер вывода. Измените это, чтобы расположить каждую из девяти текстур там, где вы хотите их разместить, и измените renderTexture() работать в цикле.

Смотрите также эту демонстрацию для другого способа фильтрации изображений.

Другие вопросы по тегам