OpenGL
文章平均质量分 83
OpenGL入门学习
Yanjun2i
这个作者很懒,什么都没留下…
展开
-
OpenGL入门第八步:投光物
将光(Cast)到物体的光源叫做投光物(Light Caster)。讨论定向光(Directional Light)、点光源(Point Light)、聚光(Spotlight)。原创 2024-07-26 13:42:19 · 1343 阅读 · 0 评论 -
OpenGL入门第七步:光照贴图
很像在之前的纹理。我们仅仅是对同样的原理使用了不同的名字:其实都是使用一张覆盖物体的图像,让我们能够逐片段索引其独立的颜色值。在光照场景中,它通常叫做一个漫反射贴图(Diffuse Map)(在PBR之前3D艺术家通常都这么叫它),它是一个表现了物体所有的漫反射颜色的纹理图像。在着色器中使用漫反射贴图的方法和纹理教程中是完全一样的。但这次我们会将纹理储存为Material结构体中的一个sampler2D。我们将之前定义的vec3漫反射颜色向量替换为漫反射贴图。注意sampler2D。原创 2024-07-25 17:27:55 · 567 阅读 · 0 评论 -
OpenGL入门第九步:多光源
当场景中使用多个光源时,通常使用以下方法:我们需要有一个单独的颜色向量代表片段的输出颜色。对于每一个光源,它对片段的贡献颜色将会加到片段的输出颜色向量上。所以场景中的每个光源都会计算它们各自对片段的影响,并结合为一个最终的输出颜色。创建一个包含六个光源的完全照明场景,我们将模拟一个类似太阳的定向光(Directional Light)光源,四个分散在场景中的点光源(Point Light),以及一个手电筒(Flashlight)。原创 2024-07-26 14:18:04 · 363 阅读 · 0 评论 -
OpenGL入门第五步:基础光照
我们在现实生活中看到某一物体的颜色并不是这个物体真正拥有的颜色,而是它所反射的(Reflected)颜色。换句话说,那些不能被物体所吸收(Absorb)的颜色(被拒绝的颜色)就是我们能够感知到的物体的颜色。例如,太阳光能被看见的白光其实是由许多不同的颜色组合而成的(如下图所示)。如果我们将白光照在一个蓝色的玩具上,这个蓝色的玩具会吸收白光中除了蓝色以外的所有子颜色,不被吸收的蓝色光被反射到我们的眼中,让这个玩具看起来是蓝色的。下图显示的是一个珊瑚红的玩具,它以不同强度反射了多个颜色。所有光照的本质就是。原创 2024-07-24 18:12:39 · 430 阅读 · 0 评论 -
OpenGL入门第六步:材质
当描述一个表面时,我们可以分别为三个光照分量定义一个材质颜色(Material Color):环境光照(Ambient Lighting)、漫反射光照(Diffuse Lighting)和镜面光照(Specular Lighting)。通过为每个分量指定一个颜色,我们就能够对表面的颜色输出有细粒度的控制了。现在,我们再添加一个反光度(Shininess)分量,结合上述的三个颜色,我们就有了全部所需的材质属性了。为风氏光照模型的每个分量都定义一个颜色向量。原创 2024-07-25 15:39:51 · 933 阅读 · 0 评论 -
OpenGL入门第一步:创建窗口、重写虚函数
设置OpenGL资源和状态。在第一次调用resizeGL()或paintGL()之前被调用一次。resizeGL窗口尺寸变化时调用。窗口更新时调用,渲染 OpenGL 场景。绑定当前OpenGL上下文。释放当前OpenGL上下文。如果要重绘场景 应该调用update而不是resizeGL所有跟 OpenGL 相关的操作都应该发生在三个函数内 或者在 调用之后。原创 2024-05-09 15:34:47 · 1146 阅读 · 0 评论 -
OpenGL入门第三步:矩阵变换、坐标系统
这里矩阵变换,使用4*4的矩阵,既可以表示位移,也可以表示缩放。添加4维矩阵变量:在着色器里面添加变换矩阵,改变坐标位置设计一个随时间变换 ,所有重写TimerEvent调用update触发。原创 2024-05-10 18:31:16 · 306 阅读 · 0 评论 -
OpenGL入门第二步:颜色、纹理设置(解析)
0是由顶点着色器规定,即取得是位置值;GL_FLOAT表示是浮点型数据;0表示从数据第0位开始取;:1是由顶点着色器规定,即取得是纹理值;3表示从第3个数据开始取;里写颜色随时间的变化,然后调用update刷新,会触发paintGL。这里顶点数据发生了改变,除了顶点位置还包括了纹理坐标位置。变量,如果需要颜色随时间变化,那就再添加一个定时器。这时候要注意创建对象时,对着色器的取值设置。中给片段着色器赋值,让重新设置颜色。可以设置多个纹理,纹理可以叠加。设置纹理数据来源以及数据处理。原创 2024-05-09 18:06:18 · 629 阅读 · 0 评论 -
OpenGL入门第四步:摄像机视角变换与交互
相机视角变换需要与鼠标键盘进行交互,需要重写鼠标和键盘响应函数。初始化:设置移动速度和对应按键移动方向,以及摄像机的摆放位置glm::LookAt函数需要一个位置、目标和上向量。知道相机上方向和前方向,可以通过矩阵叉乘得到右方向,从而建立相机坐标系(右手坐标系)。位置是相机坐标系在整个世界坐标系下的位置。鼠标只要经过窗口就会被置于中心,不隐藏指针就是下面的效果。:实现缩放效果。当视野变小时,场景投影出来的空间就会减小,产生放大了的感觉。:键盘响应。原创 2024-05-11 11:07:57 · 512 阅读 · 0 评论