这是从Add contents to the end of a float array like this开始的后续问题。我期待动态创建3D盒子。这里是我的问题制作清单<Point3D>,使用glDrawArrays添加点并绘制
我要一个框添加到列表中添加e.g ....
// 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和图形一般,所以任何帮助将不胜感激。
谢谢。
你有没有一个基本的示例应用程序运行在Java的OpenGL上?您可能还需要添加JOGL标签。 – DJClayworth 2010-07-08 14:25:45
是的,我喜欢。我可以添加框,旋转世界,做其他的东西,但现在我需要使用一个数据结构,这将允许我动态地创建和绘制n个立方体。 – Skizit 2010-07-08 14:34:55