题目是vertex shader的VARYING VARIABLES,当时在网上搜索了不少资料,用线性插值的方法过了。
=_=线性插值的做法可以理解为,一根直线上,颜色的rgb值由点的位置计算得出。
一个三角形内,简单一点的理解,点的rgb值由点与三个顶点连接的各个三角形面积得出。
代码如下:
vertex.glsl
precision highp float;
attribute vec4 position;
attribute vec3 color;
varying vec4 fragPosition;
void main() {
gl_Position = position;
fragPosition= position;
}
fragment.glsl
precision highp float;
varying vec4 fragPosition;
void main() {
float R= fragPosition.y+0.5;
float G= 0.5*(0.5-2.0*fragPosition.x-fragPosition.y);
//原本fragPosition.x系数是1.0,根据调试结果修改成2.0通过
float B= 0.5*(0.5+2.0*fragPosition.x-fragPosition.y);
gl_FragColor = vec4(R,G,B,1);
}