Как создать текстуру OpenGL из массива байтов в Android

Я новичок в OpenGL. Я делаю приложение для слепых на Android в академических целях. У меня есть весь код, необходимый в шейдере для выполнения необходимых манипуляций, но мне все же нужно заставить шейдер видеть данные, которые я создаю в своем Java-коде. В моем Java-коде я получил большой массив int размером 262144. Я попытался передать этот массив в шейдер, как мог, но он слишком велик. Мне сообщили, что я могу легко передать эту информацию в шейдер, если я превращу свои данные в текстуру.

Я преобразовал свой массив 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);