2013-01-12 10 views
6

Jestem nowym użytkownikiem OpenGL. Tworzę aplikację z kolorową ślepotą na Androida do celów akademickich. Mam cały kod wymagany w module cieniującym do wykonywania potrzebnych manipulacji, ale nadal muszę uzyskać moduł cieniujący, aby móc zobaczyć dane, które utworzę w moim kodzie Java. W moim kodzie Java, skończyłem z dużą tablicą int o rozmiarze 262144. Próbowałem przekazać tę tablicę do shadera w dowolny sposób, ale było zbyt duże. Zostałem poinformowany, że mogę łatwo przekazać te informacje do modułu cieniującego, jeśli zmienię dane w teksturę.Jak utworzyć teksturę OpenGL z tablicy bajtów w Androidzie

Konwertowałem tablicę int na tablicę bajtów zgodnie z instrukcjami koleżanki, ale teraz jestem zagubiony, ponieważ tworzę teksturę opengl i wprowadzam do niej dane bajtów, aby moduł cieniowania mógł je zobaczyć i używać.

Potrzebuję utworzyć teksturę OpenGL, wypełnić ją danymi (najlepiej tablica bajtów?), A następnie móc korzystać z tej tekstury w moim module cieniującym. Jeśli ktokolwiek może mi pomóc, będzie to bardzo cenne. Pracuję dobrze po obejrzeniu przykładów, a nie wyjaśnień, ponieważ jestem bardzo otwarty analfabetów, ale z radością przyjmuję każdą pomoc.

Próbowałem trochę zakodować. W końcu próbowałem stworzyć GLES20.glTexImage2D. Pomyślałem, że mogę po prostu przekazać w mojej tablicy bajtów, ale zajmuje bufor? Proszę podać mi wszystkie kroki niezbędne do wykonania mojego zadania.

Wielkie dzięki!

Mike

Odpowiedz

5

Myślę, że trzeba wykonać następujące czynności;

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

Czy wiesz, jak można to zrobić w Android NDK? http://stackoverflow.com/questions/14431693/how-can-i-bind-a-pixelarray-of-integer-colors-to-a-texture-using-the-android-nd – torger

Powiązane problemy