Не вижу проблем.
Просто используйте OS / драйверы, предоставленные заголовки.
Или лучше использовать мультиплатформенный загрузчик расширений OpenGL, который поможет вам.
(например, GLEW )
С другой стороны, в коде вы будете использовать только GLhandleARB, а не другие вещи, поэтому на Mac это будет недействительно * - нет проблем, в Linux - что-то другое - нет проблем, в Linux с заголовком AMD - что-то совершенно другое - нет проблем.
Исходный код переносим на разные платформы, а не на двоичные файлы, поэтому здесь я не вижу проблем.
1) Вы не можете получить лучший OpenGL, если используете версию, обслуживаемую Apple. Так что в настоящее время вы можете получить максимальный профиль ядра OpenGL 3.2 на 10.7. (слышал, что Nvidia на некоторых графических процессорах обошла его своими собственными заголовками с OpenGL 3.3, но у меня нет возможности проверить это самостоятельно).
2) Это зависит. Если вы нацелены на OpenGL 2.1 и ниже, драйверы с открытым исходным кодом поддерживают его, но более высокие версии поддерживаются только проприетарными драйверами, поэтому вам следует использовать их заголовки.
Но в коде вы просто помещаете "#include", а затем делаете ссылку на соответствующий заголовок и библиотеку .so.
3) Не знаю, как обстоят дела на Win. Но, вероятно, производители используют glext из реестра OpenGL.
Но все это основано на неверном предположении. Вам НЕ нужно знать ответы на них. Просто используйте программное обеспечение, которое уже знает, как справиться с этим бременем. (например, GLEW ).