Android GLSURFACHEVIEW在活动中查看几个图像

Android GLSURFACHEVIEW在活动中查看几个图像,android,glsurfaceview,image-effects,Android,Glsurfaceview,Image Effects,我正在尝试用9张图片(3x3)进行照片拼贴,并对所有图片应用不同的效果。 目前,我正在尝试编辑此演示项目: 但我不知道如何在屏幕上设置9个图像。在布局中设置多个GLSurfaceViews时,错误显示: 03-26 11:26:21.315 6237-6237/com.test.effectsfilter_demo E/AndroidRuntime﹕ FATAL EXCEPTION: main Process: com.test.effectsfilter_demo, PID:

我正在尝试用9张图片(3x3)进行照片拼贴,并对所有图片应用不同的效果。
目前,我正在尝试编辑此演示项目:

但我不知道如何在屏幕上设置9个图像。在布局中设置多个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
需要帮忙吗


另外,还有其他方法可以产生Duotone效果吗?

首先,不要创建多个GLSURFACHEVIEW实例。每个SurfaceView实例都有两个部分:曲面和视图。创建九个同级视图是可以的,但每个曲面都是由系统合成的单独图形层,拥有九个同级视图将效率低下。系统最终将使用GLES来完成合成,因此您最好自己完成合成(为了效率、灵活性和简单性)

我不知道你为什么会犯这样的错误。您需要查看引发异常的代码行。如果问题中的消息是您得到的全部,那么有什么东西正在过滤异常,您需要附加一个调试器,并在NPE上中断它

无论如何,您都希望在一个GLSURFACHEVIEW上绘制所有九个图像。快速查看演示代码(看起来结构良好),Texturenderer.java中的函数
computeOutputVertices()
正在设置输出的位置和大小。修改该选项以将九个纹理中的每一个放置在您希望它们移动的位置,并修改
renderTexture()
以在循环中操作

有关过滤图像的另一种方法,请参见