(linux) Как я могу узнать в программе на c ++, поддерживается ли Opengl 4?

Я хотел бы определить в моей программе на C ++, поддерживается ли opengl 4 на работающем компьютере.

Я не знаю, выполняю ли я поиск в Google и stackoverflow с неправильными / плохими терминами (мое знание английского языка …), но удивительно, что я не нашел ни одного примера … Я не был бы удивлен, если бы вы сказали мне, что этот вопрос дубликат …

В конечном итоге мне было бы полезно узнать, как получить больше полезных данных с видеокарты и драйверов, используемых ею на работающем компьютере. У меня не было времени, чтобы осмотреться, чтобы узнать, как это сделать, но если у вас есть какая-нибудь полезная ссылка, не стесняйтесь поделиться ею со мной.

1

Решение

  • Шаг 1: Создайте контекст OpenGL; сначала попробуйте методом attrib запросить минимальную версию OpenGL, которую вы хотите получить. Если это удастся, вы сделали.

  • Шаг 2: Если это не сработало, и вы можете изящно понизить класс, создайте контекст без излишеств
    и позвонить glGetString(GL_VERSION) чтобы получить актуальную версию контекста. Обратите внимание, что в MacOS X это ограничивает вас до версии 2.1 и ранее.

  • Шаг 3: Если вам нужен какой-то контекст, переносимый и надежно работающий между 2.1 и вашей оптимальной версией, попробуйте использовать метод attribs в цикле, уменьшая ваши потребности до тех пор, пока он не будет успешным.

Обратите внимание, что невозможно заранее определить, какая версия поддерживается в OpenGL. Основная причина этого заключается в том, что операционные системы и графический слой могут по требованию решать, какую локально доступную версию OpenGL использовать, в зависимости от запроса и ресурсов, доступных в данный момент (теоретически графические карты могут быть подключены горячим способом).

1

Другие решения


По вопросам рекламы [email protected]