供应商的 OpenGL 驱动程序位于 Windows 中的什么位置?



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

据我所知,位于%systemroot%system32的标准驱动程序Openg32.dll是一个旧的驱动程序,似乎来自微软,对吧?

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

dumpbin opengl32.dll /exports

并找到了功能:

11 A 00090330 glBegin

正如我所记得的,glLoadIdentity, glMultMatrix, glTranslate, glRotate这个函数是不推荐使用的,并且从OpenGL 3.2+开始就不包括在内了,因为你必须自己做矩阵数学&使用着色器。

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

  • OpenCL.dll
  • OpenCL64.dll

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

PS(如果你问我的话)

  • 我知道,对于这些东西,更建议使用C++
  • 我不想使用已经完成的库
  • 我想要P/Invoke的东西,试着用C来做#

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

供应商ICD自行注册(在Windows注册表中,有关详细信息,请参阅https://msdn.microsoft.com/en-us/library/windows/hardware/ff568203%28v=vs.85%29.aspx)并且CCD_ 12加载适当的ICD。ICD的名称不固定。通过向OpenGL函数传递一个需要缓冲区的无效指针,您可以很容易地找到使用过的ICD;访问违规将发生在ICD的代码内。

最新更新