如何定制开发中山精品网站以提升佛山企业网络形象?
摘要:佛山网站建设定制开发,中山精品网站建设新闻,简单网站建设费用,视频制作方法目录 一、前言 二、简单光源 三、光照场景 3.1 创建光源 3.2 光源顶点着色器 3.3 光源片段着色器 3.4 物体片段着色器 3.5 光源位置 一、前言 我们
佛山网站建设定制开发,中山精品网站建设新闻,简单网站建设费用,视频制作方法目录
一、前言
二、简单光源
三、光照场景
3.1 创建光源
3.2 光源顶点着色器
3.3 光源片段着色器
3.4 物体片段着色器
3.5 光源位置 一、前言 我们看到的物体颜色是通过光照在物体#xff0c;然后反射到人眼成像#xff0c;具体而言是物体不能吸收的颜色。如白光照射…目录
一、前言
二、简单光源
三、光照场景
3.1 创建光源
3.2 光源顶点着色器
3.3 光源片段着色器
3.4 物体片段着色器
3.5 光源位置 一、前言 我们看到的物体颜色是通过光照在物体然后反射到人眼成像具体而言是物体不能吸收的颜色。如白光照射在蓝色物体上它吸收了除了蓝光之外所有颜色不吸收的蓝光反射到我们眼中。当物体颜色是多色光组合时珊瑚色该物体会反射不同强度的多个颜色最终形成珊瑚色。 二、简单光源
首先设置光源颜色和物体颜色如光源设置为白色物体设置为珊瑚色两种颜色相乘表示这个物体反射的颜色结果还是物体颜色。
glm::vec3 lightColor(1.0f, 1.0f, 1.0f);
glm::vec3 toyColor(1.0f, 0.5f, 0.31f);
glm::vec3 result lightColor * toyColor; // (1.0f, 0.5f, 0.31f);
三、光照场景
3.1 创建光源
使用立方体来表示光源创建光源的VAO
//创建光源VAO
unsigned int lightVAO;
glGenVertexArrays(1,lightVAO);
glBindVertexArray(lightVAO);
//绑定VBO由于箱子的VBO数据已经包含了立方体数据无需再次设置
glBindBuffer(GL_ARRAY_BUFFER,VBO);
//设置光源立方体顶点属性
glVertexAttribPointer(0,3,GL_FLOAT,GL_FALSE,3*sizeof(float),(void*)0);
glEnableVertexAttribArray(0);
3.2 光源顶点着色器
容器的顶点位置不变仅需设置位置属性即可。
#version 330 core
layout (location 0) in vec3 aPos;uniform mat4 model;
uniform mat4 view;
uniform mat4 projection;void main()
{gl_Position projection * view * model * vec4(aPos, 1.0);
}
3.3 光源片段着色器
设置光源时要创建另一套着色器保证其它光照着色器发生改变时不受影响。这里定义一个不变的常量白色保证灯的颜色一直是亮的
#version 330 coreout vec4 FragColor;void main()
{FragColor vec4(1.0);
}
3.4 物体片段着色器
这里直接定义物体颜色与光源颜色光照之后的结果即可
#version 330 core
out vec3 FragColor;uniform vec3 lightColor;
unifotm vec3 objectColor;void main()
{FragColor vec4(lightColor*objectColor,1.0);
}
3.5 光源位置
显示光源在3D场景中的具体位置可以给我们直观的光源感觉这里将光源一直设置为白色状态。
