Mik*_*iny 7 shader android textures opengl-es jogl
我是OpenGL的新手.我正在为学术目的在Android上制作一个色盲应用程序.我拥有着色器中所需的所有代码来进行我需要的操作,但是我仍然必须让着色器能够看到我在Java代码中创建的数据.在我的Java代码中,我最终得到了一个大小为262144的大型int数组.我试图以任何方式将此数组传递到着色器,但它太大了.我被告知,如果我将数据转换为纹理,我可以轻松地将这些信息传递到着色器中.
我按照同事的指示将我的int数组转换为字节数组,但现在我迷失了如何创建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);
Run Code Online (Sandbox Code Playgroud)