2013-01-12 10 views
6

Sono completamente nuovo in OpenGL. Sto facendo un'app per il colore cieco su Android per scopi accademici. Ho tutto il codice necessario nello shader per fare le manipolazioni che mi servono, ma devo ancora ottenere lo shader per poter vedere i dati che ho creato nel mio codice Java. Nel mio codice Java, ho finito con un grande array int di dimensioni 262144. Ho provato a passare questo array nello shader in qualsiasi modo possibile, ma era troppo grande. Sono stato informato che posso passare facilmente queste informazioni nello shader se trasformo i miei dati in una texture.Come creare una trama OpenGL dall'array di byte in Android

Ho convertito il mio array int in una matrice di byte come indicato da un collega, ma ora mi sono perso per come creare la trama opengl e inserire i dati in byte per lo shader da vedere e utilizzare.

Quindi, ho bisogno di creare una trama opengl, riempirla con i miei dati (è meglio l'array di byte?) E quindi essere in grado di usare quella texture nel mio shader. Se qualcuno mi può aiutare, sarebbe molto apprezzato. Lavoro bene dopo aver visto esempi, non spiegazioni, perché sono molto analfabeta, ma accolgo con favore qualsiasi aiuto.

Ho provato a codificarne alcuni. Ho finito per provare a creare un GLES20.glTexImage2D. Ho pensato che potevo semplicemente passare nel mio array di byte, ma ci vuole un buffer ?? Per favore dammi tutti i passaggi necessari per completare il mio compito.

Grazie mille!

Mike

risposta

5

Penso che devi seguire;

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); 
+0

Sai come si può fare questo nel NDK di Android? http://stackoverflow.com/questions/14431693/how-can-i-bind-a-pixel-array-of-integer-colors-to-a-texture-using-the-android-nd – torger

Problemi correlati