2010-07-08 114 views
1

这是从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和图形一般,所以任何帮助将不胜感激。

谢谢。

+0

你有没有一个基本的示例应用程序运行在Java的OpenGL上?您可能还需要添加JOGL标签。 – DJClayworth 2010-07-08 14:25:45

+0

是的,我喜欢。我可以添加框,旋转世界,做其他的东西,但现在我需要使用一个数据结构,这将允许我动态地创建和绘制n个立方体。 – Skizit 2010-07-08 14:34:55

回答

2

现在你已经添加了opengl标签,我明白你为什么需要float []结构(或者至少是float而不是double)。

这里是demo application。对我来说,它看起来像是研究opengl基础知识的一个很好的代码,包括顶点数组。从其他问题我看到你在一个Android项目上工作。所以我只是希望它也适用于android。

+0

问题在于我必须通过Floatbuffer发送它然后绘制它..我编辑了我的问题以显示更多代码 – Skizit 2010-07-08 14:57:57

+0

+1;我对Java中的OpenGL一无所知,我不确定我对OP的其他问题的回答是否适用,但我希望其他人能指导他。 – polygenelubricants 2010-07-08 15:21:01