c++ - 如果没有显卡,谁来运行 OpenGL 着色器

标签 c++ opengl gpu

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

事实上,我有3个程序:

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

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

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

我曾尝试在禁用“3d 加速”的情况下在 VirtualBox 上运行我的程序,但程序运行正常!

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

最佳答案

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

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

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

关于c++ - 如果没有显卡,谁来运行 OpenGL 着色器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46506685/

相关文章:

c++ - 在C++中输入一个句子

c++ - 从 'GLvoid (*)() {aka void (*)()}' 到 'void (__attribute__((__cdecl__)) *)(int)' 的无效转换

c++ - C++中的非阻塞线程安全队列?

c++ - c和c++头文件的一些问题

c++ - 在不同的 VBO 中存储不同的顶点属性

c++ - 我可以/应该在 GPU 上运行此统计应用程序的代码吗?

opengl - 如何将GPU全局内存中的像素阵列直接显示到屏幕上?

c - VBO究竟如何保存其内容?

c++ - 正确使用 OOP

c++ - EGL 在第一次 opengl 函数调用时崩溃