【问题标题】:openGL shaders errorsopenGL 着色器错误
【发布时间】:2015-08-07 23:14:53
【问题描述】:

我正在尝试了解 OpenGL 着色器。
我在 Windows 上工作,我的 OpenGL 版本是 3.0。
我有一个文件,应该每 3 秒绘制一个三角形并改变它的颜色,但是当我调试时我收到一个警告(见下图),我只能看到一个不改变颜色的三角形。我按照this 网站的指南进行操作: 源代码是here。

根据this 问题的最佳答案,我将着色器版本更改为 130,但我不断收到此警告。

这是我的错误截图:

【问题讨论】:

  • 源代码中glfwWindowHint(GLFW_CONTEXT_VERSION_MAJOR, 3);glfwWindowHint(GLFW_CONTEXT_VERSION_MINOR, 3);这几行你改了吗?
  • @GnimucKey 不,我没有更改它们,我应该在这些行中更改什么?
  • 130 不支持布局限定符。
  • 我强烈建议你升级你的显卡以学习Modern GL。将次要版本更改为0后,您可能需要注释以下行glfwWindowHint(GLFW_OPENGL_PROFILE, GLFW_OPENGL_CORE_PROFILE);,接下来,您需要调整着色器代码...
  • @Robinson 不,你可能误解了我的意思。 OP 使用的教程说...This is also the reason why our tutorials are geared at Core-Profile OpenGL version 3.3. ...,我应该写in order to meet the demand of that tutorial。对此感到抱歉:)

标签: c++ opengl


【解决方案1】:

location 布局限定符仅在 GLSL 3.30 及更高版本中受支持。因此,您需要在着色器代码开头指定使用此功能的版本是:

#version 330

另外,您尝试使用:

#version 130 core

这不是一个有效的版本。版本定义的配置文件部分仅在 GLSL 1.50 中引入。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多