Как передать массив с плавающей точкой в ​​glVertexAttribPointer - PullRequest
0 голосов
/ 28 мая 2011

Я работаю над шейдерами OpenGL ES 2.0 на Android ...

У меня есть массив float с положением вершин наряду с другими атрибутами вершин. Положение и другие атрибуты могут меняться со временем.

как я могу передать этот модифицированный массив в glVertexAttribPointer, чтобы я мог нарисовать сцену с обновленными значениями

когда я попытался передать его, я получил

Метод glVertexAttribPointer (int, int, int, boolean, int, Buffer) в типе GLES20 не применим для аргументов (int, int, int, boolean, int, float [])

Ответы [ 2 ]

2 голосов
/ 28 мая 2011
FloatBuffer yourFloatBuffer;
float[] yourFloatArray;    

FloatBuffer byteBuf = ByteBuffer.allocateDirect(yourFloatArray.length * 4);
    byteBuf.order(ByteOrder.nativeOrder());
    yourFloatBuffer = byteBuf.asFloatBuffer();
    yourFloatBuffer.put(yourFloatArray);
    yourFloatBuffer.position(0);

Это должно работать.

0 голосов
/ 28 мая 2011

Это java.nio.Buffer?Потому что, кажется, вам нужно

java.nio.FloatBuffer

и вызвать floatBuffer.array ()

, чтобы получить из него массив float [].

Но, очевидно, он является окончательнымв FloatBuffer.java:

final float[] hb;   

Так что, похоже, вам нужно ... возможно, расширить FloatBuffer и сделать массив не финальным.

...