/b>.
Прості додатки, які не вимагають швидкої графіки, можуть використовувати GDI. Однак GDI не забезпечує якісної анімації, оскільки в ньому немає можливості синхронізації з кадровим буфером. Також, в GDI немає растеризації для отрисовки 3D-графіки. Сучасні графічні додатки використовують DirectX або OpenGL, що дає програмістам доступ до більшої кількості апаратних можливостей.
Звідси висновок: GDI не підходить для розробки даного програмного продукту. Тепер стоїть питання: Який з двох варіантів API вибрати? DirectX або OpenGL? [13]
Порівняємо ці дві технології. DirectX побудований за об'єктно-орієнтованої схемою, а OpenGL по процедурної. Що краще? Програма на GL однаково добре виглядає і на C ++, і на чистому C, чого не скажеш про DX (хоча це надумане перевагу, нині мало хто пише на C, особливо під Windows). А ось простота архітектури GL - незаперечний плюс: GL працює виключно з примітивами (трикутники, відрізки і точки) і управляється набором булевих змінних, які дозволяють включати або відключати деякі функції - наприклад, накладати текстуру чи ні, чи використовувати освітлення і т. Д. Код для відображення перший трикутника займає приблизно п'ятдесят рядків. У DX ця цифра куди більше. З одним-то трикутником у GL все добре, але як тільки захочеться використовувати що-небудь із сучасних 3D-ефектів - з'являються розширення GL, і ще недавно простий і зрозумілий код тоне в незрозумілих і нічого не значущих для людини, не в таємниці 3D-Графіка, рядках.
Як не дивно, ведуться суперечки про продуктивності. Перевірити це простіше простого, але навіщо?- Адже результат легко передбачуваний. Він буде однаковий для обох бібліотек, оскільки зараз практично всі функції реалізуються безпосередньо через апаратні прискорювачі. Розбіжність результатів може бути тільки через похибки вимірювань; сюди відноситься і оптимізація тестирующего коду, і специфіка конкретних драйверів, але в цілому для виконання коду на GL і DX відеокарта повинна виконувати одні й ті ж дії, а значить, і дискусії про швидкодію безпідставні. Звичайно, можна копати глибше і сперечатися про якість шейдерних компіляторів HLSL [High-level Shader Language - С-подібна мова для написання шейдеров в DirectX 9.0] і GLSL [OpenGL Shading Language - аналог HLSL для OpenGL], але лізти в такі нетрі не варто, тим більше що обидва рішення далекі від досконалості.
Можливо, відповідь в можливостях сучасного заліза, і що для їх використання надають OpenGL і DirectX. Перш за все, нинішні відеокарти - це програмовані пристрої. Тепер деякий код можна виконувати прямо на графічному процесорі (GPU). Ці програми називають шейдерами. Вони дозволяють створювати складні ефекти в реальному часі. Спочатку ці програми можна було писати тільки на фірмових мовах виробників відеокарт - ATI і nVidia. Обидві мови дуже схожі на асемблер, але, на жаль, несумісні. А кому захочеться писати два різних коду для реалізації одного і того ж ефекту? І ось в DirectX 8.0 з'являється універсальна мова програмування шейдеров. Він теж схожий на асемблер, але дозволяє обійтися одним шейдером для обох типів відеокарт. І знову заковика: кому зараз подобається програмувати на мовах низького рівня? І ось Microsoft представляє у своєму DX 9.0 вже C-подібна мова HLSL. ARB (розробники OpenGL) у відповідь викотив аналогічну технологію GLSL. Як вже говорилося, обидві ці технології далекі від досконалості, насамперед через слабку оптимізації компіляторів.
Отже, дві бібліотеки з практично однаковими можливостями і швидкодією. Відмінності лише в складності написання коду. І навіть тут явного лідерства немає. Все залежить від рівня використовуваних в програмі ефектів. Якщо достатньо базової функціональності OpenGL (тобто не будуть використовуватися розширень), то розумніше використовувати саме GL, а якщо справа дійде до просунутих ефектів, тут переважніше DirectX.
Так що ж вибрати? Слід вирішити, які ефекти будуть необхідні: чи можливо обійтися стандартної функціональністю GL, або неодмінно потрібно використовувати більш просунуті ефекти. І, нарешті, особисті переваги.
Щоб розробляється продукт був більш видовищним, слід вибрати DirectX, та й є досвід у використанні даної технології.
3.2 середу розробки
При виборі середовища розробки програмування для проекту потрібно брати до уваги такі вимоги:
· Можливість роботи з DirectX
· Висока швидкість розробки
· Наявність досвіду роботи в даному середовищі
В якості середовища була обрана Visual Studio 2008, тому задовольняє всім вимогою і є потужною середовищем для розробки, що забезпечує високу якість коду протягом усь...