Проверка версии opengl. Что такое OpenGL? Что даёт новая версия

Вопрос: Определить версию opengl


Нужен код на opengl es 2,
а в сети полно кода для первой версии
как можно быстро определять версию opengl по коду?
черная метка что ли нужна какая то на первых парах

Ответ: во первых должен использовать VBO. т.е glGenBuffers, glBindBuffer и т.п. хотя эта штука поддерживается с 1.5. Во вторых должен пользовать шейдеры. т.е glCreateProgram, glLinkProgram, glSetShader и т.д. ну и в комплекте с кодом должен быть код шейдеров (хотя до 3.3 обязаловки на шейдеры нет, но без шейдеров от 2.0 толку что от 1.5).

Вопрос: Какую версию OpenGL выбрать, чтобы приложение поддерживало наибольшее количество видеокарт?


Здравствуйте! Вопрос ровно такой же, как и в топике: какую версию OpenGL выбрать, чтобы приложение поддерживало наибольшее количество видеокарт?

Ответ: В общем как думаю я.
Сначала количество пользователей пк увеличивалось экспоненциально и я думаю что своего пика этот рост достиг где то в промежутке 2008-2011 годов (для каждых стран этот пик был в разное время, а где то еще может быть и не достиг) и теперь этот прирост уменьшается.

Я бы собственно отталкивался от этого пика, то есть.. я бы посмотрел какая версия OpenGL была в тот момент времени и использовал ее для своей цели, если бы мне надо было чтобы поддержка была наиболее вероятна. Ну может еще минус пару месяцев.. то есть то время пока пк от производителя идет до покупателя.

Вопрос: Выбор оптимальной версии OpenGL


Вопрос в следующем: какими должны быть адекватные системные требования для несложной 2D-игры в 2016 году? Есть мысль, что будет некорректно создавать проект уровня Flappy Bird на OpenGL 4.x из-за несовместимости многих видеокарт с этой версией. Минимальная версия OpenGL на мой взгляд 2.0, поскольку с одной стороны охватывает железо старых поколений, с другой стороны дает возможность использовать шейдеры GLSL. Пост-обработка с использованием фреймбуфера накручивается расширениями. Но меня не устраивает ограничение, связанное с функцией glTexImage2D. Не все видеокарты уровня OpenGL 2.0 позволяют создавать в памяти текстуру выше 1024px*1024px. Так же требуется больше усилий по оптимизации под такое железо. Буду рад любым советам. Так же было бы неплохо получить какие-нибудь статистические данные по этому вопросу.

Ответ:

Сообщение от 8Observer8

У меня такая ситуация, что я собираю (в exe) игры на современном ноуте на ОС Win7.

Не имеет значения на чём собирать.
Для движка важна конфигурация машины, на которой он запускается.

Сообщение от 8Observer8

Получается, что движок собирает exe таким образом, что при запуске exe приложение само выберет, что ему использовать: OpenGL 2.0 или OpenGL 4.x?

В exe заключён движок.
Он-то и собирает свою конфигурацию динамически при запуске из имеющихся модулей.

Вопрос: Версия OpenGL


Добрый вечер, уважаемые форумчане. Есть ли возможность использования OpenGL версий 1.0–1.5 (такое ограничение поставил преподаватель в институте), установив, например, GLUT (или какие-нибудь другие библиотеки)? Заранее спасибо за ответ.
PS: язык программирования Си или С++.

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

Вопрос: Определить версию Windows


Приветсвую всех.
Столкнулся с такой проблемой, надо определить версию ОС, не используя GetVersionEx. Дело в том, что на msdn по поводу этой функции написано:

Цитата

Applications not manifested for Windows 8.1 or Windows 10 will return the Windows 8 OS version value (6.2). Once an application is manifested for a given operating system version, GetVersionEx will always return the version that the application is manifested for in future releases.

А мне как раз надо, чтоб мое приложение определяло, что оно работает на Windows 10.
Вариант добавить в манифест приложения Windows 10 не подходит.

Вот, собственно и вопрос: есть ли какие способы определить версию винды используя только user-mode функции (RtlGetVersion не подходит, т.к. она выполняется в kernel-моде).

Это сообщение отредактировал(а) rudolfninja - 13.8.2015, 12:16

Вопрос: Определить версию установленного ASP.NET


Привет! Пишу программу сборщика информации с окруженя.
Подскажите как определить версию установленной на ПК ASP.NET
Уже определил версию.NET framework и много чего еще, а вот с ASP.NET проблемы.

Ответ:

Сообщение от nevbie

или она соответствует версии NET Framework?

Она не может отсутствовать, ибо это и есть NET Framework , просто несколько сборок из его состава.

Несомненно, многие геймеры знают, что для корректной работы таких известных игр, как Minecraft или CS, одним из самых основных условий является наличие в системе установленных последних версий драйверов OpenGL. Как обновить этот пакет драйверов, сейчас и будет рассмотрено, поскольку, как и любое другое программное обеспечение, они могут устаревать. Именно поэтому иногда возникают проблемы с запуском любимых игр.

OpenGL: как простейшим способом?

Прежде всего, если при запуске игры или какого-то специфичного приложения система сообщает, что драйверы OpenGL нуждаются в обновлении, следует использовать самое стандартное решение.

Для активации процесса следует войти в стандартный «Диспетчер устройств», что можно сделать из «Панели управления», раздела администрирования компьютера или командой devmgmgt.msc через строку консоли «Выполнить», и найти там установленный видеоадаптер.

Апдейт можно запустить, используя одноименную команду в меню правого клика или в разделе свойств устройства. Если указать автоматический поиск, это может не дать результата, и система сообщит, что самый подходящий драйвер уже установлен. Поэтому желательно сначала обратиться на сайт производителя оборудования, выбрать свою модель графической карты, скачать самый новый драйвер, а при установке указать местоположение сохраненного дистрибутива.

Как обновить OpenGL на Windows 7 или в любой другой системе при помощи специализированных утилит?

Для владельцев чипов NVIDIA и Radeon задача может быть несколько упрощена. Как правило, для них в комплекте в предустановленном виде поставляются специальные управляющие программы вроде PhysX и Catalyst. Именно поэтому обновить драйвер OpenGL можно с их помощью.

Если по каким-либо причинам такие утилиты отсутствуют, следует их просто скачать и интегрировать в систему. При наличии постоянно активного интернет-подключения они пригодятся не только для настройки игр, а и для автоматического слежения за появлением новый версий необходимых драйверов, включая и OpenGL.

В принципе, если такой вариант пользователю не нравится, можно воспользоваться не менее интересными программами наподобие Driver Booster, которые без участия пользователя обновляют драйверы абсолютно для всех «железных» и программных устройств, установленных на компьютере или ноутбуке. Приложение в процессе сканирования системы само определит версию драйвера OpenGL. Как обновить его? Нужно всего лишь согласиться с предложением установки найденных апдейтов. По завершении процесса обновления в обязательном порядке потребуется полная перезагрузка.

Наконец, можно установить специальную утилиту под названием OpenGL Extensions Viewer, с помощью которой можно и узнать версию установленного пакета драйверов, и обновить его до последней версии.

Обновление DirectX

Однако обновление может и не дать желаемого положительного результата без апдейта платформы DirectX, которая является неким связующим мостом между железом и программным комплексом в плане мультимедиа.

Узнать установленную версию можно при помощи команды dxdiag, вводимой в меню «Выполнить». Загрузить новый дистрибутив можно с официального сайта поддержки Microsoft в разделе Downloads.

Как уже понятно, DirectX OpenGL обновить можно обычным стартом процесса инсталляции загруженного дистрибутива. Преимущество этого обновления состоит еще и в том, что в самом диалоговом окне DirectX можно провести ряд тестов, включая производительность DirectSound, ffdshow, Direct3D и т. д.

Почему драйверы не обновляются?

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

Кстати сказать, наиболее часто такая проблема встречается в случае с интегрированным видеочипами стандарта video-on-board, которые встроены в материнские платы. С дискретными видеокартами, как правило, таких проблем нет (естественно, при условии, что чип не является слишком устаревшим и изначально поддерживает технологию OpenGL). Как для таких карт, думается, уже понятно. Но иногда может потребоваться апдейт платформ JAVA Runtime или даже.NET Framework от Microsoft - об этом тоже забывать нельзя. Но как правило, в большинстве случаев этого делать не требуется - достаточно и параллельно использовать утилиту OpenGL Extensions Viewer.

  1. В драйверах для видеокарт NVIDIA, поставляемых в составе операционной системы Windows, поддержка OpenGL обычно отсутствует. Приложения будут использовать программный рендеринг Windows OpenGL (враппер в Direct3D в Windows Vista). Проверить наличие в системе драйвера OpenGL можно с помощью утилит OpenGL Extensions Viewer и GPU Caps Viewer . Если они показывают, что поставщик OpenGL — Microsoft, значит в системе нет драйвера OpenGL . Загрузите и установите последнюю версию драйвера для видеокарты с сайта NVIDIA.
  2. В новой версии драйвера могла быть добавлена поддержка новой версии API OpenGL , неизвестная приложению. Например, драйвер сообщает приложениях о поддержке OpenGL версии 2.0, а приложение/игра проверяет поддержку версии OpenGL в формате 1.Х. Для решения проблемы можно с помощью RivaTuner в настройках OpenGL на закладке «Совместимость» (Compatibility) форсировать сообщаемое драйвером значение версии OpenGL (OpenGL version string override) на поддерживаемую приложением, например на 1.5 . Эта опция не влияет на исполнение OpenGL видеокартой, но по той же причине могут перестать работать приложения, требующие OpenGL версии 2.0. Более гибкий способ — создать для проблемного приложения профиль драйвера с помощью утилиты nHancer , указав нужную версию в опции «Reported OpenGL Version» на закладке «Compatibility».
  3. Проблема может возникать, если в системе по какой-либо причине установлены несколько драйверов OpenGL . В реестре по адресу HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\OpenGLDrivers (HKLM\Software\Microsoft\Windows\CurrentVersion\OpenGLdrivers для Windows 9x-ME) проверьте, что имеется единственный подраздел RIVATNT и ключ Dll в этом разделе имеет значение nvoglnt (имеется единственный ключ со значением nvopengl.dll для Windows 9x-ME). Если имеются иные подразделы, например ati2dvag (OpenGL драйвер ATI), их следует удалить, предварительно экспортировав в файл .reg .
  4. Реализация OpenGL 2.0 для графических процессоров GeForce FX и выше в драйвере NVIDIA требует поддержки центральным процессором расширений SSE . Если эти расширения недоступны, драйвер OpenGL ICD не будет инициализирован, OpenGL приложения будут закрываться или будет использован программный рендеринг. Проверить инициализацию драйвера можно с помощью утилит OpenGL Extensions Viewer и GPU Caps Viewer , проверить поддерживаемые процессором расширения можно с помощью утилит CPU-Z или Sandra . Если процессор не поддерживает SSE , можно или использовать более ранние версии драйвера (до 75.ХХ), или с помощью RivaTuner в настройках OpenGL на закладке «Совместимость» (Compatibility) включить режим «NV25 Emulation mode» вместо стоящего по-умолчанию «Max acceleration». В крайнем случае можно воспользоваться OpenGL -> Direct3D враппером GLDirect или TitaniumGL . Иногда процессор поддерживает SSE , но поддержка не работает из-за устаревшего BIOS материнской платы. Особенно данная проблема характерна для систем с процессорами AMD Athlon XP и Duron. Обновление BIOS материнской платы может восстановить поддержку SSE .
  5. Если в системе есть несколько видеокарт на базе разных графических процессоров NVIDIA, то OpenGL драйвер будет поддерживать лишь OpenGL поддерживаемой всеми видеокартами версии.

Просто вызовите glGetString(GL_VERSION) (как только контекст инициализируется, конечно), и потушите результат (который на самом деле тот же, что и glxinfo, я полагаю):

Printf("%s\n", glGetString(GL_VERSION));

Ваша программа должна автоматически использовать максимально возможную версию вашего оборудования и поддержки драйверов, которая в вашем случае, по-видимому, составляет 3,3. Но для создания контекста основного профиля для OpenGL 3+ (тот, где устаревшие функциональные возможности были полностью удалены), вы должны принять специальные меры. Но так как версия 2.7 GLFW имеет средства для этого, используя функцию glfwOpenWindowHint . Но если вы не хотите явно запрещать устаревшие функции, вы можете просто использовать контекст, предоставленный вам функциями контекстного создания по умолчанию GLFW, который, как утверждается, поддерживает максимально возможную версию вашего оборудования и драйверов.

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

Я начал писать программы, в C (на данный момент), используя GLFW и OpenGL. Вопрос в том, что, как узнать, какая версия OpenGL будет использоваться моей программой? Мой ноутбук говорит, что у моей видеокарты есть OpenGL 3.3. Ввод «glxinfo | grep -i opengl» возвращает.

4 ответов

Я боюсь, что вам придется открыть командную строку вашего первого дня Linux (не волнуйтесь, случилось со мной тоже). Приложения -> Стандартные -> Терминал. Type lspci и нажмите Enter. Здесь перечислены все подключения через PCI или PCI express, включая видеокарту. Прочитайте список, пока не увидите что-нибудь о ATI или nVidia или одной из моделей Intel.

затем перейдите в сравнительные таблицы Википедии для видеокарт, чтобы узнать версию OpenGL, которую поддерживает ваша карта.

помните, что они только говорят, какую версию поддерживает оборудование. Чтобы иметь возможность запускать библиотеки OpenGL, вам также нужен драйвер, который их поддерживает. Множественные видео-водители для каждого обломока поколения для Linux. Ubuntu поставляется с версиями с открытым исходным кодом, которые не являются плохими, но, как правило, на шаг позади проприетарных драйверов, выпущенных производителями графических карт (которые часто называют binary drivers или proprietary drivers). Если выяснится, что ваше оборудование поддерживает OpenGL 2.0 (которых большинство), Вы можете попробовать проприетарные драйвера. Они называются nvidia-current для nvidia и fglrx для ATI. Для Intel существуют только драйверы с открытым исходным кодом.

пример из моего ноутбука:

Prompt>lspci | grep VGA 00:02.0 VGA compatible controller: Intel Corporation Core Processor Integrated Graphics Controller (rev 02) 01:00.0 VGA compatible controller: nVidia Corporation Device 0df0 (rev a1) prompt>

и соответствующая выдержка из lshw:

*-pci:0 description: PCI bridge product: Core Processor PCI Express x16 Root Port vendor: Intel Corporation physical id: 1 bus info: :00:01.0 version: 02 width: 32 bits clock: 33MHz capabilities: pci pm msi pciexpress normal_decode bus_master cap_list configuration: driver=pcieport resources: irq:42 ioport:2000(size=4096) memory:fb000000-fbffffff ioport:f0000000(size=167772160) *-display description: VGA compatible controller product: nVidia Corporation vendor: nVidia Corporation physical id: 0 bus info: :01:00.0 version: a1 width: 64 bits clock: 33MHz capabilities: pm msi pciexpress vga_controller bus_master cap_list configuration: driver=nouveau latency=0 resources: irq:16 memory:fb000000-fbffffff memory:f0000000-f7ffffff memory:f8000000-f9ffffff ioport:2000(size=128) *-display description: VGA compatible controller product: Core Processor Integrated Graphics Controller vendor: Intel Corporation physical id: 2 bus info.