我正在尝试在Android上使用OpenGL ES实现屏幕外渲染。我的最终目标是改善我在纯Java和Bitmap/int[] API中进行的纹理映射的性能。我尝试了pbuffer方法,类似于相关论坛主题中的示例代码。它表现出相当低的性能,在一个设备上
还有更现代的方法使用Frame Buffers。代码示例相当复杂,我不指望从Frame Buffer到Android的位图之间有比使用pbuffers更快的传输速度。我的估计正确吗?
第三种方法是使用像素图。如果我正确理解文档,它们应该利用OpenGL和Dalvik内存之间的更复杂的内存共享,而不是简单的复制。问题在于,相关的API不存在于Android SDK中。
在Java中没有
有
我的主要问题是:我是否可以在Java中使用像素图而不编写本机代码?如果需要进入本机代码,请问是否有可用的代码我可以使用以评估性能?
glReadPixels
调用需要多达50毫秒,在另一个设备上需要多达15毫秒。还有更现代的方法使用Frame Buffers。代码示例相当复杂,我不指望从Frame Buffer到Android的位图之间有比使用pbuffers更快的传输速度。我的估计正确吗?
第三种方法是使用像素图。如果我正确理解文档,它们应该利用OpenGL和Dalvik内存之间的更复杂的内存共享,而不是简单的复制。问题在于,相关的API不存在于Android SDK中。
在Java中没有
eglCreateImageKHR
和EGLImageKHR
结构可供使用。所有我能找到的C++示例都依赖于它们。有
eglCreatePixmapSurface
但我无法从文档中弄清如何使用它。可能它在native_pixmap
参数中接收一种位图句柄,但我找不到任何创建这样的句柄的方法。搜索"eglCreatePixmapSurface android"只会导致问题报告。我的主要问题是:我是否可以在Java中使用像素图而不编写本机代码?如果需要进入本机代码,请问是否有可用的代码我可以使用以评估性能?