Расширение GLSL недоступно, когда оно должно быть - PullRequest
0 голосов
/ 18 января 2019

Я выполняю вычисления на GPU на Nvidia GeForce GTX 1050 на ноутбуке ASUS RoG fx553 и по какой-то причине, хотя на официальном сайте Nvidia этот GPU указан как совместимый с инструкциями встроенных потоков (GL_NV_shader_thread_group и т.п.), использование #extension GL_NV_shader_thread_group : require постоянно выдает ошибку и сообщает о том, что расширение недоступно, хотя я использую контекст 4.3 с #version 430 (я также пробовал 4.4 безрезультатно). Поскольку я новичок в загрузке расширений, я не знаю, пропускаю ли я какие-либо настройки на конце Glad / GLFW.

РЕДАКТИРОВАТЬ: я загрузил просмотрщик расширений OpenGL, который продолжил и сказал мне, что мой GPU предположительно поддерживает GL_NV_shader_thread_group, даже в контексте OpenGL 4.3.

OGLEV showing GL_NV_shader_thread_group as available under OpenGL 4.3

1 Ответ

0 голосов
/ 18 января 2019

Поскольку вы упоминаете, что работаете на ноутбуке, я предполагаю, что у этого ноутбука также есть iGPU (например, Intel GPU, который интегрирован в CPU). Проблема, скорее всего, в том, что ваша программа работает не на графическом процессоре NVIDIA, а только на iGPU. Одним из решений было бы настроить профиль приложения в панели управления драйвером NVIDIA, чтобы он использовал графический процессор NVIDIA для вашего приложения. Также должна быть возможность принудительно использовать графический процессор NVIDIA для всего (хотя и не рекомендуется). Другой способ (который я обычно использую) состоит в том, чтобы добавить следующую строку кода в вашу программу :

extern "C" __declspec(dllexport) DWORD NvOptimusEnablement = 1U;

Это экспортирует соответствующий символ для глобальной переменной, которую драйвер проверяет при загрузке в ваш процесс. Если символ существует, а переменная установлена ​​в 1, драйвер будет использовать графический процессор NVIDIA для этого конкретного процесса ...

...