GLSL扩展名应在

时间:2019-01-18 12:05:49

标签: opengl glsl glfw opengl-extensions

我正在ASUS RoG fx553笔记本电脑的Nvidia GeForce GTX 1050上进行GPU计算,尽管出于某种原因,尽管Nvidia官方网站将此GPU列为与线程内在指令兼容(GL_NV_shader_thread_group等) ),即使我使用的是#extension GL_NV_shader_thread_group : require的4.3上下文(我也尝试4.4无效),但使用#version 430时常会引发错误并报告扩展名不可用。由于我不熟悉加载扩展程序,因此不知道是否缺少Glad / GLFW端的设置。

编辑:我下载了OpenGL扩展查看器,然后继续告诉我,即使在OpenGL 4.3上下文中,我的GPU也应该支持GL_NV_shader_thread_group

OGLEV showing GL_NV_shader_thread_group as available under OpenGL 4.3

1 个答案:

答案 0 :(得分:4)

由于您提到自己是在笔记本电脑上运行的,因此我假设该笔记本电脑还具有iGPU(例如,集成到CPU中的Intel GPU)。问题很可能是您的程序未在NVIDIA GPU上运行,而仅在iGPU上运行。一种解决方案是在NVIDIA驱动程序控制面板中设置应用程序配置文件,以使其针对您的应用程序使用NVIDIA GPU。还应该有一个选项,可以全局性地在所有内容上强制使用NVIDIA GPU(尽管不建议这样做)。另一种方式(我通常使用的方式)是add the following line of code to your program

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

这将为全局变量导出相应的符号,驱动程序在将其加载到您的进程时将对其进行检查。如果该符号存在且变量设置为1,则驱动程序将使用NVIDIA GPU进行特定处理……