Jogl制作球消失了

时间:2009-10-30 15:57:46

标签: jogl

目前我正在使用JOGL进行球检测程序时,我被告知一旦它们彼此靠近就会使球消失。

    //this is the method from the main class
    public void display(GLAutoDrawable drawable) {
    GL gl = drawable.getGL();

    gl.glClear(GL.GL_COLOR_BUFFER_BIT | GL.GL_DEPTH_BUFFER_BIT);
    gl.glLoadIdentity();
    gl.glColor3f(1.0f, 1.0f, 1.0f);
    glut.glutWireCube(2.0f * limit);
    for (int i = 0; i < ball.length; ++i)
    {
    ball[i].display(gl);        
    }
    for (int i = 0; i < ball.length; ++i)
    {
    ball[i].moveRandomly();
    }
    //this is the method from the auxiliary class 
    for (int i = 0; i < ball.length; ++i)
    {
      for (int j = 0; j < ball.length; ++j)
      {
        if (ball[i].distanceFrom(ball[j]) <= 10)
        {

        }
      }
    }
}

  void display(GL gl) {

    gl.glLoadIdentity();
    gl.glTranslatef(position[0], position[1], position[2]);
    gl.glColor3fv(colour, 0);
    glut.glutSolidSphere(radius, 10, 10);
    //glut.glutSolidTeapot(radius);
}

我尝试这样做是无济于事的,球一下子消失了,我也尝试用相同的结果减小半径,在正确的方向上任何一点都会非常感激。

2 个答案:

答案 0 :(得分:2)

他们全部消失的原因是每个球都与自己进行比较。

if语句之前的内部循环中添加它(这是一个快速修复):

if (i == j) continue;

答案 1 :(得分:0)

我现在有更多的问题而不是帮助。

首先,你有多少个球?

这条线困扰我:

if(ballGone == false)
{
    glut.glutSolidSphere(radius, 10, 10);
}

如果ballGone为假,那么球不会显示,但这意味着只有一个球,所以当它设置为假时,不会显示球。

根据这里:http://www.cs.umd.edu/~meesh/kmconroy/JOGLTutorial/我的担忧应该是合理的:

  

显示非常相似   java.awt.Component.paint()就是这样的   每次画布需要时调用   重绘/重新绘制/重新显示

因此,您可能希望了解如何重绘并确保将绘制未设置为false的状态的每个对象。