Windows 上的 OpenGL ICD 如何加载 OpenGL 1.0 和 1.1 函数?

问题描述

最近我一直在研究 OpenGL 图形驱动程序 (ICD) 如何在 Windows 上实现 OpenGL 运行时 (opengl32.dll) 调用的 OpenGL 函数

我知道我可以使用 GetProcAddress获取 opengl32.dll 公开的 OpenGL 1.0 和 1.1 函数函数指针,我必须调用 {{1} 返回的 wglGetProcAddress获取 OpenGL 1.2+ 函数的上下文相关函数指针。

为了查看ICD是否执行OpenGL函数,我编写了opengl32.dll和ICD的包装程序,并让它们在函数调用时打印函数名称。对于OpenGL 1.2+的函数,我看到我的测试程序首先从opengl32.dll调用GetProcAddress返回的函数指针,然后我看到它调用了ICD的wglGetProcAddress返回的函数指针(我写的hook函数对于其中一些功能)。所以证明这些功能是由显卡驱动实现的。但是对于 OpenGL 1.0 和 1.1 函数,它们具有由 opengl32.dll 公开的 API 符号,当它们尝试通过函数名称加载它们时,opengl32.dll 的 DrvGetProcAddress 和 ICD 的 wglGetProcAddress 都返回 NULL。

我也知道这两个GetProcAddress函数都只是用来获取OpenGL扩展(OpenGL 1.2或以上)函数函数指针,但我不确定图形驱动程序现在是否实现了OpenGL 1.0和1.1函数。如果是,那么opengl32.dll如何调用ICD中的这些函数

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)