0

我正在制作一个sinewave由类似于此gif的移动圆圈生成的小动画。

但是,我在使用glutWireTorusfor the circle 时遇到了一个奇怪的问题。即使我注释掉所有其他绘图代码并让圆环单独沿着 z 轴移动,我也会在它的内部看到闪烁的线条:

截屏

这是绘制所有内容的显示功能。我使用显示功能作为我的空闲功能,此外,我通过创建一个空闲功能并将我的更新代码放在那里检查了这是否是问题,但它仍然存在。

void display(void)
{
    glClearColor(0.f,0.f,0.f,0.f);
    glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); // clear the color buffer 
                                                           and the depth buffer

    glLoadIdentity();
    glTranslatef(0.0f,0.0f,-5.0f); //Push everything back 5 units into the scene, 
                                     otherwise we won't see the primitive 
    camera();    
    //yPrev = myCircle.y;

    glPushMatrix();         
    glTranslatef(0.0f,0.0f,t);
    glutWireTorus(0.02,1,100,100);   
    glPopMatrix();

    DrawAxes();    
    glutSwapBuffers(); //swap the buffers   
    glFlush();//Flush the OpenGL buffers to the window

    t-=0.002;

    if (t < -T)
    { 
        t = 0;
    }
}
4

1 回答 1

0

呃,有趣的是,我遇到了同样的问题。这是使用参数的图片

glutWireTorus(/*innerRadius*/0.3, /*outerRadius*/0.5, /*nsides*/32, /*rings*/32);

环面.32x32

使用参数的另一张图片

glutWireTorus(/*innerRadius*/0.3, /*outerRadius*/0.5, /*nsides*/64, /*rings*/128);

环面.64x128

我们不知道为什么没有glutWireTorus函数实现,但我们可以实现自己的环面,或者也许有人可以解释一下?

于 2013-07-20T03:36:05.483 回答