微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

如何解决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 举报,一经查实,本站将立刻删除。