1.物体颜色
void main() { //物体最终颜色 = 物体颜色 * 光线颜色 FragColor = vec4(lightColor * objectColor, 1.0); //颜色向量分量相乘 }
2.VAO设置
箱子和光源使用不同的VAO和着色器。使用时分别配置。
着色器:绘制的需求不同时,为每个需求单独定义一个着色器。
shader使用步骤:
激活着色器 shader.use();
设置uniform变量 shader.set();
绑定VAO,获取数据 glBindVertexArray(VAO);
绘制 glDrawArrays(GL_TRIANGLES, 0, 36);
3.gl_position
gl_Position = vec4(aPos, 1.0)
默认是归一化的裁剪空间坐标,xyz范围[-1,1],仅能在顶点着色器(vertex shader)中使用,既是输入,也是输出。】
gl_Position赋值范围就是float的取值范围(32位),只不过只有[-1,1]区间的片元被绘制。它是vec4类型的,不能重声明为dvec4等类型。
gl_Position可以通过视角划分转换为标准化设备空间中的笛卡尔坐标:vec3 ndc = gl_Position.xyz / gl_Position.w;