加载 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 的标志位掩码。 |