我对如何使用OpenGL扩展(特别是VBOs和draw_texture)有些困惑。我知道你可以在GL_EXTENSIONS字符串中检查它们,但那又怎样?如果扩展可用,我可以根据需要调用相关函数,或者是否必须使用GLEW加载它们?如果它们不可用,只要我不调用它们就可以在代码中具有这些函数,或者在扩展不可用的情况下会在运行时链接程序中导致未解决的符号错误?有条件地使用OpenGL扩展
在多个平台上,例如Linux,Windows,Android(本机),Mac和iOS都是如此吗?
我对如何使用OpenGL扩展(特别是VBOs和draw_texture)有些困惑。我知道你可以在GL_EXTENSIONS字符串中检查它们,但那又怎样?如果扩展可用,我可以根据需要调用相关函数,或者是否必须使用GLEW加载它们?如果它们不可用,只要我不调用它们就可以在代码中具有这些函数,或者在扩展不可用的情况下会在运行时链接程序中导致未解决的符号错误?有条件地使用OpenGL扩展
在多个平台上,例如Linux,Windows,Android(本机),Mac和iOS都是如此吗?
如果扩展可我就可以调用相关功能,需要
号
还是我必须加载它们例如使用GLEW?
是的。你也可以手动完成。
如果他们都不可用它确定在我的代码的那些功能,只要我不给他们打电话,
是。
或者会在运行时链接程序中导致无法解析的符号错误,以防扩展程序不可用?
由于扩展是在运行时动态加载的,可执行链接器并不关心它们。它所看到的只是一些名为__glew_gl…
或类似的变量,它们在标头中重新定义为gl…
,链接器不关心它们具有的值。
扩展加载器可以将它们设置为空指针(如果不可用)或设置为发出警告消息,错误条件或类似事项的存根函数。
如果扩展名可用,则扩展加载器将这些函数指针变量设置为指向实际函数。