opengl 调用可以在没有 GPU 的情况下运行吗?

sam*_*lnj 1 c++ opengl gpu

我知道 opengl 是一个库,它允许在 GPU 上执行某些任务/调用(如着色)以实现更快的计算(硬件加速)。我一直在互联网上阅读有关它的信息,我想知道对 opengl 的调用是否可以在没有 GPU 的情况下运行。例如,这个论坛上的某个人(https://www.gamedev.net/forums/topic/638883-will-opengl-3d-games-run-in-a-pc-without-a-dedicated-video-card/ ) 提到它可以作为软件仿真运行。任何人都可以谈论这个吗?

Cpp*_*s 1 5

是的,如果这一切都取决于设备供应商是否愿意为他或她的系统编写 OpenGL 驱动程序。所有 OpenGL 功能都可以在没有显卡的情况下实现,但当然会有性能损失。


dat*_*olf 5

严格来说,OpenGL 不是一个库,而只是一个编程接口(API)。如何在特定机器上实现此 API 的具体细节是开放的,由系统实现者处理。它可能是软件光栅化器,也可能是专用硬件的接口。

OpenGL 已成为 Windows、LSB4/桌面(Linux 标准基础/桌面要求)和 MacOS 的 ABI(即应用程序可以确保在系统上可用的一组事物)的一部分。因此,即使没有硬件加速,系统也必须确保总有某种方式至少具有最少的 OpenGL 功能集(我们在这里说的是 OpenGL-1.x)。

应该注意的是,所有这些 ABI 都反对这样的假设,即它用于将事物呈现给显示设备:

Windows 后备软件光栅化器实现(BTW 非常慢)确实允许渲染到 GDI 位图,但不支持 PBuffers;甚至不要考虑帧缓冲区对象。

Mesa 软件光栅化器几乎具有完整的 OpenGL-3.x 功能。