【发布时间】:2012-11-13 15:28:30
【问题描述】:
我正在开发一个应用程序,它在 GPU (OpengGL ES 2.0) 上对相机预览流进行实时过滤。它类似于著名的应用程序“纸相机”(付费)和“卡通相机”(免费)。
它在我的 Galaxy s2 上运行良好且速度非常快,在 s3 上甚至更快,在旧的三星设备上也可以。我还在 Sony Xperia Arc S 和 htc 上进行了测试,以及我不记得的其他几台设备上,它的速度不如我的 s2,但至少高于 10 fps。
现在问题来了: 昨天我能够在 HTC One X+ 和 Galaxy Tab 10.1(分别为 tegra 3 和 tegra 2)上对其进行测试。在 x+ 上,它以大约 5 fps 的速度运行,在平板电脑上以大约 2 fps 的速度运行。
我还在 x+ 上尝试了前面提到的类似应用程序(纸相机和卡通相机),与我的 Galaxy s2 相比,它们的运行速度也慢得多,尽管由于硬件更好,它们应该运行得更快。
tegra GPU 是否存在与纹理上传速度有关的已知问题(我必须为每个视频帧创建一个纹理)或其他可能会大幅降低速度的问题?
PS:降低相机预览分辨率会稍微快一些,但速度仍然很慢。
【问题讨论】:
-
你在使用顶点着色器吗?
-
我使用片段着色器进行每像素操作,但当然我使用顶点着色器来计算我的变量(顶点位置和 9 个 UV 用于 3x3 卷积邻域)
-
那么这可以解释为什么它在 Tegra GPU 上很慢:stackoverflow.com/a/8808807/21727
-
谢谢,但我没有从顶点着色器访问纹理单元,我只是计算纹理的 UV,所以我认为这不能解释它。
-
你有没有试过“Live FX Camera Effects”这个app,也是类似的,我是作者,所以如果在你的X+上速度更快,我也许可以帮你找到问题。
标签: android filter camera tegra