Я работаю над небольшой анимацией sinewave
генерируется движущимся кругом, подобным этому GIF.
Однако у меня странная проблема с использованием glutWireTorus
для круга. Даже когда я закомментирую весь другой код рисования и оставлю тор, движущийся только вдоль оси 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;
}
}
Интересно, я столкнулся с той же проблемой.
Вот картинка с использованием параметра
glutWireTorus(/*innerRadius*/0.3, /*outerRadius*/0.5, /*nsides*/32, /*rings*/32);
другое изображение с использованием параметра
glutWireTorus(/*innerRadius*/0.3, /*outerRadius*/0.5, /*nsides*/64, /*rings*/128);
Мы не знаем почему без glutWireTorus реализация функции, но мы можем реализовать наш собственный тор, или, может быть, кто-то может объяснить это?
Других решений пока нет …