位于Windows的vedor的OpenGL驱动程序在哪里?

时间:2016-05-15 17:48:04

标签: windows opengl dll location driver

我将尝试在Windows 10中使用OpenGL现代驱动程序试用C#,并且我试图找到它。

我已经了解标准驱动程序Openg32.dll,它位于%systemroot%\system32是一个旧驱动程序,似乎是来自Microsoft,我是对的吗?

我得出了这个结论,因为使用了下一个命令:

dumpbin opengl32.dll /exports

找到了功能:

11 A 00090330 glBegin

我记得,这个函数glLoadIdentity, glMultMatrix, glTranslate, glRotate已被弃用,自Ope​​nGL 3.2+以来不包括在内,因为你必须自己进行矩阵数学运算。使用着色器。

好的,我开始搜索NVidia目录(我的视频卡的供应商是NVidia)C:\Program Files\NVIDIA Corporation,但只找到了OpenCL驱动程序C:\Program Files\NVIDIA Corporation\OpenCL

  • OpenCL.dll
  • OpenCL64.dll

其中任何一个都通过以下方式完全转储:dumpbin /exports 但我无法在这里找到OpenGL驱动程序。也许它有一些特定的名称,如nvdisps.dll或其他什么?

PS(如果你问我的话)

  • 我知道,更推荐使用C ++来实现这个目标
  • 我不想使用已经完成的库
  • 我想要P/Invoke的东西,只是尝试用C#
  • 来做

1 个答案:

答案 0 :(得分:3)

opengl32.dll充当实际OpenGL驱动程序的“管道”,即所谓的“ICD”(可安装客户端驱动程序);它还包含OpenGL-1.1回退代码,因为OpenGL已经成为Win32-API应用程序二进制接口契约的一部分(即在Win95b或WinNT-4或更高版本上运行的程序可以期望有效的OpenGL-1.1实现)。

供应商ICD注册自身(在Windows注册表中,有关详细信息,请参阅https://msdn.microsoft.com/en-us/library/windows/hardware/ff568203%28v=vs.85%29.aspx),opengl32.dll加载相应的ICD。 ICD的名称不固定。通过将无效指针传递给需要缓冲区的OpenGL函数,可以轻松找到使用过的ICD;访问冲突将发生在ICD的代码中。