我正在尝试使用9张图像(3x3)进行照片拼贴,并对所有图像应用不同的效果
目前,我正在尝试编辑此演示项目:
https://github.com/Grishu/ImageEffects
但我不知道如何在屏幕上设置9个图像。当我在Layout中设置几个GLSurfaceViews时,错误显示:
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
请帮忙吗?
P.S。还有另一种方法可以让Duotone效果好吗?
答案 0 :(得分:0)
首先,不要创建GLSurfaceView的多个实例。每个SurfaceView实例都有两个部分,Surface和View。创建九个兄弟视图是可以的,但是每个Surface是由系统合成的单独图形层,并且其中九个将是低效的。系统最终将使用GLES进行合成,因此您最好自己完成合成(效率,灵活性和简单性)。
我不知道你为什么会得到那个特定的错误。您需要查看引发异常的代码行。如果你问题中的信息是你得到的,那么有些事情正在过滤异常,你需要附加一个调试器并让它在NPE上中断。
无论如何,您想在一个GLSurfaceView上绘制所有九个图像。快速查看演示代码(看起来结构很好),TextureRenderer.java中的函数computeOutputVertices()
设置输出的位置和大小。修改它以将九个纹理中的每一个定位到您想要它们的位置,并修改renderTexture()
以在循环中操作。
另请参阅this demo了解其他过滤图片的方法。