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

Dan*_*ers 2 opengl glsl

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

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

Val*_*tin 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);
Run Code Online (Sandbox Code Playgroud)