ки. Увійти в основний цикл і обробляти події. */p> int main (int argc, char ** argv) {
glutInit (Sargc, argv),
glutInitDisplayMode (GLUT_SINGLE | GLUT_RGB);
glutInitWindowSize (250, 250);
glutInitWindowPosition (100, 100);
glutCreateWindow ("hello");
init ();
glutDisplayFunc (display);
glutMainLoop ();
return 0;/* Мова програмування С, згідно ISO, вимагає, щоб функція main повертала значення типу int. * /} h3> 2.3.4 Обробка подій введення даних користувачем
Для того щоб зареєструвати зворотний виклик команд, які викликаються в тому випадку, коли відбуваються зазначені події, можна скористатися наступними підпрограмами.
Підпрограма glutReshapeFunc (void (* func) (int w, int h)) вказує на те, яке саме дію має бути виконане при зміні розміру вікна.
Підпрограми glutKeyboardFunc (void (*/В«wc) (unsigned char key, int x, int у)) іglutMouseFunc (Void (* func) (int button, int state, int x, int у)) дозволяють пов'язувати певну клавішу клавіатури або кнопку миші з підпрограмою, що викликається, коли ця клавіша або кнопка миші натискається або відпускається користувачем.
Підпрограма glutMotionFunc (void (* func) (int x, int у)) реєструє деяку підпрограму для зворотного виклику при переміщенні миші з натиснутою кнопкою.
2.3.5 Управління фоновим процесом
Можна визначити деяку функцію, яка повинна бути виконана за допомогою підпрограми glutIdleFunc (void (*/В«nc) (void)) у тому випадку, якщо не очікуються
ніякі інші події, наприклад, коли цикл обробки подій в іншому випадку перейшов би в стан простою. Ця підпрограма в якості свого єдиного параметра приймає покажчик на дану функцію. Для того щоб відключити виконання цієї функції, передайте їй значення NULL (нуль).
2.3.6 Малювання тривимірних об'єктів
Бібліотека GLUT включає в себе кілька підпрограм для малювання перерахованих нижче тривимірних об'єктів:
Конус
Ікосаедр
Чайник
Куб
Октаедр
Тетраедр
Додекаедр
Сфера
Тор
Ви можете намалювати ці об'єкти у вигляді каркасних моделей або у вигляді суцільних зафарбованих об'єктів з певними нормалями до поверхонь. Наприклад, підпрограми для куба і сфери мають наступний синтаксис:
void glutWireCube (GLdouble size);
void glutSolidCube (GLdouble size);
void glutWireSphere (GLdouble radius, GLint slices, GLint stacks);
void glutSolidSphere (GLdouble radius, GLint slices, GLint stacks);
Всі ці моделі малюються центрованими щодо початку світової системи координат. b>
3. Анімація
3.1. Анімація комп'ютерної графіки
Одна з найбільш захоплюючих речей, яку ви можете зробити в області комп'ютерної графіки, - це малювання рухомих зображень. Незалежно від того, чи є ви інженером, що намагаються побачити всі сторони розроблюваного механічного вузла, пілотом, що вивчають з використанням моделювання процес пілотування літака, або ж просто пристрасним любителем комп'ютерних ігор, очевидно, що анімація є важливою складовою частиною комп'ютерної графіки.
У кінотеатрі ілюзія руху досягається за рахунок використання послідовності зображень і проектування їх на екран з частотою 24 кадри на секунду. Кожен кадр послідовно переміщається в положення позаду об'єктиву, затвор відкривається, і даний кадр відображається на екрані. Затвор на мить закривається, в той час як плівка простягається до наступного кадру, потім на екрані відображається цей наступний кадр, і так далі. Хоча кожну секунду ви спостерігаєте на екрані 24 різні кадру, ваш мозок змішує всі ці кадри в "безперервну" анімацію. (Старі фільми Чарлі Чапліна знімалися з частотою 16 кадрів в секунду і при відтворенні фігури рухалися помітними різкими поштовхами.) Екран в комп'ютерній графіці зазвичай оновлюється (Перемальовує зображення) приблизно від 60 до 76 разів на секунду, а іноді прикладні програми забезпечують навіть приблизно 120 оновлень в секунду. Очевидно, що анімація з частотою 60 кадрів в секунду виглядає більш "гладкої", ніж при частоті 30 кадрів в секунду, а 120
кадрів на секунду помітно краще, ніж 60 кадрів в секунду. Однак частоти регенерації, що перевищують 120 кадрів в секунду, можуть бути за межами точки зменшення повторного появи, залежно від меж сприйняття.
Основна причина того, що технологія проектування кінофільму працює, полягає в тому, що кожен кадр є закінченим у момент його відображення на екрані. Припустимо, що ви намагаєтеся зроб...