Freeglut vs SDL vs GLFW

26

muszę przenieść mój projekt gry z Androida (napisany w C, OpenGL ES 2.0, dzięki NDK) na platformy Windows i Linux. Oczywiście będę musiał przepisać kod zależny od platformy, ale teraz mam pytanie, która biblioteka do tworzenia OpenGL i obsługi uchwytów wejściowych.

Wystarczy szybki googling, aby zdobyć 3 kandydatów:

1) Freeglut - przerobiony i darmowy stary dobry GLUT.
2) SDL - najbardziej znana jedna lib, używana w wielu grach.
3) GLFW - jakiś nowy, ale prosty i funkcjonalny.

Właśnie opracowałem PC i nie widzę żadnych istotnych różnic między nimi. Czy możesz mi pomóc, który wybrać? Oczywiście potrzebuję tylko podstawowej myszy / klawiatury i stworzenia kontekstu OpenGL, a także użyję GLEW, aby łatwo dostać się do nowoczesnego OpenGL.


źródło
2
Odpowiedź będzie bardzo pozytywna i nie jest tak naprawdę dobrym pytaniem dla formatu SE. To powiedziawszy, moją wysoce upartą odpowiedzią - wykorzystałem wszystkie trzy do prawdziwych projektów i kilka innych, takich jak SFML, GLUT, Qt i ręcznie rozwijając rozwiązanie - jest to, że SDL zapewnia dobre połączenie funkcji, stabilności i łatwości użytkowania. Szczególnie polecam wersje przedpremierowe 2.0 (dostępne tylko po sprawdzeniu repozytorium Mercurial i samodzielnym zbudowaniu, ale to całkiem proste). Po drugie, SFML jest całkiem niezły. Znalazłem zbyt wiele błędów w GLFW, GLUT jest zły dla gier, a ręczne przewijanie to dużo pracy.
Sean Middleditch,
Osobiście polecam SDL, ponieważ obsługuje on wszystkie części gry, od wejścia przez grafikę po audio i wejście. Może to jednak ograniczać, ale ponieważ pochodzisz z już opracowanej gry na bardziej ograniczoną platformę, myślę, że byłby to dobry wybór.
CobaltHex,
Tak, to ankieta. Mój głos jest GLFW, prosty, łatwy, nigdy nie miałem problemów, które nie zostały rozwiązane. Jest bardzo lekki i łatwy w kompilacji.
spowolniony,

Odpowiedzi:

29

GLFW jest nowoczesny i ma bardzo dobrze zdefiniowany zakres . Jest również w bardzo aktywnym rozwoju.

SDL z drugiej strony jest solidny i ma wiele funkcji w różnych zakresach, ale trochę brakuje we wszystkich z nich (na przykład: SDL może robić audio, ale możesz preferować używanie OpenAL, ponieważ jest znacznie lepsze pod tym względem). Może być godne uwagi, że SDL został przeniesiony na wiele różnych platform, w przeciwieństwie do GLFW, który jest tylko dla platform stacjonarnych (win / linux / mac).

GLUT , cóż, należy unikać . Po prostu nie ma w tym nic, co czyni go dobrym.


Moim zdaniem jako perfekcjonista GLFW jest lepszym wyborem. Ponieważ robi dokładnie to, czego się chce, nic więcej. Bardzo aktywny rozwój jest również dobrym znakiem dla długoterminowych projektów, ponieważ zwykle oznacza, że ​​błędy zostaną naprawione, nowe funkcje zostaną dodane, będzie nadążał za nowszymi standardami i że nie zostanie porzucony w żadnym momencie. Nie jest to ważne w przypadku szybkiego portu lub sześciomiesięcznej gry, ale dla silnika lub biblioteki, której chcesz ponownie użyć, chciałbym o tym pamiętać.

API-Beast
źródło
7
Ale OP pyta o Freegluta, a nie GLUT !!!
@ user3473 „FreeGLUT jest open source alternatywą dla biblioteki OpenGL Utility Toolkit (GLUT).”
YoYoYonnY
@YoYoYonnY Więc są GLFW i SDL, stąd to pytanie.
Dan
@ Dan ... nie. GLFW, a zwłaszcza SDL, zdecydowanie nie są alternatywami dla GLUT, ponieważ możesz robić z nimi rzeczy, których nie możesz zrobić z GLUT i odwrotnie.
YoYoYonnY
@YoYoYonnY Z FreeGLUT możesz robić rzeczy, których nie możesz zrobić z GLUT. Mój punkt jest nadal aktualny.
Dan