#opengl
#opengl
Вопрос:
void display(void)
{
char text1[10],text2[10];
int i;
glPointSize(2.0);
glClear(GL_COLOR_BUFFER_BIT);
circle_draw(x1center,y1center,radius1);
y1center-=5;
while(y1center>=100)
{
glutPostRedisplay();
y1center-=5;
}
glFlush();
}
Я хочу переместить окружность вдоль вертикальной оси.
Но при использовании функции glutPostRedisplay() я могу видеть только начальную и конечную позиции круга. Переход происходит слишком быстро, чтобы его можно было увидеть.
Ответ №1:
void display(void)
{
char text1[10],text2[10];
int i;
glPointSize(2.0);
glClear(GL_COLOR_BUFFER_BIT);
circle_draw(x1center,y1center,radius1);
glFlush();
}
void update(int) {
if (y1center > 100) {
y1center -= 5;
glutPostRedisplay();
glutTimerFunc(100, update, 0);
}
}
int main() {
// ...
glutTimerFunc(100, update, 0);
// ...
}
Комментарии:
1. 571 C:Dev-CppincludeGLglut.h слишком мало аргументов для функции `void glutTimerFunc(unsigned int, void (*)(int), int)’
2. Я изменил прототип обновления на void update(int); И обратный вызов функции на glutTimerFunc(100,update, 100); Но это по-прежнему не дает желаемого результата
3. Упс, да, прошло некоторое время с тех пор, как я ею пользовался. Вам нужно добавить еще один вызов
glutTimerFunc
внутриupdate
. Смотрите обновленный код…