繁体   English   中英

OpenGL函数加载如何工作?

[英]How does OpenGL function loading work?

我了解有必要通过让特殊功能根据opengl函数的名称来定位指向该函数的指针来“加载” opengl函数。 我以前从未见过类似的事情,而且我想知道这是如何工作的。 这些功能实际上在哪里? 如何取回它们? 为什么这样做呢?

这些功能实际上在哪里?

这取决于实现。 我敢打赌,它们存储在函数名称的哈希表中,以存储函数指针。 它们仍在共享库中,但通常不公开其符号。

如何取回它们?

glXGetProcAddresswglGetProcAddress ,取决于平台。 大多数创建OpenGL窗口的库(GLFW,SDL)都有使用上述内容的自己的跨平台功能。

为什么这样做呢?

我可以想到一些原因:实现可以在不破坏ABI兼容性的情况下更改可用的扩展,以及可以使用的功能可能取决于您所请求的上下文的类型或版本(例如,对于Mesa,仅OpenGL 3.1后的扩展是在3.1+的环境中可用,而不是更低的版本)。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM