OpenGL/GLSL不在GL_四边形上插值

OpenGL/GLSL不在GL_四边形上插值,opengl,glsl,shader,Opengl,Glsl,Shader,我正在使用GLSL渲染基本立方体(由GL_四边形曲面制成)。我想将gl_顶点内容从顶点传递到片段着色器。如果我使用gl_FrontColor(顶点着色器)和gl_Color(片段着色器)进行此操作,则一切都可以工作,但如果使用普通变量(请参见下面的代码和图像),则一切都不起作用。由于某种原因,曲面上的变量似乎没有插值。你知道是什么导致OpenGL出现这种情况吗 glShadeModel设置为GL\u SMOOTH-我现在想不出任何其他可能导致这种效果的东西 顶点着色器: #version 120

我正在使用GLSL渲染基本立方体(由
GL_四边形
曲面制成)。我想将
gl_顶点
内容从顶点传递到片段着色器。如果我使用
gl_FrontColor
(顶点着色器)和
gl_Color
(片段着色器)进行此操作,则一切都可以工作,但如果使用普通
变量
(请参见下面的代码和图像),则一切都不起作用。由于某种原因,曲面上的变量似乎没有插值。你知道是什么导致OpenGL出现这种情况吗

glShadeModel
设置为
GL\u SMOOTH
-我现在想不出任何其他可能导致这种效果的东西

顶点着色器:

#version 120

varying vec4 frontSideValue;

void main() {
   frontSideValue = gl_Vertex;
   gl_Position = transformPos;
}
#version 120

varying vec4 frontSideValue;

void main() {
   gl_FragColor = frontSideValue;
}
片段着色器:

#version 120

varying vec4 frontSideValue;

void main() {
   frontSideValue = gl_Vertex;
   gl_Position = transformPos;
}
#version 120

varying vec4 frontSideValue;

void main() {
   gl_FragColor = frontSideValue;
}

结果看起来就像您没有为颜色向量使用[0,1]范围内的值一样。您基本上使用未转换的顶点位置,它可能远远超出此范围。立方体似乎围绕原点居中,因此您看到的是一个小的过渡,其中的值实际上在[0,1]范围内,即未锐化带


使用builin
gl_FrontColor
,该值似乎在插值之前被钳制。

立方体的大小是多少?可能比1大?使用0…最多1。海报可以使用
frontSideValue=clamp(gl_顶点,0.0,1.0)检查此诊断