Використання OpenGL в проектах Delphi for .NET
Використання OpenGL в проектах Delphi for .NET
Розробляючи майбутнього програми, програміст часто стикається з дилемою: чи використовувати в своєму додатку компоненти стороннього розробника або створювати власні? Відповідь на це питання неоднозначна, все залежить від конкретної ситуації. Однак неправильно стверджувати, що застосування вже готових рішень завжди краще роботи "з нуля".
Серйозне програмне забезпечення відрізняється детально продуманим інтерфейсом, як призначеним для користувача (UI), так і на рівні програмного коду. Особливо гостро подібне питання виникає при організації графічного інтерфейсу (GUI), коли необхідно використовувати високопродуктивні засоби візуалізації та графіки.
Якісна графіка значно покращує зовнішній вигляд і статус додатка, однак її застосування вимагає від програміста особливих знань і навичок. Компоненти сторонніх розробників, на жаль, нерідко виявляються не тільки марними, але також серйозно перешкоджають виконанню роботи через необхідність освоєння і розуміння фундаментальних принципів і алгоритмів, на яких вони засновані, що в рамках комерційного проекту взагалі загрожує фатальними наслідками і неприпустимо в принципі. В цілому, рекомендувати використання професійних графічних компонентів можна лише в тому випадку, якщо програміст має достатню кваліфікацію і грунтовно володіє питаннями, розглянутими при їх створенні.
Протягом багатьох років OpenGL де-факто вважається одним із стандартів в області комп'ютерної графіки. Велике число додатків, що заслужили довіру користувачів по всьому світу, реалізують висновок графічної інформації саме цим програмним інструментом. Бібліотека OpenGL замислювалася і створювалася досить простий в застосуванні і водночас ефективною, тому поряд з більш пізніми продуктами з тієї ж області вона продовжує застосовуватися в новому програмному забезпеченні.
Тип створюваного додатка
Швидше за все, такий перехід, одночасно з освоєнням нової середовища розробки, забере у програмістів деякий час.
Базова структура бібліотеки OpenGL
Розглянемо структуру OpenGL.
У деяких джерелах по OpenGL можна знайти посилання на бібліотеку GLUT [3, 5], що представляє собою набір інструментів, для роботи, наприклад, з вікнами, як основними елементами інтерфейсу для виведення графіки. Однак цей компонент не є стандартним, і його отримання можливо через мережу Інтернет.
У файлах opengl32.dll і glu32.dll описані функції для обміну інформацією між вашим додатком (клієнтом) і системою OpenGL (сервером). Додаток формує набір відповідних команд, повідомляючи системі OpenGL, яку графічну інформацію необхідно побудувати і яким способом, а OpenGL через операційну систему взаємодіє з апаратними засобами комп'ютера і виробляє висновок сформованої графічної інформації.
Гнучкість бібліотеки полягає в тому, що в ній немає прив'язки до платформи комп'ютера, немає також і опису конкретних графічних пристроїв або їх моделей. Бібліотека містить лише набір командних інструментів, які програміст безпосередньо використовує в своїй програмі, і виступає своєрідним "посередником" між додатком, операційною системою і кінцевим пристроєм відображення графіки.
Для коректної взаємодії з графічним пристроєм сервера OpenGL потрібна інформація, щонайменше, про два об'єкти - посиланням на контекст пристрою і форматі пікселя.
Контекст пристрою, Device Context, є структурою, що містить дані про графічних режимах і атрибутах конкретної системи. Ця структура стандартизована, що дозволяє через неї встановити необхідну для роботи OpenGL посилання на контекст відтворення, Rendering Context, яка вказує на засоби для відтворення графічної інформації.
Посиланням на контекст пристрою є величина типу HDC (Handle Device Context), а посиланням на контекст відтворення - HGLRC (Handle OpenGL Rendering Context).
Написання наступного параграфа обумовлено однією важливою причиною. Перехід на Delphi .NET дозволив програмістам створювати додатки Windows Forms, проте зникла можливість підключення модулів з попередніх версій Delphi, наприклад, модуля Windows.pas. Тому блоки коду, необхідні для організації роботи нашого додатки, нам доведеться реалізовувати заново, максимально використовуючи угоди середовища Delphi .NET.
OpenGL в проектах ранніх версій Delphi
Всі основні функції динамічної бібліотеки opengl.dll імпортуються в відповідному заголовки OpenGL.pas, розташованому за замовчуванням в папці C: / Program Files / Borland / Delphi6 / Source / Rtl / Win / OpenGL.pas, якщо ви використовуєте Delphi 6.