【问题标题】:Unresolved glGenVertexArrays and glBindVertexArray未解决的 glGenVertexArrays 和 glBindVertexArray
【发布时间】:2013-12-17 10:48:23
【问题描述】:

我正在尝试使用顶点数组对象在 opengl 中渲染一个立方体。相同的代码适用于 linux 机器,但不适用于 Windows 机器。 使用 glGenVertexArrays 和 glBindVertexArray 时出现未解决的外部错误。

glewInfo.exe 报告 glGenVertexArrays 和 glBindVertexArray 可用:

GL_ARB_vertex_array_object:                                    OK 
---------------------------
  glBindVertexArray:                                           OK
  glDeleteVertexArrays:                                        OK
  glGenVertexArrays:                                           OK
  glIsVertexArray:                                             OK

【问题讨论】:

  • 如何在代码中查询这些扩展?你使用加载器库吗?如果有,是哪一个?如果没有,你是怎么做到的?
  • 就像我说的,上面的结果是glewinfo.exe的输出。我不需要验证这些扩展,因为代码直接在我的 linux 机器上运行。我还检查了 Windows 机器上的图形驱动程序是否已过时(nvidia gt350m)。也许这可能是问题所在? TBH,我没有太多时间来测试这个,因为 Windows 机器不是我的。但我会尝试从我的应用程序中检查扩展(这是一个 qt 应用程序)
  • 顺便说一句,能不能像 glEnable(GL_ARB_vertex_array_object); ?我一拿到 Windows 机器就试试。
  • 显然不是!但值得一试!
  • 好吧。您使用glewinfo 二进制文件这一事实并不意味着您在代码库中也使用了glew。我只是想确定一下。如果您使用 glew 并得到那些未解决的链接器错误,则 lniking 有问题,并且没有运行时代码可以修复它。请注意,当您在 Windows 上使用 glew 作为静态库(或直接将 glew 源添加到您的代码中)时,您必须在包含 glew.h 之前 #define GLEW_STATIC

标签: c++ qt opengl vao


【解决方案1】:

您可能没有使用正确的 opengl.dll 库。 Windows 默认带有一个软件渲染器,您可能正在使用那个。

查看显卡供应商的网站以获取合适的库。

【讨论】:

  • 在没有为 GPU 安装 GL 驱动程序的情况下,glewinfo 将无法报告 GL_ARB_vertex_array_object 存在。因为 MS 实现只支持 GL 1.1。另请注意,在 Windows 上,opengl32.dll 始终是要使用的正确库。 GPU 供应商 dll 注册为 ICD,opengl32.dll 会将调用重定向到供应商的 lib。
猜你喜欢
  • 2015-10-31
  • 2023-04-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-08-23
  • 2015-01-11
  • 2017-05-27
  • 2012-07-20
相关资源
最近更新 更多