加载 OpenGL 可安装客户端驱动程序

OpenGL 运行时访问注册表,以确定要加载哪些 OpenGL 可安装客户端驱动程序 (ICD) 。 若要加载 OpenGL ICD,OpenGL 运行时:

  • 通过调用 D3DKMTQueryAdapterInfo 函数,确定与 OpenGL ICD 关联的名称、版本和标志,该函数在 pData 参数指向的 D3DKMT_QUERYADAPTERINFO 结构的 Type 成员中设置KMTQAITYPE_UMOPENGLINFO值。

  • 检查 D3DKMTQueryAdapterInfo 返回的 OpenGL ICD 的版本号,以验证 OpenGL ICD 的版本。

  • 使用 OpenGL ICD 的名称加载 OpenGL ICD。

  • 初始化对 OpenGL ICD 函数的访问。

若要查找 OpenGL ICD 的名称, D3DKMTQueryAdapterInfo 在以下项中搜索注册表:

HKLM/System/CurrentControlSet/Control/Class/{Adapter GUID}/0000/

此键还包含 Microsoft Direct3D 用户模式显示驱动程序的名称。 此项包含 32 位 Windows Vista 显示驱动程序的四个注册表项(用于 32 位 Windows Vista)和四个用于 64 位 Windows Vista 上的 32 位 Windows Vista 显示驱动程序的注册表项。 以下条目适用于在 32 位 Windows Vista 上使用的 32 位 Windows Vista 显示驱动程序:

条目 类型 说明
UserModeDriverName REG_SZ Direct3D 用户模式显示驱动程序的名称,无论操作系统是否支持 OpenGL ICD,Direct3D 呈现设备操作都需要此名称。
OpenGLDriverName REG_SZ OpenGL ICD 的名称。 例如,如果 OpenGL ICD Mydriver.dll,则此项的值 Mydriver.dll
OpenGLVersion REG_DWORD OpenGL 运行时用于验证 OpenGL ICD 版本的 OpenGL ICD 的版本号。
OpenGLFlags REG_DWORD 标志位掩码。 目前,为兼容性设置了位 0 (0x00000001) 。 设置第 1 位 (0x00000002) 时,OpenGL 运行时不会在运行时调用 ICD 的交换缓冲区函数之前调用 ICD 的 finish 函数。

以下条目适用于 64 位 Windows Vista 上使用的 32 位 Windows Vista 显示驱动程序:

条目 类型 说明
UserModeDriverNameWow REG_SZ 适用于 64 位 Windows Vista 的 32 位 Microsoft Direct3D 用户模式显示驱动程序的名称。
OpenGLDriverNameWow REG_SZ 64 位 Windows Vista 的 32 位 OpenGL ICD 的名称。
OpenGLVersionWow REG_DWORD 适用于 64 位 Windows Vista 的 32 位 OpenGL ICD 的版本号。
OpenGLFlagsWow REG_DWORD 适用于 64 位 Windows Vista 的 32 位 OpenGL ICD 的标志位掩码。