创建一个List <point3d>,添加点并使用glDrawArrays </point3d>绘制

时间:2010-07-08 14:09:34

标签: java opengl

这是来自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和图形一般都是新手,所以任何帮助都会非常感激。

感谢。

1 个答案:

答案 0 :(得分:2)

既然你已经添加了opengl标签,我就明白为什么你需要float []结构(或者至少是浮点数而不是双打)。

这是demo application。对我而言,它似乎是用于研究opengl基础知识的一段代码,包括顶点数组。从其他问题我看到你在一个Android项目上工作。所以我希望它也适用于Android。