我需要在我的 Android 应用程序中处理大型数组,目前它已成为性能问题。为了解决这个问题,我的计划是将数组处理移至 GPU。我尝试使用 Android 渲染脚本执行此操作,但由于各种原因失败了,所以我的问题是有没有办法使用 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;
}
最佳答案
使用 OpenGL ES 2.0 着色器程序进行通用计算意味着您的输入数据集将被编码为纹理提供给 OpenGL ES,并且输出数据集将存储(渲染)到附加到 FBO 的纹理,而不是比屏幕上显示的要多。然后,您必须使用 glReadPixels() 将该图像读回您可以使用的数组中。这里有一些文章可以帮助您使用 FBO 和 glReadPixels()。
关于java - 如何在 android 中运行 OpenGL 或 OpenGL ES 进行数组处理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21833715/