Теми рефератів
> Реферати > Курсові роботи > Звіти з практики > Курсові проекти > Питання та відповіді > Ессе > Доклади > Учбові матеріали > Контрольні роботи > Методички > Лекції > Твори > Підручники > Статті Контакти
Реферати, твори, дипломи, практика » Курсовые проекты » Використання OpenGL

Реферат Використання OpenGL





ити комп'ютерну анімацію з свого кінофільму, складається з одного мільйона кадрів, за допомогою програми, подібної на показаний нижче фрагменту псевдокоду

відкрити вікно ();

for (i = 0; i <1000000; i + +) {

очистити вікно (),

нарісовать_кадр (i);

)

Якщо ви додасте час, що потрібно вашій обчислювальній системі для того, щоб очистити екран і намалювати типовий кадр, то наведена вище програма показує все більш тривожні результати залежно від того, наскільки близько підходить час, необхідний їй для очищення екрану і промальовування кадра до 1/24 частці секунди. Припустимо, що процедура малювання в цій програмі майже повністю займає 1/24 частку секунди. Елементи, намальовані на самому початку, видимі протягом повної 1/24 частки секунди і представляють суцільне зображення на екрані; елементи, намальовані наприкінці розглянутого інтервалу, негайно очищаються, як тільки програма запускається для малювання наступного кадру. Вони являють собою в кращому випадку якусь подобу примарного зображення, оскільки більшу частину інтервалу в 1/24 секунди ваш очей розглядає очищений фон замість тих елементів, які, до нещастя для них, були намальовані останніми. Проблема в даному випадку полягає в тому, що наведена вище програма не відображає повністю намальовані кадри; замість цього ви спостерігаєте процес малювання в його розвитку.

Більшість реалізацій бібліотеки OpenGL забезпечує подвійну буферизацію - апаратну або програмну, яка надає два готових буфера з кольоровими зображеннями. Зображення з одного буфера відображається на екрані, в той час як в іншому буфері малюється нове зображення. Коли малювання чергового кадру завершується, ці два буфера міняються місцями, і той буфер, що містив відображені зображення, тепер використовується для малювання, і навпаки. Це схоже на роботу кінопроектора, плівка в якому містить всього два кадри і склеєна в петлю; в тоді як один проектується на екран, кіномеханік відчайдушно стирає і перемальовує невидимий глядачеві кадр. Якщо кіномеханік працює досить швидко, то глядач не помічає відмінностей між таким "Кінопроектором" і реальної системою, в якій всі кадри вже намальовані, і кінопроектор просто відображає їх один за іншим. При використанні подвійний буферизації кожен кадр відображається лише тоді, коли його малювання завершене; глядач ніколи не побачить частково намальованого кадру.

Псевдокод зміненої версії приведеної вище програми, яка відображає плавно анімовану графіку, використовуючи при цьому подвійну буферизацію, міг би виглядати наступним чином:

открыть_окно_в_режиме_двойной_буфериэации (); for (i = 0; i <1000000; i + +) {p> очіс1іть_окно ();

нарісовать_кадр (i);

поменять_буфери_местамі () ;} b>
3.2 Оновлення інформації, що відображається під час паузи

Для деяких реалізацій бібліотеки OpenGL на додаток до простої зміни місць відображуваного і мальованої буферів, підпрограма поменять_буфери_местамі () очікує, поки не закінчиться поточний період оновлення інформації, що відображається для того, щоб інформація з попереднього буфера був відображена повністю. Ця підпрограма також дозволяє новому буферу бути повністю відображеним, починаючи з початку. Приймаючи, що ваша обчислювальна система забезпечує оновлення відображення 60 разів на секунду, отримаємо, що максимальна швидкість передачі кадрів, якій можна досягти - 60 кадрів в секунду ( fps - frames per second ). Це означає, що, якщо всі кадри можуть бути очищені і намальовані протягом 1/60 частки секунди, то ваша анімація при даній швидкості буде відтворюватися плавно.

У подібних системах часто буває так, що кадр виявляється занадто складним для того, щоб бути намальованим протягом 1/60 частки секунди, і, таким чином, кожен кадр відображається більше раза. Якщо, наприклад, потрібно 1/45 частка секунди для того, щоб намалювати деякий кадр, ви задаєте швидкість передачі кадрів рівної 30 fps, і тоді графічне зображення "простоює" протягом 1/30 - 1/45 = 1/90 частки секунди на кожен кадр, або третину всього часу відображення.

Крім того, частота оновлення відображається відеоінформації є постійною величиною, яка може мати деякі несподівані наслідки з точки зору продуктивності. Наприклад, при періоді поновлення інформації, яка відображається на моніторі, рівної 1/60 частки секунди і при постійній швидкості передачі кадрів ви можете працювати зі швидкостями 60 fps, 30 fps, 20 fps, 15 fps, 12 fps і т. д. (60/1, 60/2, 60/3, 60/4, 60/5, і т. д.). Це означає, що якщо ви пишете прикладну програму і поступово додаєте до неї нові функціональні можливості (Припустимо, що ця програма - імітатор польоту, і ви додаєте наземний пейзаж), то спочатку кожна нова добавляемая деталь не буде надавати ніякого ефекту на сумарну продуктивність - ви все одно отримуєте швидкість передачі кадрів, рівну 60 ...


Назад | сторінка 9 з 12 | Наступна сторінка





Схожі реферати:

  • Реферат на тему: Проектування інформаційної системи з обліку кадрів у відділі кадрів
  • Реферат на тему: Аналіз показників руху кадрів за поточний період
  • Реферат на тему: Як бути, якщо контрагент за договором - нерезидент?
  • Реферат на тему: Розрахунок ї Оптимізація характеристик ЗАСОБІВ передачі ІНФОРМАЦІЇ в систем ...
  • Реферат на тему: Автоматизація обліку кадрів на підприємстві за допомогою 1С: Підприємство