这是来自Add contents to the end of a float array like this的后续问题。我正在寻找动态创建3D盒子。这是我的问题
我想在列表中添加一个例如add ....
// 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;
}
请记住,我通过浮动缓冲区发送所有内容。然后像这样画画..
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和图形一般都是新手,所以任何帮助都会非常感激。
感谢。
答案 0 :(得分:2)
既然你已经添加了opengl标签,我就明白为什么你需要float []结构(或者至少是浮点数而不是双打)。
这是demo application。对我而言,它似乎是用于研究opengl基础知识的一段代码,包括顶点数组。从其他问题我看到你在一个Android项目上工作。所以我希望它也适用于Android。