作者热门文章
- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我是 OpenGL 的新手。出于学术目的,我正在 Android 上制作色盲应用程序。我在着色器中拥有执行所需操作所需的所有代码,但我仍然必须让着色器能够看到我在 Java 代码中创建的数据。在我的 Java 代码中,我最终得到了一个大小为 262144 的大型 int 数组。我试图以任何可能的方式将这个数组传递到着色器中,但它太大了。我被告知,如果我将我的数据转换为纹理,我可以轻松地将这么多信息传递到着色器中。
我已按照同事的指示将我的 int 数组转换为字节数组,但现在我不知道如何创建 opengl 纹理并将我的字节数据输入其中以供着色器查看和使用。
因此,我需要创建一个 opengl 纹理,用我的数据填充它(字节数组最好吗?),然后能够在我的着色器中使用该纹理。如果有人可以帮助我,我将不胜感激。在看到示例而不是解释后,我工作得很好,因为我对 opengl 很不识字,但我欢迎任何帮助。
我确实尝试编写一些代码。我最终尝试制作一个 GLES20.glTexImage2D。我想我可以只传入我的字节数组,但它需要一个缓冲区??请给我完成任务所需的所有步骤。
非常感谢!
迈克
最佳答案
我认为你需要做以下事情;
byte data[4 * 262144]; // your byte array, 4 * int count
ByteBuffer buffer = ByteBuffer.allocateDirect(4 * 262144);
buffer.put(data);
buffer.position(0);
GLES20.glTexImage2D(GLES20.GL_TEXTURE_2D, 0, GLES20.GL_RGBA, width, height, 0,
GLES20.GL_RGBA, GLES20.GL_UNSIGNED_BYTE, buffer);
关于android - 如何在 Android 中从字节数组创建 OpenGL 纹理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14290096/
我是一名优秀的程序员,十分优秀!