Які альтернативи GLUT існують?


12

Я намагаюся навчитися OpenGL, і я тільки дізнався, що GLUT є застарілим . Я вже знаю SDL, і, здається, це гарна альтернатива. Чи варто використовувати SDL для розробки ігор з OpenGL, чи є кращі альтернативи. Я новачок у розробці ігор, тому не знаю багато про сучасний стан.

Відповіді:


27

Я щойно дізнався, що GLUT є застарілим.

Ось що відбувається, коли ти приймаєш першу відповідь, яку ти натрапив; ви отримуєте погану інформацію. GLUT 3.7 не слід використовувати, але FreeGLUT повністю сумісний з ним.

Однак ваше питання йде в іншому місці. Для створення фактичної гри, форма GLUT * не підходить. Це не дає вам контролю над основним циклом, і вам це дійсно потрібно в грі (FreeGLUT має спосіб керувати основним циклом, але все одно це не дивно). GLUT призначений для написання графічних демонстрацій. Це дуже важливо під час тестування нових графічних ефектів, тому він повинен бути там у вашій панелі інструментів, коли це необхідно. Але ваш основний ігровий код ніколи не повинен використовувати його.

GLFW - це легка альтернатива GLUT, орієнтована на ігри. Він забезпечує основну підтримку для речей, крім створення вікна OpenGL. Це дозволяє отримувати дані, завантажувати зображення у вигляді текстур та кілька інших речей.

SDL , SFML та Allegro 5 - всі мультимедійні набори інструментів. Вони можуть створювати вікна OpenGL, але вони роблять набагато більше, ніж це. Вони забезпечують повну підтримку вводу, аудіо та різних інших речей, необхідних для гри. Якщо ви робите гру, будь-яке з них є гарною відправною точкою. Мені особисто подобається Allegro 5, але це лише моя упередженість щодо гарної документації та чистого API.


1
Для чого використовуються заголовки AAA (як для ПК, так і для багатьох платформ)? Вони використовують ці (GLFW, Allegro), які ви згадали, для обробки вікна opengl? або вони пишуть своє "все" з нуля?
Куазі Ірфан

@iamcreasy: "Назви AAA" (я дуже ненавиджу цей термін) не використовують жодне з них. Взагалі вони нічого не використовують з відкритим кодом. Вони могли б, але якщо вони збираються використовувати бібліотеку, вони краще скористаються підтримуваною бібліотекою. Є деякі винятки, такі як ODL або Bullet. Але це швидше винятки, ніж правило.
Нікол Болас

З якого часу GLFW "завантажує зображення як текстури"? Однозначно не в списку функцій; ні будь-які функції, які віддалено служать цій цілі в моєму заголовку glfw.
deceleratedcaviar

1
Інший великий мінус GLUT полягає в тому, що його вхідна модель не дуже добре підходить для ігор; немає можливості отримати необроблені ключові коди або отримати події натискання / випуску на самих клавішах модифікатора (наприклад, використання ctrl як кнопки загострення), а також немає способу отримати базовий контекст GL (який необхідний для включення vsync на X11, наприклад).
пухнастий

1
@NicolBolas ах, я забув про 2.7, вони [теми, зображення] були оголошені "поза контекстом" для випуску GLFW 3.0.
deceleratedcaviar


2

Якщо ваша мета - розробити гру,

Це залежить від того, хочете ви, щоб ваша гра була кросплатформою чи ні. Для портативних (Windows, Mac, Linux) ігор SDL здається єдиним вибором.

Якщо ви орієнтуєтеся лише на Windows та / або XBox, є набагато кращі альтернативи, наприклад XNA, яка звільняє вас від написання великої кількості коду вручну.

Якщо ваша мета - вивчити OpenGL,

Просто програмуйте в сирому OpenGL, але будьте готові зіткнутися з безліччю неінтуїтивних концепцій, математики та величезних посібників.


Як сказав Такумі, існує також SFML як портативна бібліотека. Краще, ніж SDL imho (він більш сучасний.)
kaoD

8
-1: "Для портативних (Windows, Mac, Linux) ігор SDL здається єдиним вибором." Це навіть не віддалено вірно. SFML і Allegro 5 обидва є альтернативами, і обидві мають більш широкі основи платформи.
Нікол Болас

1

GLUT - це API, а також бібліотека. Оригінальна бібліотека справді застаріла. API - це різна річ, почати було досить непогано, вона просто потребує доопрацювання для подолання обмежень та задоволення нових потреб. Основна поточна реалізація - FreeGLUT, яка підтримується і не застаріла. Це означає, що хорошою альтернативою GLUT (як у бібліотеці GLUT) є GLUT (як у FreeGLUT).

Проблема, зазначена вище при "керуванні основною петлею", є неправильною. З новішими версіями GLUT ви можете мати кращий контроль над своєю ігровою петлею (якщо це важливо для вас). Обмеження було зафіксовано glutMainLoopEvent (). Це та інші обмеження розглядаються тут:

http://en.wikipedia.org/wiki/OpenGL_Utility_Toolkit


" З новішими версіями GLUT ви можете мати кращий контроль над своїм циклом гри (якщо це важливо для вас). " Це гра, так що так , це важливо для вас. Крім того, glutMainLoopEventнавряд чи вдалий спосіб вирішити питання про управління основним циклом. Він все ще використовує модель, орієнтовану на події, для подачі ваших даних, а не модель опитування, де ви отримуєте потрібні дані, коли ви хочете.
Нікол Болас

Я мушу стверджувати, що модель, керована подіями, є більш ефективною, ніж опитування, якщо ви не опитуєте дані, що зберігаються з подій (що просто чудово). Опитування системних ресурсів повинно здійснюватися обережно.
Ingemar Ragnemalm

0

Qt підтримує OpenGL. Погляньте на Open Inventor і подумайте, чи має сенс для вас перейти безпосередньо до API API вищого рівня.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.