2013-01-12 23 views
6

Hep birlikte OpenGL'de yeniyim. Android'de akademik amaçlı bir renk körü uygulaması yapıyorum. İhtiyacım olan manipülasyonları yapmak için gölgelendiricide gereken tüm kodlara sahibim, ancak Java kodumda oluşturduğum verileri görebilmek için gölgelendiriciyi almam gerekiyor. Java kodumda 262144 boyutunda geniş bir int dizilimi ile sonuçlandım. Bu diziyi gölgeleyiciye herhangi bir şekilde iletmeye çalıştım ama çok büyüktü. Verilerimi bir dokuya dönüştürdüğümde, bu çok bilgiyi kolayca gölgelendiriciye aktaracağım konusunda bilgilendirildim.Android'de byte dizisinden bir OpenGL dokusu nasıl oluşturulur

bir meslektaşı tarafından talimat olarak ben bir bayt dizisi benim int dizi çevirdim, ama şimdi görüyorum ve kullanımı shader için içine opengl doku ve giriş benim bayt veri oluşturmak nasıl olarak kayboldum.

Dolayısıyla, bir opengl doku oluşturmalı, verilerim ile doldurmalıyım (bayt dizisi en iyisi mi?) Ve sonra bu dokuyu gölgelendiricimde kullanabilmem gerekir. Birisi bana yardımcı olabilirse, çok takdir edilecektir. Örnekleri gördükten sonra çok iyi çalışıyorum, açıklama yapmam çünkü çok okuyucusuz okuryazar değilim ama herhangi bir yardımı memnuniyetle karşılıyorum.

Bazılarını kodlamayı denedim. Bir GLES20.glTexImage2D yapmaya çalıştım. Sadece bayt dizilimden geçebileceğimi düşündüm, ama bir tampon mu aldın? Lütfen görevimi tamamlamak için gereken tüm adımları bana verin.

Çok teşekkürler!

Mike

cevap

5

Aşağıdakileri yapmanız gerektiğini düşünüyorum;

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

Android NDK'da bunu nasıl yapabileceğini biliyor musunuz? http://stackoverflow.com/questions/14431693/how-can-i-bind-a-pixel-array-of-integer-colors-to-a-texture-using-the-android-nd – torger