Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/opengl/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
GPU、着色器编译器和OpenGL应用程序_Opengl_Driver_Shader_Gpu - Fatal编程技术网

GPU、着色器编译器和OpenGL应用程序

GPU、着色器编译器和OpenGL应用程序,opengl,driver,shader,gpu,Opengl,Driver,Shader,Gpu,我有一个使用着色器的OpenGL应用程序。在桌面上,我有一个图形卡,安装了驱动程序,它工作正常,但当GPU被禁用时,我的应用程序不会运行,并且在创建窗口后崩溃。我有以下理解和疑问: GLSL编译器由GPU供应商提供,因此当没有找到GPU驱动程序时,应用程序会崩溃 这是否意味着在没有GPU的系统上,使用着色器的OpenGL应用程序将无法运行?我的理解是GPU只能增强fps,应用程序也应该在没有GPU的情况下运行 为了运行OpenGL应用程序,您必须有一个能够理解OpenGL调用的驱动程序,但如果

我有一个使用着色器的OpenGL应用程序。在桌面上,我有一个图形卡,安装了驱动程序,它工作正常,但当GPU被禁用时,我的应用程序不会运行,并且在创建窗口后崩溃。我有以下理解和疑问:

  • GLSL编译器由GPU供应商提供,因此当没有找到GPU驱动程序时,应用程序会崩溃

  • 这是否意味着在没有GPU的系统上,使用着色器的OpenGL应用程序将无法运行?我的理解是GPU只能增强fps,应用程序也应该在没有GPU的情况下运行


为了运行OpenGL应用程序,您必须有一个能够理解OpenGL调用的驱动程序,但如果您安装了模拟驱动程序的软件,则可以在不使用GPU的情况下运行应用程序。一个是Mesa AFAIK还有一个windows版本的Mesa,另一个是transgaming的Swiftshader,但后者是商业软件。

如前所述,有人需要在您的目标平台/系统上提供OpenGL实现。通常,这是由图形驱动程序完成的,但也有软件实现(如mesa)

此外,为了让您的应用程序运行,它需要检查某些OpenGL功能的可用性,因为有些东西,如着色器,可能不适用于每个驱动程序/实现/硬件。换言之:OpenGL实现(通常是共享库)的可用性并不表示着色器的可用性

据我所知,如果没有可用的GPU,大多数实现不会提供“软件回退”。Mesa提供了,但它“仅”提供OpenGL 3.1,我不确定着色器对软件渲染的支持有多好。我认为这是正在进行的工作

  • GLSL编译器由GPU供应商提供,因此当没有找到GPU驱动程序时,应用程序会崩溃
好的,从技术上讲,GLSL编译器是高版本OpenGL实现的一部分。但这只是对你所说的话的大词。所以:

  • 这是否意味着在没有GPU的系统上,使用着色器的OpenGL应用程序将无法运行
您需要一个能够满足您的程序需要的功能的OpenGL实现。大多数OpenGL实现是以GPU和(瘦)驱动层的组合形式完成的,这使得OpenGL可以与GPU进行对话

  • 我的理解是GPU只能增强fps,应用程序也应该在没有GPU的情况下运行
这个想法是错误的。GPU不仅仅是“性能增强剂”。GPU是一个功能齐全的处理平台,所有OpenGL版本都设计为使用这种处理器来实现,GPU就是这样。也有软件仿真,但这些都是缓慢的,往往不完整的功能

事实上,OpenGL一直被认为是使用某种GPU实现的。OpenGL的第一个版本实际上是SGI硬件图形光栅化器寄存器和命令的1:1用户空间API;甚至一些早期的OpenGL令牌也将数值放入SGI硬件的控制寄存器中