【发布时间】:2013-01-10 10:22:55
【问题描述】:
在我的应用程序中,我必须使用 OpenGL 绘制多个元素,有些是三角形,有些是线条。每当我要绘制新形状时,我都会将我的顶点放入多个 float[] 并将我的索引放入多个 short[] 中。我还必须为每个新数组创建一个新的 FloatBuffer、ShortBuffer 和 ByteBuffer 以使其正常工作。
我怎样才能更有效地绘制多个元素?我正在考虑将所有顶点放入一个 float[] 并为每个元素创建一个新的 short[] 以删除多余的数组,但是是否可以使用一个 FloatBuffer、ShortBuffer 并将所有数组变成一个单一的ByteBuffer,例如:
float[] vertices = { -3, -3, -3, 2, 3, 0, 2, -1, 0, 0, 5, 2, 3, 1 };
short[] indItemA = { 0, 1, 2, 0, 2, 3 };
short[] indItemB = { 4, 5, 6 };
FloatBuffer fBuff;
ShortBuffer sBuff;
ByteBuffer bBuff = ByteBuffer.allocateDirect(vertices.length * 4);
fbBuff.order(ByteOrder.nativeOrder());
fBuff = bBuff.asFloatBuffer();
fBuff.put(vertices);
fBuff.position(0);
sBuff = bBuff.asShortBuffer();
sBuff.put(indItemA);
sBuff.position(0);
sBuff.put(indItemB);
sBuff.position(0);
【问题讨论】:
标签: android opengl-es bytebuffer