【发布时间】:2018-02-04 10:39:11
【问题描述】:
我正在调试我的应用程序,该应用程序在 Windows 10 上与 opengl 配合良好。由于似乎缺少 opengl 功能,该应用程序已损坏。当我安装 Windows 10 的最新更新时,问题似乎已经开始。我怀疑 opengl32.dll 缺少 Windows 的关键功能。
具体来说,我总是通过调用 Windows wglGetProcAddress 来访问 wglChoosePixelFormatARB。但是,wglGetProcAddress 现在为此函数返回一个空指针。
作为一种解决方法,我尝试通过使用 opengl32.dll 的 LoadLibrary 和 GetProcAddress 来访问 wglChoosePixelFormatARB。返回值仍为空,GetLastError 返回 ERROR_PROC_NOT_FOUND。
为了仔细检查问题,我从 nirsoft.com 下载了一个 dll 导出查看器工具。我看到 wglChoosePixelFormatARB 没有在 opengl32.dll 中列出,而旧函数 wglChoosePixelFormat 在那里。 wglChoosePixelFormat 函数是一种更古老的选择格式的方法。分发这个 opengl32 dll 背后的逻辑是什么?
我从 Microsoft 阅读了以下答案,但似乎没有其他更新可用,或者该答案将解决我的问题:
有人有什么建议吗?
【问题讨论】:
-
"我试图通过使用 opengl32.dll 的 LoadLibrary 和 GetProcAddress 来访问 wglChoosePixelFormatARB" 是的,那永远行不通。
wglGetProcAddress存在正是因为 opengl32.dll 不公开这样的功能。安装的ICD驱动就可以了,除非你出去找到那个DLL(不同厂商不同),否则不能使用GetProcAddress读取OpenGL函数指针。 -
或使用 GLEW 或任何其他 OpenGL 扩展牧马人代替...
-
这显然是一个驱动程序错误。
wglChoosePixelFormatARB必须得到支持和wglGetProcAddress查询,否则无数现有应用程序将失败。 -
wglGetProcAddress 还返回了在该函数上未找到的值。我同意这一定是驱动程序错误,但我被告知设备管理器下的图形设备没有更新。此外,如果 GetProcAddress 不应该在 opengl32.dll 上工作,为什么它返回 wglChoosePixelFormat 而不是 wglChoosePixelFormatARB 的 proc 地址?是否可以强制安装驱动程序?
-
驱动程序重新安装很容易。您应该能够获得特定于供应商的所需文件(.exe 或 .msi)。可能在您的供应商网站上。 Device Manager 是另一条路线,查看unistall,然后查看previous driver。另一种方法:在“配置->更新”中查看历史记录并卸载一些更新。
标签: opengl windows-10