我需要在我的Android应用程序中处理大型数组,目前它已成为性能问题。为了解决这个问题,我的计划是将阵列处理转移到GPU。我尝试使用Android Render脚本执行此操作,但由于各种原因失败,所以我的问题是有没有办法使用opengl或OpenGL ES将此计算移动到GPU?如果有人能给我一个想法来解决这个问题,那将会有所帮助。
这里有问题的代码
for (int i = 0; i <35000; i += 16)
{
int lumOne = in[i];
lumOne += 128;
pixelData[lumOne]=pixelData[lumOne]+1;
int lumTwo = in[i+2];
lumTwo += 128;
pixelData[lumTwo]=pixelData[lumTwo]+1;
}
答案 0 :(得分:1)
将OpenGL ES 2.0着色器程序用于通用计算意味着您的输入数据集将被编码为纹理到OpenGL ES,并且输出数据集将被存储(渲染)到附加到FBO的纹理,而不是而不是在屏幕上显示。然后,您必须使用glReadPixels()将该图像读回到可以使用的数组中。这里有一些文章可以帮助使用FBO和glReadPixels()。