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

标签 java android opengl-es renderscript

我需要在我的 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()。

http://montgomery1.com/opengl/

关于java - 如何在 android 中运行 OpenGL 或 OpenGL ES 进行数组处理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21833715/

相关文章:

java - OpenAPI/Swagger-UI注释和@BeanParam

Java 图形基础知识 : Creating Collison Area From Image

android - 我的 Android 应用程序可以从非 Google 的服务器下载其数据文件吗?

iphone - 如何将 OpenGL RenderBuffer 转储为 PNG 或 JPG 图像?

opengl - 为什么 GLsizei 没有定义为无符号?

java - 引用的 Integer 对象未递增

java - 双重拆分一个字符串并将其添加到 JTable

java - Android 上的 OpenGL ES 3.0 未绘制立方体

Java 改变变量名改变程序行为

android - 没有 SMS 内容提供程序的任何 Android 手机?