OpenGL着色器的out可以导出为TXT文件吗?

清风234 2019-11-11 08:24:10
最近在看王定桥老师的《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可以导出吗?
}
...全文
42 回复 打赏 收藏 转发到动态 举报
写回复
用AI写文章
回复
切换为时间正序
请发表友善的回复…
发表回复

3,881

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 其它技术问题
社区管理员
  • 其它技术问题社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧