0

我正在尝试用 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

请问有什么帮助吗?

PS还有其他方法可以制作双色调效果吗?

4

1 回答 1

0

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

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

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

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

于 2015-03-26T16:17:55.850 回答