我有以下着色器
顶点着色器
#version 330
layout (location = 0) in vec3 inPosition;
layout (location = 1) in vec4 inColour;
layout (location = 2) in vec2 inTex;
layout (location = 3) in vec3 inNorm;
uniform mat4 transformationMatrix;
uniform mat4 projectionMatrix;
out vec4 ShadowCoord;
void main()
{
gl_Position = projectionMatrix * transformationMatrix * vec4(inPosition, 1.0);
ShadowCoord = gl_Position;
}
片元着色器
#version 330
in vec4 ShadowCoord;
out vec4 FragColor;
uniform sampler2D heightmapTexture;
void main()
{
FragColor = vec4(vec3(clamp(ShadowCoord.x/500,0.0,1.0),clamp(gl_FragCoord.y/500,0.0,1.0),0.0),1.0);
}
我期望它会绘制场景,左上角为绿色,右上角为黄色,右下角为红色,左下角为黑色。当我在我的片段着色器中将ShadowCoord.x
替换为gl_FragCoord.x
时,实际上就是发生了这种情况。那么,为什么我只得到了一个垂直渐变的绿色呢?很明显,我的ShadowCoord出了点问题。有人知道是怎么回事吗?
ShadowCoord
的内容完全取决于两个矩阵的内容,而我们不知道它们是什么。我们甚至不知道您是否使用透视或正交投影。 - Nicol Bolas