OpenGL і C ++ Builder. Частина 1.
Налаштування Borland С ++ Builder 6 для роботи з OpenGL.
Мета даної статті - максимально допомогти Вам у налаштуванні середовища C ++ Builder 6 і підготовці додаткових бібліотек для роботи з графічною системою OpenGL.
Далі. У середовищі BCB є файл $ (BCB) \ lib \ Import32.lib, який містить посилання «на все потрібне», в тому числі і на dll-бібліотеки, згадані вище. При компіляції проекту з IDE або за допомогою компілятора з лінковкою (bcc32 -v -Tpe test.cpp) ця бібліотека підключається автоматично. Якщо лінкуем ззовні ilink32.exe, треба підключити цю бібліотеку явно.
У файлах-заголовках (де потрібна підтримка OpenGL) вставляються 2 рядки
Таким чином, якщо в шляхах проекту прописані include-директорія $ (BCB) \ include, lib-директорія $ (BCB) \ lib і файли gl.h, glu.h, import32.lib на своїх місцях і не поламані (це так по замовчуванням), то взагалі нічого більше робити не треба.
Є ще одна маленька деталь, пов'язана з обробкою математичних помилок співпроцесора. Якщо ваша програма несподівано «вилітає» при обчисленнях з плаваючою точкою в бібліотеках MS, то рекомендується перед малюванням кожного кадру (в Win9x) вставляти пару команд
_control87 (MCW_EM, MCW_EM); / * Визначена в float.h BCB * /)
або одну другу команду (Win2k, WinXP) в секції ініціалізації.
Ці рідкісні «вилітання» відбуваються при порушенні винятків від співпроцесора. MS ігнорує ці винятки, Borland - немає. Команда _control87 з зазначеними прапорами призводить до ігнорування цих винятків і в BCB.
Тепер про бібліотеки GLAUX і GLUT, використання яких часто викликає безліч питань.
Перша служить в основному для завантаження зображень в текстури і для побудови деяких стандартних тривимірних тел. Друга, будучи платформеннонезавісімой, призначена для створення вікон рендеринга (відтворення графіки) в віконних і не віконних середовищах, обробки повідомлень на базі каркаса функцій із зворотним викликом (CALLBACK), підтримки пристроїв введення, роботи з холостими циклами, програмними таймерами, каскадних меню, підтримки різних шрифтів і теж для побудови тривимірних тіл.
Не рекомендується використовувати їх в просунутих додатках, тому що повідомлялося, що перша містить витоку пам'яті, а друга має обмеження і не працює в повному обсязі з VCL. Їх поширення пояснюється наявністю великої кількості прикладів з їх використанням в посібниках і підручниках.
Якщо у вас немає заголовки glaux.h загляньте в архів в кінці статті. Потім помістіть його в $ (BCB) \ include \ gl.
Для GLAUX є заміни (для роботи з зображеннями):
1. На NeHe для скачування є заміна GLAUX для завантаження зображень (Misc), там же, до речі, є порт для всіх уроків в C ++ Builder 6, за якими можна, працюючи в BCB, вивчати OpenGL на чистому Win API.
4. см. Приклад $ (BCB) \ Examples \ OpenGL \ Drawing \ GlSkel.cpp (SetupTextures), в якому показано, як завантажувати .bmp-файли за допомогою компонента TBitmap (і навіть задавати прозорий колір).
Кому дуже потрібен GLUT:
Для практики рекомендується створити декілька типів проекту, використовуючи файли прикладів з завантаженого пакету glut-3.7.6-src.zip (папка examples). Візьмемо, наприклад, файл triangle.c. У BCB створимо консольний додаток -File / New / Other і на закладці New виберемо Console Wizard. Встановимо галочку Specify project source і виберемо вказаний файл (не забудьте, що його розширення .c). Все готово! Ми створили проект консольного застосування на чистому С. Зверніть увагу, що при використанні GLUT не потрібно писати директиви.
Необхідна тільки рядок
Трохи складніше створити проект програми на C ++. Використовуючи Console Wizard, слід зняти зазначену галочку і встановити перемикач в C ++. Збережіть отриманий проект. Тепер вставте весь текст, крім функції main, з triangle.с в Unit1.cpp відразу після #pragma hrdstop, а вміст функції main в Unit1.cpp замініть вмістом функції main з файлу triangle.с. Спробуйте скомпілювати проект. Не вийшло? Не біда. Додайте в властивості проекту Project Options \ Directories / Conditionals \ Conditional defines через «;» GLUT_BUILDING_LIB.
Ще раз повторю. Краще не користуватися GLAUX і GLUT (крім як для навчання), а працювати тільки засобами BCB. Розберіться в 2-х прикладах $ (BCB) \ Examples \ OpenGL.
dplakosh / - попередник попереднього (BCB5) (могутня російська мова!).
(Так само дивись в архіві в кінці статті).
Наведеної інформації достатньо, щоб почати самостійно застосовувати Borland C ++ Builder для розробки проектів під OpenGL. Одне «але» - не був розглянутий повноекранний режим. Але про нього - в наступний раз.
Використовувати виключно C ++ Builder можна з різних причин:
Хочу і все. Звик.
Дійсно, продукт грандіозний. Відірватися важко. Але замислювався він, в першу чергу, для швидкої розробки інтерфейсу і роботи з базами даних. Щоб вирішувати на ньому інші нестандартні завдання, вивчити його доведеться набагато глибше, ніж це зазвичай робиться. Але старання окупаються. Можу порекомендувати книги Charlie Calvert'а.
Не хочу вивчати всі ці WM_SYSCOMMAND ...
Сам грішу цим, тим більше що C ++ Builder витончено маскує всі ці складності. Але без хорошого знання Win API в програмуванні під Windows далеко не просунутися ...
Немає Visual Studio.
Можна завантажити безкоштовний VS Express Edition. А, до речі, C ++ Builder звідки?
Але найголовніше, люблю RAD і загорнуті в витончену обгортку події.
Так, в цьому Borland обігнала MS років на 10. І тільки з появою .NET MS підтяглася. Але тут доведеться вивчати нову середу, виникнуть супутні проблеми ... Коло замкнулося.
C GLScene маленька труднощі. 714 реліз під Delphi і доведеться потрудитися, налаштовуючи TortouseCVS для скачування з CVS гілки GLScene для C ++ Builder (див. FAQ) і вивчаючи саму Сцену. Але взагалі перспективно, навіть обіцяється кроссплатформенность! Так, Сцена гальмує. Але це питання дуже тонкий. І, потім, перший стабільний реліз з'явився лише півроку тому, хоча розробка ведеться майже 5 років. Найближчим часом очікується новий реліз.