如何在android中运行Opengl或OpenGL ES进行数组处理

时间:2014-02-17 16:00:36

标签: java android opengl-es renderscript

我需要在我的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;

    }

1 个答案:

答案 0 :(得分:1)

将OpenGL ES 2.0着色器程序用于通用计算意味着您的输入数据集将被编码为纹理到OpenGL ES,并且输出数据集将被存储(渲染)到附加到FBO的纹理,而不是而不是在屏幕上显示。然后,您必须使用glReadPixels()将该图像读回到可以使用的数组中。这里有一些文章可以帮助使用FBO和glReadPixels()。

http://montgomery1.com/opengl/