【发布时间】:2011-12-31 19:34:33
【问题描述】:
我正在开发的 Android 应用需要渲染一些大型位图,这些位图每帧都会不断更新。在过去的一年中,我通过 SurfaceView 和 Canvas 渲染它们,但现在由于 Galaxy Nexus 的巨大屏幕尺寸,绘制大位图非常慢。
我正在尝试将渲染交换为 openGL,但我无法以足够快的速度每帧更新纹理。目前我正在使用 glTexSubImage2d() 将位图数据复制到每一帧的纹理中,但这太慢了。我搜索了一下,显然是glCopyTexSubImage is somewhat faster,但Android 实现不接受数据参数。
有什么建议可以不延迟地渲染动态纹理吗?
【问题讨论】:
-
我找到了一个声称调用 texImage2d 然后在同一帧中渲染的源会使 GPU 停顿,并建议使用双缓冲。但是,我不确定双缓冲会有什么帮助。 groups.google.com/group/android-developers/browse_thread/thread/…
-
您对位图进行了哪些更新?如果您能够为每一帧更新位图,这不会有什么大的变化,对吧?
-
我不是想用一个问题来回答一个问题,但我只是好奇.....你是用java还是c/c++调用你的opengl?
-
Java,虽然我使用的 gl 方法应该只调用本机方法。
-
这是一个照片编辑应用程序,所以它可以是任何东西,从在屏幕上对角线绘制一条线,或模糊一部分,或从图层中剪切一个选择。位图操作很快。问题是它们必须在位图对象上完成,因为我使用 Canvas 对象的功能。