【问题标题】:Why might OpenGL shader functions not be defined?为什么不能定义 OpenGL 着色器函数?
【发布时间】:2013-12-28 21:11:47
【问题描述】:

我对着色器和 openGL 有疑问。每当我尝试使用它们(即使是简单的函数,如 glCreateShader​ 或 glCreateProgram​)时,我的编译器 (MinGW 4.6.1) 都会告诉我它们尚未定义。

甚至 GLEW 也无法正确编译。例如,显然编译器不知道 GLchar。

另一方面,几乎所有其他重要的 OpenGL 函数(与着色器无关)似乎运行良好,没有任何问题。奇怪的是,当我查看 gl.h 等时,我看不到定义的着色器函数,所以也许编译器是对的。我可以有一个 OpenGL 标头的拙劣副本,还是我可能做错了什么?

【问题讨论】:

  • Microsoft Windows 附带了一个实现 OpenGL 1.1 的库和头文件。如果没有 GLEW,或者在运行时手动加载扩展,您将无法访问 GLSL(OpenGL 2.0 中的核心,扩展始于 OpenGL 1.4)。可安装客户端驱动程序(基本上是您的显示驱动程序附带的)有责任在 Windows 上将 OpenGL 扩展至 1.1 以上,但此扩展是在运行时完成的,而不是在编译/链接时完成的。

标签: c++ opengl mingw shader


【解决方案1】:

GLEW 是您的直接问题。首先让它工作,然后你可以看到更新的 OpenGL 扩展。着色器函数不在 gl.h 中。我无法让 GLEW 自己构建,但确实让 GL3W 工作。我发现我不能把 freeglut.h 放在 gl3w.h 之前,而且 stdlib.h 必须放在 freeglut.h 之前。我发现 opengl-tutorial org 上的教程对开始使用着色器很有帮助。

【讨论】:

  • 感谢您的帮助,这无疑将我推向了正确的方向。 (:
猜你喜欢
  • 2018-07-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-06-09
  • 2012-04-27
相关资源
最近更新 更多