经过一段事件的学习,已经可以正确加载obj模型了,并支持鼠标缩放,调整相机的x,y坐标。下面是结果图片,贴出来分享一下。
顶点着色器代码:
#version 430
layout (location=0) in vec3 position;
uniform mat4 mv_matrix;
uniform mat4 proj_matrix;
layout (location=1) in vec3 innormal;
out vec3 FragPos;
out vec3 Normal;
uniform mat4 model;
layout (location=2) in vec3 VertexColor;
out vec3 verColor;
void main(void)
{
gl_Position = proj_matrix * mv_matrix * vec4(position,1.0);
FragPos=vec3(model*vec4(position,1.0)*mv_matrix);
Normal=mat3(transpose(inverse(model)))*innormal;
verColor=VertexColor;
}
片段着色器代码:
#version 430
out vec4 FragColor;
in vec3 Normal;
in vec3 FragPos;
uniform vec3 lightPos;
uniform vec3 lightColor;
uniform vec3 objectColor;
in vec3 verColor;
void main()
{
//环境光
float ambientStrength=0.5;
vec3 ambient=ambientStrength*lightColor;
//漫反射
vec3 norm=normalize(Normal);
vec3 lightDir=normalize(lightPos-FragPos);
float diff=max(dot(norm,lightDir),0.0);
vec3 diffuse=diff*lightColor;
vec3 result=(ambient+diffuse)*verColor;
FragColor=vec4(result,1.0);
}