Android GLSurfaceView活动中的几个图像



我正在尝试用9张图像(3x3)进行照片拼贴,并在所有图像上应用不同的效果
目前,我正在尝试编辑此演示项目:
https://github.com/Grishu/ImageEffects
但是我不知道如何在屏幕上设置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

请帮忙吗?

附言:还有其他方法可以产生双音效应吗?

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

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

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

另请参阅此演示,了解另一种过滤图像的方法。

最新更新