Ответ 1
версии OpenGL (для графических процессоров AMD и NVIDIA) примерно соответствуют уровням аппаратного обеспечения. Версии 2.x OpenGL для аппаратного обеспечения уровня DX9. 3.x представляет собой уровень DX10, а 4.x представляет собой аппаратное обеспечение класса DX11. Таким образом, версия, которую вы выбираете, ограничивает, вы можете запустить свой код.
В общем, любой графический процессор AMD или NVIDIA, который вы действительно можете купить в магазине, будет 3.x или лучше (более чем вероятно, 4.x). Даже интегрированные графические процессоры, материнские платы или процессоры от AMD - 3.x или выше. Я занимаюсь разработкой домашней разработки на графическом процессоре HD 3300, и он работает достаточно хорошо.
Intel - проблема. Качество драйвера Intel OpenGL довольно плохое. Многие старые компьютеры Intel могут поддерживать только GL 1.4, которая является функциональностью класса до DX9. Они поддерживают некоторые расширения более высокого уровня (шейдеры, но только вершинные шейдеры, поскольку они запускают их в программном обеспечении).
Более свежие графические процессоры Intel немного лучше, но их драйверы GL по-прежнему довольно ошибочны.
Вышеописанная ситуация для Windows. Linux немного пушисто, потому что есть драйверы от NVIDIA/AMD и публичные драйверы сообщества с открытым исходным кодом. Последние, как правило, не так хороши, но улучшаются. Они, как правило, относятся к аппаратным средствам класса 3.x.
Мир MacOSX немного отличается. Mac OSX Lion (10.7), недавно выпущенный, добавляет поддержку OpenGL 3.2 (к сожалению, не 3.3, по какой-то причине). Apple жестко контролирует работу OpenGL на своей платформе, но, надеюсь, они будут обновлять версии GL чаще, чем они были недавно.
Итак, на Mac, у вас действительно есть два варианта: 2.1 или 3.2. Обратите внимание, что поддержка Lion 3.2 предоставляет только основные функции OpenGL. Смотрите эту страницу, чтобы узнать, что это значит.
Вы не можете сказать, на что способна самая высокая версия, на которую способен ваш конкретный компьютер. Существует просто версия, которую вы получаете при создании контекста. В общем случае, если вы специально не запрашиваете версию (и даже тогда, как правило, нет), вы получите самую высокую версию, которую могут обрабатывать ваше оборудование и драйверы.
О, и да: версия OpenGL контролируется возможностями вашей видеокарты (и установленными драйверами).
Следующий совет предполагает, что вы разрабатываете серьезное приложение, которое вы намерены использовать для других. Это не для небольших демонстрационных приложений и т.д.
В общем, я бы посоветовал явно ограничить ваш код на 4.x. В то время как внедрение 4.x увеличивается с каждым днем (есть 2 поколения аппаратных средств от NVIDIA и AMD с поддержкой 4.x, а третий, вероятно, будет отсутствовать на протяжении многих лет от AMD. Также AMD начинает внедрять графические процессоры с поддержкой 4x в их процессорах сейчас), все еще много оборудования 3.x. 4.x не покупает вас много, и вы можете легко добавлять пути кода, чтобы условно поддерживать функции 4.x, если они доступны.