題目是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);
}