我们都知道windows提供了一个通用的OpenGL驱动程序。但一些显卡厂商提供特定的openGL驱动程序。我想知道操作系统该如何选择使用哪个驱动程序?
发布于 2013-08-17 20:40:54
有一些WGL函数用于获取指向较新的OpenGL的适当函数的指针。Windows在创建上下文时任意选择GPU。
因此,例如,当您请求4.3核心上下文时,它会查看驱动程序列表,说明该驱动程序将处理此特定上下文,然后进行所有wgl调用,以便从特定驱动程序的动态链接库加载适当的函数。
发布于 2013-08-18 02:22:22
解释这是如何工作的最简单的平台是Microsoft Windows。它们有一个“可安装客户端驱动程序”(ICD)模型,其中Windows SDK提供了最基本的OpenGL功能(WGL1.1)和一个可扩展的窗口系统接口(OpenGL )。
在Microsoft Windows中使用WGL API创建上下文时,可以枚举特定设备的所有像素格式。一些像素格式将被硬件加速,而另一些将使用回退软件OpenGL 1.1参考实现。
许多平台具有关于硬件/软件共存的类似系统。Mac甚至更棘手,因为你可以从硬件加速的OpenGL实现开始,但调用错误的函数(一个无法在已安装的GPU上的硬件中实现的函数),它会让你偏离“快速路径”,转而使用软件。
不过,Mac的好处在于,这种后备功能只适用于流水线的各个阶段。只要一切都可以在硬件中实现,下一阶段就会回到硬件加速。优点在于,在OS中,OpenGL的软件实现是完整的(例如,3.2上下文将支持整个OpenGL 3.2功能集,即使这样做需要部分/全部软件实现)。如果图形处理器不支持某些东西,您不会失去功能,只是性能的LOT。这与Windows形成了巨大的对比,在Windows中,现代的OpenGL都没有后备软件。
https://stackoverflow.com/questions/18288909
复制相似问题