GLSL:没有指定版本时使用的是什么版本?

时间:2017-03-21 12:27:05

标签: opengl glsl

如果在GLSL着色器的第一行中没有指定版本(所以没有" #version 330",实际使用哪个版本?

供应商(甚至是驱动程序)是否具体?

1 个答案:

答案 0 :(得分:5)

什么是默认的GLSL版本?

  • 假设默认版本为1.10
  • 请注意,#version指令始终必须位于第一行
  

除了空格和注释之外,#version指令必须出现在着色器中的任何其他指令之前。如果#version指令没有出现在顶部,那么它假定为1.10,这几乎肯定不是你想要的。

     

- OpenGL Wiki

如果它与组合来源有关,那么您可以省略#version指令并执行以下操作:

const GLsizei stringCount = 2;
const GLchar *strings[stringCount] = {
    "#version 330 core\n",
    shaderSource,
};

glShaderSource(shader, stringCount, strings, NULL);