为什么需要链接到opengl32.dll?

ryoqjall  于 2023-01-25  发布在  其他
关注(0)|答案(1)|浏览(118)

为了使用传统版本1.1以上的现代OpenGL函数,需要一个加载库(当然,除非您自己从GPU驱动程序手动加载函数指针)。如果opengl32.dll只包含一个Windows版的软件传统OpenGL 1.1实现,为什么它仍然需要通过加载库(如GLEW)链接或通过GLAD内部加载?

yc0p9oo0

yc0p9oo01#

正如上面的注解中提到的,openGL32.dll包含wglGetProcAddress方法,这几乎是openGL所需要的唯一函数。
加载器库 (例如:glew、glad等) 基本上是一个函数指针的加载。这些函数指针需要在启动时初始化,因此需要调用glewInit,它实际上只是对wglGetProcAddress进行一个加载调用。
基本上,glew本质上可以归结为内部沿着一些东西:

// declare a function pointer type
typedef void (*glFlushPointer)();

// a global function pointer
glFlushPointer glFlush = 0;

#include <GL/gl.h> //< required for wglGetProcAddress

void glewInit() {
    // now repeat this process for every GL function you need...
    glFlush = (glFlushPointer)wglGetProcAddress("glFlush");
}

相关问题