首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >什么是OpenGL扩展库,加载库,绑定库?

什么是OpenGL扩展库,加载库,绑定库?
EN

Stack Overflow用户
提问于 2015-06-25 20:56:03
回答 2查看 1.1K关注 0票数 6

什么是OpenGL扩展库,加载库,绑定库?

为什么需要他们?

你能用简单明了的外行术语来解释吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-06-25 22:03:44

首先要理解的是,OpenGL只是与GPU交互的一组方法的规范。然后,如果您在windows或linux上,您的GPU供应商将提供该规范的实现附带的驱动程序。如果您在OSX上,则随操作系统一起提供执行程序。

要使用OpenGL,您需要一个OpenGL上下文。本质上是一些内存将保存OpenGL内部状态机的当前状态。要创建这样的上下文,您应该使用绑定库,比如格福自由式

然后,您需要访问OpenGL方法。在Windows上,您有只允许访问遗留OpenGL1.1的opengl32.dll​库!如果您想要使用现代的OpenGL,您需要获得指向驱动程序公开的函数的指针。为此有几个加载库。我认为最常见的是格鲁

OpenGL允许GPU供应商为规范提供自定义扩展。您可以像检索普通OpenGL函数一样检索这些函数。我再次建议使用glew,它也是一个扩展库

然后,您需要一个标头来拥有所有这些函数的原型。但实际上glew也会处理这个问题。

票数 7
EN

Stack Overflow用户

发布于 2015-06-25 21:19:25

对于为特定操作系统定义的每个OpenGL支持,只有非常特定的OpenGL子集或版本被定义为严格的需求。对于Windows来说,它是OpenGL-1.1,对于Linux,根据LSB-4,它是OpenGL-1.2 (根据LSB-5,它是OpenGL-2.1),对于MacOS-X,每一个主要版本通常都会把它撞到最先进的OpenGL版本,当OS-X的特定版本的开发开始时(这就解释了OpenGL版本发布和它在OS-X中的支持之间的滞后)。

除了被固定在OS规范中的版本之外,不需要任何程序可用。这意味着,运行在Windows上的程序可能不会期望看到除了OpenGL-1.1被支持的其他任何东西。或者在Linux上使用OpenGL-1.2。超出这些版本的任何内容都是纯可选的,必须在运行时检查可用性,并且必须在运行时动态解析所需的所有函数入口点。

OpenGL加载器正是这样做的:它们检查哪个OpenGL版本配置文件实际上是受支持的,并将所有实际可用的函数加载到程序员可以访问的符号中;当然,如果在初始化后发现了这些函数,并且不支持它们,那么就不能使用这些函数。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31060640

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档