之前由于对OpenGL的渲染管线理解有偏差。
一直不是很明白为什么能在像素着色器中通过丢弃像素来实现模型的裁剪。
(关于这种裁剪方法参见:http://blog.csdn.net/lyh916/article/details/45598575)
后来才明白,如果把顶点着色器中的顶点值传给像素着色器,如下图中的raw_vertex:
varying vec4 raw_vertex;
void main()
{
raw_vertex = gl_Vertex;
gl_Position = ftTransform();
}
那么在片段着色器中所得到的raw_vertex, 不仅仅是你所输入的原始值本身,还有管线
插值的结果:
varying vec4 raw_vertex;
void main()
{
gl_Color = raw_vertex;
}
所显示出的颜色是平滑的: