这是Add contents to the end of a float array like this中的跟进问题。我正在寻找动态创建3D盒子的方法。这是我的问题
我想在列表中添加一个框,例如添加...。
// FRONT
-2.0f, -1.5f, -6.0f,
2.0f, -1.5f, -6.0f,
-2.0f, 1.5f, -6.0f,
2.0f, 1.5f, -6.0f,
// BACK
-2.0f, -1.5f, -10.0f,
-2.0f, 1.5f, -10.0f,
2.0f, -1.5f, -10.0f,
2.0f, 1.5f, -10.0f,
// LEFT
-2.0f, -1.5f, -6.0f,
-2.0f, 1.5f, -6.0f,
-2.0f, -1.5f, -10.0f,
-2.0f, 1.5f, -10.0f,
// RIGHT
2.0f, -1.5f, -10.0f,
2.0f, 1.5f, -10.0f,
2.0f, -1.5f, -6.0f,
2.0f, 1.5f, -6.0f,
// TOP
-2.0f, 1.5f, -6.0f,
2.0f, 1.5f, -6.0f,
-2.0f, 1.5f, -6.0f,
2.0f, 1.5f, -10.0f,
// BOTTOM
-2.0f, -1.5f, -6.0f,
-2.0f, -1.5f, -10.0f,
2.0f, -1.5f, -6.0f,
2.0f, -1.5f, -10.0f,
上面的值将组成1个框,我该怎么做?
我想使用
glDrawArrays()
然后绘制整个列表(所有方框),我将如何做呢? FloatBuffer makeFloatBuffer(float[] arr) {
ByteBuffer bb = ByteBuffer.allocateDirect(arr.length*4);
bb.order(ByteOrder.nativeOrder());
FloatBuffer fb = bb.asFloatBuffer();
fb.put(arr);
fb.position(0);
return fb;
}
请记住,我正在通过floatbuffer发送所有内容。然后像这样画
gl.glDrawArrays(GL10.GL_TRIANGLE_STRIP, 0, 4);
gl.glDrawArrays(GL10.GL_TRIANGLE_STRIP, 4, 4);
gl.glDrawArrays(GL10.GL_TRIANGLE_STRIP, 8, 4);
gl.glDrawArrays(GL10.GL_TRIANGLE_STRIP,12, 4);
gl.glDrawArrays(GL10.GL_TRIANGLE_STRIP,16, 4);
gl.glDrawArrays(GL10.GL_TRIANGLE_STRIP,20, 4);
一般来说,我对Point3D,OpenGL和图形是完全陌生的,因此将不胜感激。
谢谢。
最佳答案
现在,您已经添加了opengl标记,我理解了为什么需要float []结构(或者至少是float而不是double)。
这是demo application。在我看来,这似乎是学习opengl基础知识(包括顶点数组)的好代码。从另一个问题,我看到您在一个Android项目上工作。所以我只希望它也适用于android。