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



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

实际上,我有3个程序:

  • 主C 程序
  • 顶点着色器
  • 碎片着色器

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

我的问题是,如果我的计算机包含一个没有GPU的非常基本的视频卡,会发生什么?

我尝试使用禁用" 3D加速"的VirtualBox上运行我的程序,并且该程序有效!

这是否意味着OpenGL在没有GPU的情况下自动检测视频卡并在CPU上运行着色器?

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

但是,大多数桌面Linux发行版还包括一个名为MESA的OpenGL的软件实现,如果您安装了支持OpenGl的视频驱动程序,则可以使用它。(如今,找到任何视频硬件,甚至在CPU上的集成视频,不支持OpenGL着色器,但是在Linux驱动程序上可能是一个问题,在您的情况下,VM并没有使硬件加速可用。)

因此,简短的答案是您的着色器可以在CPU上运行,但这可能会或可能不会发生,并且可能是自动的,也可能是自动的,这取决于您已安装的视频驱动程序(或其他OpenGL实现)。

在任何现代个人计算机上都有GPU。如果您没有NVIDIA或AMD等供应商的专用GPU卡,则可能会有所谓的"板载"或Intel或其他计算机硬件制造商的集成视频芯片。好消息是,即使是今天的板载GPU也相当不错(英特尔最终开始做得很好),而且很高的机会是,您的PC上这样的硬件已经支持现代可编程OpenGL版本。好吧,也许不是最新的,但是根据我的个人经验,英特尔的大部分在2 - 3年前的板载GPU都应该支持OpenGL 4.1/4.2。因此,只要您不在真正的旧硬件上运行,应该完全访问GPU加速API。否面

最新更新