OpenGL - это не библиотека, которую вы обычно компилируете и отправляете сами (если вы не являетесь дистрибьютором Linux и не упаковываете X.Org/Mesa).Ваша программа просто динамически связывается с libGL.so (Linux / BSD), opengl32.dll (Windows, на 64-битных системах, она также называется opengl32.dll, но на самом деле это 64-битная DLL) или OpenGL Framework (MacOS X),Это дает вашей программе доступ к установке системы OpenGL.Версия / профиль, который вы хотите использовать, не влияет на библиотеку, на которую вы ссылаетесь!
Затем, после инициализации вашей программы, вы можете проверить, какая версия OpenGL доступна.Если вы хотите использовать OpenGL-3 или 4, вам придется перепрыгнуть через несколько дополнительных обручей в Windows, чтобы в полной мере использовать его, но, как правило, какая-то оболочка в любом случае помогает вам в создании контекста, сводя его к нескольким строкам..
Затем в программе вы можете реализовать несколько путей кода для различных версий.Обычно более ранние кодовые пути OpenGL разделяют большое подмножество с кодовыми путями более высокой версии.Я рекомендую писать новый код в наивысшей доступной версии, а затем добавлять дополнительные пути кода (часто просто замены, которые могут быть выполнены макросами препроцессора C или аналогичными) для более низких версий, пока вы не достигнете наименьшего общего знаменателя функций, которые вам действительно нужны.