Używam radości z SFML przez jakiś czas i używałem wbudowanego ładowarki funkcyjnej, {x0}}, co działało dla mnie w porządku. Teraz patrzę na Glfw i mówi zarówno w swoim przewodniku, jak i na Wiki Khronos OpenGL, które powinieneś używać gladLoadGLLoader((GLADloadproc) glfwGetProcAddress). Czy jest dla tego jakiś szczególny powód?

2
kiroma 27 lipiec 2020, 20:35

1 odpowiedź

Najlepsza odpowiedź

Czy jest dla tego jakiś szczególny powód?

Korzystanie z gladLoadGL w połączeniu z na przykład GLFW powoduje, że posiadanie dwóch części kodów w tym samym programie, który w zasadzie robią to samo, bez żadnych korzyści.

Na przykład spójrz na Jaki Glfw robi w systemie Windows (Jest podobny na innych platformach):

_glfw.wgl.instance = LoadLibraryA("opengl32.dll");

Dynamicznie ładuje bibliotekę GL za pleców. I zapewnia abstrakcję zapytań wskaźniki funkcji OpenGL (podstawowych i przedłużenia, przy użyciu zarówno wglGetProcAddress i surowego GetProcAdress).

Gl Loader zadowolony generuje Czy to samo rzeczy:

    libGL = LoadLibraryW(L"opengl32.dll");

Teraz można argumentować, że dwukrotnie ładowanie tej samej dzielonej biblioteki nie jest wielką sprawą, ponieważ powinno to spowodować ponowne wykorzystanie tych samych uchwytów wewnętrznych i jest rozpatrywany przez liczenie referencyjne, ale nawet to jest po prostu niepotrzebny kod i nadal Zużywa pamięć i jakiś czas podczas inicjalizacji.

Więc chyba że masz bardzo konkretny powód, dlaczego potrzebujesz kodu radości - może w zmodyfikowanym formularzu, aby naprawdę zrobić coś innego (np W tym kodzie - i wydaje się rozsądną rekomendacją, aby nie zawierać kodu, który nie jest potrzebny.

W boku Uwaga: Często widzę projekty przy użyciu loaderów GLFW i GL Like Like lub Glew Linking opengl32.lib lub libGL.so w czasie - jest to absolutnie niepotrzebne również, ponieważ kod będzie zawsze ładować biblioteki w czasie wykonywania Ręcznie i nie powinno być żadnych symboli GL pozostawionych w czasie linku, który łącznik mógłby rozwiązać od GL LIB.

3
genpfault 27 lipiec 2020, 19:38