如何将float数组传递给glVertexAttribPointer

时间:2011-05-28 07:38:29

标签: android opengl-es opengl-es-2.0

我正在使用Android上的OpenGL ES 2.0着色器...

我有一个浮点数组,顶点位置和顶点的其他属性。 位置和其他属性可能会随着时间而改变。

如何将此修改后的数组传递给glVertexAttribPointer, 这样我就可以用更新的值绘制场景

当我试图通过它时,我得到了

  

GLES20类型中的方法glVertexAttribPointer(int,int,int,boolean,int,Buffer)不适用于参数(int,int,int,boolean,int,float [])

2 个答案:

答案 0 :(得分:2)

FloatBuffer yourFloatBuffer;
float[] yourFloatArray;    

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

这应该有用。

答案 1 :(得分:0)

是java.nio.Buffer吗?因为看起来你需要

java.nio.FloatBuffer

并调用floatBuffer.array()

从中获取float []数组。

但是,显然它在FloatBuffer.java中是最终的:

final float[] hb;   

所以看来你需要...可能会扩展FloatBuffer并使数组不是最终的。