最近在看王定桥老师的《OpenGL学习》,原文章在这里https://blog.csdn.net/wangdingqiaoit/article/details/51638260
其中的基础光照里面,在着色器里利用光照计算公式可以得到物体的color。
下面是基元顶点的计算的Gouraud Shading的顶点着色器程序,想问问大家,这个着色器最终的vertcolor可以导出为TXT文件查看吗?或者是有没有别的方法能导出加了光照后的顶点颜色?我的QQ:1051149332,谢谢大家啦。
#version 330
layout(location = 0) in vec3 position;
layout(location = 1) in vec2 textCoord;
layout(location = 2) in vec3 normal;
out vec3 VertColor;
uniform mat4 projection;
uniform mat4 view;
uniform mat4 model;
uniform vec3 lightPos;
uniform vec3 lightColor;
uniform vec3 objectColor;
uniform vec3 viewPos;
void main()
{
gl_Position = projection * view * model * vec4(position, 1.0);
vec3 Position = vec3(model * vec4(position, 1.0)); // 在世界坐标系中指定片元位置
mat3 normalMatrix = mat3(transpose(inverse(model)));
vec3 Normal = normalize(normalMatrix * normal); // 计算法向量经过模型变换后值
// per-vertex shading
// 环境光成分
float ambientStrength = 0.1f;
vec3 ambient = ambientStrength * lightColor;
// 漫反射光成分 此时需要光线方向为指向光源
vec3 lightDir = normalize(lightPos - Position);
float diffFactor = max(dot(lightDir, Normal), 0.0);
vec3 diffuse = diffFactor * lightColor;
// 镜面反射成分 此时需要光线方向为由光源指出
float specularStrength = 1.0f;
vec3 reflectDir = normalize(reflect(-lightDir, Normal));
vec3 viewDir = normalize(viewPos - Position);
float specFactor = pow(max(dot(reflectDir, viewDir), 0.0), 32); // 32为镜面高光系数
vec3 specular = specularStrength * specFactor * lightColor;
VertColor = (ambient + diffuse + specular ) * objectColor;//这个vertcolor可以导出吗?
}