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

3

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

我知道可以使用GetProcAddress来获取由opengl32.dll公开的OpenGL 1.0和1.1函数的函数指针,而对于上下文相关的OpenGL 1.2+函数,我必须调用GetProcAddress返回的wglGetProcAddress来获取这些函数的函数指针。

为了查看ICD是否执行这些OpenGL函数,我编写了opengl32.dll和ICD的包装器程序,并让它们在调用函数时打印函数名称。对于OpenGL 1.2+函数,我看到我的测试程序首先从opengl32.dll调用wglGetProcAddress返回的函数指针,然后从ICD中调用DrvGetProcAddress返回的函数指针(我为其中一些函数编写了hook函数)。因此,证明了这些函数是由图形驱动程序实现的。但是对于API符号由opengl32.dll公开的OpenGL 1.0和1.1函数,则无论是opengl32.dll的wglGetProcAddress还是ICD的DrvGetProcAddress都会在尝试按函数名加载它们时返回NULL。

我还知道这两个GetProcAddress函数仅用于获取OpenGL扩展(OpenGL 1.2或更高版本)函数的函数指针,但我不确定图形驱动程序现在是否实现了OpenGL 1.0和1.1函数。如果确实实现了,那么ICD中的这些函数如何被opengl32.dll调用呢?


https://www.khronos.org/opengl/wiki/Load_OpenGL_Functions#Windows - Ripi2
1个回答

1

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接