我对如何使用OpenGL扩展(特别是VBO和draw_texture)感到有点困惑。我知道你可以在GL_EXTENSIONS字符串中检查它们,但接着是什么?如果扩展可用,我可以根据需要调用相关功能,还是必须加载它们,例如使用GLEW?如果它们不可用,只要我不调用它们就可以在我的代码中使用这些函数,或者如果扩展不可用,它会在运行时链接器中导致未解决的符号错误吗? / p>
在多个平台上是一样的,即Linux,Windows,Android(原生),Mac和iOS?
答案 0 :(得分:4)
如果扩展名可用,我可以根据需要调用相关功能
没有
或者我是否必须加载它们,例如使用GLEW?
是。你也可以手动完成。
如果它们不可用,只要我不调用它们就可以在我的代码中使用这些函数,
是
或者如果扩展名不可用,会导致运行时链接器中出现未解决的符号错误吗?
由于扩展是在运行时动态加载的,因此可执行链接器并不关心它们。它看到的只是一些名为__glew_gl…
或类似的变量,它们在标题中被重新定义为gl…
,而链接器并不关心它们具有什么值。
扩展加载器可以将它们设置为空指针(如果不可用),或者设置为发出警告消息,错误条件等的存根函数。
如果扩展名可用,则扩展加载程序将这些函数指针变量设置为指向实际函数。