1

我正在使用 gl_Layer 进行分层渲染,并在几何着色器中分配了一个图层值。但是,当我在片段着色器中使用 gl_Layer 时,出现错误:

此配置文件中无法访问 gl_Layer

这是我的着色器:

#version 400 core

uniform sampler2DArray diffuse;
in vec2 outtexcoords;

layout(location = 0, index = 0) out vec4 FragColor;

void main()
{
    FragColor = texture(diffuse, vec3(outtexcoords, gl_Layer));
}

我当然可以通过使用另一个输入/输出变量来绕过这个,但我想知道在片段着色器中使用 gl_Layer 有什么问题。我曾尝试在 Fragment 程序中使用“in int gl_Layer”,但我想这不是解决方案,因为它在一个内置变量中。

是因为我没有使用正确的扩展程序吗?还是我的 GL 版本还不支持?

4

1 回答 1

3

您指定了 GLSL 4.0 核心配置文件,但其规范说gl_Layer只能在几何着色器中使用,并且只能作为输出参数。以前的 GLSL 版本允许它在片段着色器中用作只读变量。

于 2013-11-08T10:12:12.457 回答