在尝试加载 OpenGL 扩展之前查询它们有什么意义

  • 本文关键字:查询 加载 OpenGL 扩展 opengl
  • 更新时间 :
  • 英文 :


无论出于何种原因,我都在搞砸手动加载OpenGL扩展。

我找到的每个教程都建议首先查询扩展字符串,然后将其解析为扩展列表,最后加载支持的扩展的函数指针。在我看来,整个过程可以简化为仅获取函数指针,然后检查wglGetProcAddress或等效项返回的任何NULL

我的问题是:中间查询步骤有什么用途?是否可以不支持函数,但*GetProcAddress返回非NULL指针?

扩展字符串是 GL 实现告诉您它支持哪些扩展的正确方法。就 GL 而言,查询指针以查找扩展字符串未暗示存在的函数是未定义的行为。

实际上,可能会出现这种情况。对于不同的后端,通常具有相同的 GL 客户端 dll,就像 mesa 一样。该函数存在的事实并不意味着它是为所有后端驱动程序实现的。

中间查询步骤有什么用途?

看看支持当前活动上下文的 OpenGL 实现实际上支持哪些扩展。此外,并非所有扩展(如新纹理格式或着色器目标)都会引入新的过程(函数),而只会引入新的令牌。检测这些内容的唯一方法是查看扩展字符串。

是否有可能不支持函数,但 *GetProcAddress 返回非 NULL 指针?

是的,这是可能的。

最新更新