【问题标题】:Using OpenGL extensions conditionally有条件地使用 OpenGL 扩展
【发布时间】:2012-07-20 12:08:42
【问题描述】:
我对如何使用 OpenGL 扩展(特别是 VBO 和 draw_texture)有点困惑。我知道你可以在 GL_EXTENSIONS 字符串中检查它们,但是然后呢?如果扩展可用,我可以根据需要调用相关函数还是必须加载它们,例如使用 GLEW?如果它们不可用,只要我不调用它们就可以在我的代码中包含这些函数,或者如果扩展不可用,这是否会导致运行时链接器中出现未解决的符号错误?
在 Linux、Windows、Android(本机)、Mac 和 iOS 等多个平台上是否相同?
【问题讨论】:
标签:
c++
c
opengl-es
opengl-es-1.1
【解决方案1】:
如果扩展可用,我可以根据需要调用相关函数
没有。
或者我必须使用 GLEW 加载它们吗?
是的。您也可以手动完成。
如果它们不可用,是否可以在我的代码中使用这些函数,只要我不调用它们,
是的。
或者如果扩展不可用,这是否会导致运行时链接器中出现未解决的符号错误?
由于扩展是在运行时动态加载的,可执行链接器并不关心它们。它所看到的只是一些名为__glew_gl… 或类似名称的变量,这些变量在标头中重新定义为gl…,链接器并不关心它们有什么值。
扩展加载器可以将它们设置为空指针(如果不可用),或者设置为发出警告消息、错误条件或类似情况的存根函数。
如果扩展可用,则扩展加载器将这些函数指针变量设置为指向实际函数。