第一个着色器代码
// vertexShader 顶点着色器
uniform mat4 projectionMatrix; // 矩阵将坐标转换为剪辑空间坐标
uniform mat4 viewMatrix; // 应用相对于相机的转换(位置,旋转,视野,近,远)
uniform mat4 modelMatrix; // 应用相对于网格的转换(位置,旋转,比例)
attribute vec3 position;
void main(){
gl_Position = projectionMatrix * viewMatrix * modelMatrix * vec4(position,1.0);
// gl_Position = vec4(position, 1.0); // 不能去掉哪些
}
// fragmentShader 片段着色器
precision mediump float;
void main()
{
gl_FragColor = vec4(1.0, 0.0, 0.0, 1.0);
}
第二个着色器代码
// vertexShader 顶点着色器
uniform mat4 projectionMatrix; // 矩阵将坐标转换为剪辑空间坐标
uniform mat4 modelViewMatrix; // 应用相对于网格的转换(位置,旋转,比例)
attribute vec3 position;
void main()
{
gl_Position = projectionMatrix * modelViewMatrix * vec4(position, 1.0);
}
// fragmentShader 片段着色器
precision mediump float;
void main()
{
gl_FragColor = vec4(1.0, 0.0, 0.0, 1.0);
}
第三个着色器代码
// vertexShader 顶点着色器
uniform mat4 projectionMatrix;
uniform mat4 modelMatrix;
uniform mat4 viewMatrix;
attribute vec3 position;
void main()
{
vec4 modelPosition = modelMatrix * vec4(position, 1.0);
vec4 viewPosition = viewMatrix * modelPosition;
vec4 projectedPosition = projectionMatrix * viewPosition;
gl_Position = projectedPosition;
}
// fragmentShader 片段着色器
precision mediump float;
void main()
{
gl_FragColor = vec4(1.0, 0.0, 0.0, 1.0);
}
扭曲的平面着色器
// vertexShader 顶点着色器
uniform mat4 projectionMatrix;
uniform mat4 modelMatrix;
uniform mat4 viewMatrix;
attribute vec3 position;
void main()
{
vec4 modelPosition = modelMatrix * vec4(position, 1.0);
modelPosition.z += sin(modelPosition.x * 10.0) * 0.1;
vec4 viewPosition = viewMatrix * modelPosition;
vec4 projectedPosition = projectionMatrix * viewPosition;
gl_Position = projectedPosition;
}
// fragmentShader 片段着色器
precision mediump float;
void main()
{
gl_FragColor = vec4(1.0, 0.0, 0.0, 1.0);
}
片段着色器 gl_FragColor
// vertexShader 顶点着色器
uniform mat4 projectionMatrix;
uniform mat4 modelMatrix;
uniform mat4 viewMatrix;
attribute vec3 position;
void main()
{
vec4 modelPosition = modelMatrix * vec4(position, 1.0);
modelPosition.z += sin(modelPosition.x * 10.0) * 0.1;
vec4 viewPosition = viewMatrix * modelPosition;
vec4 projectedPosition = projectionMatrix * viewPosition;
gl_Position = projectedPosition;
}
// fragmentShader 片段着色器
precision mediump float;
void main()
{
gl_FragColor = vec4(1.0, 0.0, 0.0, 1.0);
}
缓冲几何体的attributes会传到着色器里面