Android GLSurfaceView活动中的几个图像

时间:2015-03-26 10:35:24

标签: android glsurfaceview image-effects

我正在尝试使用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效果好吗?

1 个答案:

答案 0 :(得分:0)

首先,不要创建GLSurfaceView的多个实例。每个SurfaceView实例都有两个部分,Surface和View。创建九个兄弟视图是可以的,但是每个Surface是由系统合成的单独图形层,并且其中九个将是低效的。系统最终将使用GLES进行合成,因此您最好自己完成合成(效率,灵活性和简单性)。

我不知道你为什么会得到那个特定的错误。您需要查看引发异常的代码行。如果你问题中的信息是你得到的,那么有些事情正在过滤异常,你需要附加一个调试器并让它在NPE上中断。

无论如何,您想在一个GLSurfaceView上绘制所有九个图像。快速查看演示代码(看起来结构很好),TextureRenderer.java中的函数computeOutputVertices()设置输出的位置和大小。修改它以将九个纹理中的每一个定位到您想要它们的位置,并修改renderTexture()以在循环中操作。

另请参阅this demo了解其他过滤图片的方法。