[英]How does OpenGL function loading work?
我了解有必要通过让特殊功能根据opengl函数的名称来定位指向该函数的指针来“加载” opengl函数。 我以前从未见过类似的事情,而且我想知道这是如何工作的。 这些功能实际上在哪里? 如何取回它们? 为什么这样做呢?
这些功能实际上在哪里?
这取决于实现。 我敢打赌,它们存储在函数名称的哈希表中,以存储函数指针。 它们仍在共享库中,但通常不公开其符号。
如何取回它们?
glXGetProcAddress或wglGetProcAddress ,取决于平台。 大多数创建OpenGL窗口的库(GLFW,SDL)都有使用上述内容的自己的跨平台功能。
为什么这样做呢?
我可以想到一些原因:实现可以在不破坏ABI兼容性的情况下更改可用的扩展,以及可以使用的功能可能取决于您所请求的上下文的类型或版本(例如,对于Mesa,仅OpenGL 3.1后的扩展是在3.1+的环境中可用,而不是更低的版本)。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.