Większość aplikacji (i bibliotek) korzystających z OpenGL w systemie Linux ładuje libGL.so
w środowisku wykonawczym za pomocą interfejsu API dlopen
, zamiast dynamicznie łączyć się z nim.OpenGL w systemie Linux: dlopen libGL.so
Dlaczego to robią?
Jedyny powód, jaki mogę sobie wyobrazić, to fakt, że każdy sprzedawca sterowników graficznych oferuje inny libGL
, a dwa różne libGL
mogą być niezgodne z ABI. (No cóż, dlaczego mieliby być niekompatybilni z ABI? A nawet gdyby tak było, to dlaczego ładowanie ich przez dlopen
rozwiązałoby ten problem?)
W każdym razie, zakładając, że istnieje ku temu dobry powód, chciałbym to zrobić to również. Czy ktoś ma link do kodu źródłowego C/C++, który ładuje wszystkie funkcje OpenGL przez dlopen
, które mogę dołączyć do mojego projektu bez potrzeby wprowadzania zbyt wielu poprawek?
"* Większość aplikacji (i bibliotek) korzystających z OpenGL na Linuksie ładuje bibliotekę libGL.so w środowisku wykonawczym z użyciem dlopen *", to stwierdzenie nie jest prawdą, szczególnie w przypadku gier typu open source GL. – user502515