Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

анимация

22K
23 августа 2009 года
FloyDos
81 / / 14.08.2009
Цитата:
2.8 Анимация
Давайте оживим нашего снеговика и добавим интерактивность. Для этого надо отрисовывать кадры и реагировать на внешние события от клавиатуры или мыши. Для отрисовки кадров их надо как-то различать. Для этого мы в функции display вводим переменную time типа int с модификатором static. Создайте новый проект и в функцию display введите следующее: "static int time=0;". Модификатор static означает, что значение переменной будет сохраняться при выходе из функции. Начальное значение мы устанавливаем в ноль. Если функция display не зависит от времени, то счетчик кадров можно и не вести. Теперь добавьте следующие строчки:

glPushMatrix();
glTranslated( ((double)time)/100.0 ,0,0);
... // здесь код из предыдущего упражнения "Cнеговик"
glPopMatrix();

Запустив приложение, вы увидите, что снеговик пополз вдоль оси Х. Вот так вы можете делать анимацию. Т.е. теперь координаты объектов вычисляются в зависимости от времени.


Странно, но, мне кажется, надо бы наоборот убрать эти строчки- glPush и glPop. Т.е. если делать как автор прописал, то выходит, что постоянно возвращаемся в одну и ту же точку. И ничего никуда не движется

22K
23 августа 2009 года
FloyDos
81 / / 14.08.2009
Вероятно, переменную time необходимо объявлять не в функции дисплей?А то кк-то странно выходит - все время ее обнулять...
9
23 августа 2009 года
Lerkin
3.0K / / 25.03.2003
Книжка Тарасова - старое, унылое чтиво. Совершенно не соответствует нынешней реальности в OpenGL. Да и в своё время не котировалась. Чувак и сам не в курсе был, о чем писал.

По вопросам:
1. Почему нет? Распишите по шагам, что происходит при сохранении и восстановлении исходной матрицы (очевидно матрица ModelView модельно-видовая).
2. Переменная объявлена как static. "Обнуление" происходит только при инициализации.

Знаете кого-то, кто может ответить? Поделитесь с ним ссылкой.

Ваш ответ

Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог