如果没有视频卡,谁运行OpenGL着色器

时间:2017-09-30 20:16:52

标签: c++ opengl gpu

我正在编写一个非常基本的OpenGL C ++程序(Linux 64位)。

事实上,我有3个程序:

  • 一个主要的C ++程序
  • 顶点着色器
  • 片段着色器

2个着色器在运行时编译。我想这些程序是由GPU在视频卡上并行运行的。

我的问题是,如果我的电脑包含没有GPU的非常基本的显卡,会发生什么?

我试图在VirtualBox上运行我的程序,禁用“3d加速”,程序正常运行!

这是否意味着如果没有GPU,opengl会检测到视频卡并自动在CPU上运行着色器?

2 个答案:

答案 0 :(得分:1)

OpenGL只是一个标准,该标准有不同的实现。通常,您依赖于图形驱动程序提供的实现,显然将使用GPU。

然而,大多数桌面Linux发行版还包括OpenGL的软件实现,称为Mesa,如果您没有安装支持OpenGL的视频驱动程序,则可以使用它。 (现在很难找到任何不支持OpenGL着色器的视频硬件,甚至是CPU上的集成视频,但是在Linux驱动程序上可能会出现问题,而在这种情况下,VM并没有提供硬件加速。 )

所以,简短的回答是肯定你的着色器可以在CPU上运行,但可能会或可能不会发生,它可能是也可能不是自动的,这取决于你安装的视频驱动程序(或其他OpenGL实现)

答案 1 :(得分:0)

在任何现代个人电脑上都有一个GPU。如果您没有来自NVidia或AMD等供应商的专用GPU卡,您可能会有英特尔或其他计算机硬件制造商所谓的“#34;板载"”或integrated video chip 。好消息是,即使是今天的板载GPU也相当不错(英特尔最终开始做得很好),并且PC上的这种硬件已经支持现代可编程OpenGL版本的可能性很高。好吧,也许不是最新版本,但从我个人的经验来看,大多数英特尔2 - 3年前的板载GPU应该支持OpenGL 4.1 / 4.2。所以只要你没有真正运行旧硬件,您应该拥有对gpu加速API的完全访问权限。否则,你有Mesa library,它带有OpenGL API的软件(非GPU加速)实现。