这是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。

10-07 19:18
查看更多