摘要:
平行光:当使用一个假设光源处于无限远处的模型时,被称为定向光。因为它的光线都有着相同的方向,与光源的位置无关。 理解:太阳光便为平行光 定义一个光线方向向量而不是位置向量来模拟一个定向光 光照计算中采用的都是一个从片段到光源的光线方向。light.direction是人们的习惯,由光源指向物体的方向 阅读全文
摘要:
一、冯氏光照模型 其主要结构由3个分量组成:环境(ambient)、漫反射(diffuse)、镜面(specular)光照。下边这张图展示了这些分量看起来的样子: 环境光照:即使在黑暗的环境下,世界上通常也仍然有一些光亮(月亮、远处的光),所以物体几乎永远不是完全黑暗的。为了模拟这种效果,我们会使用 阅读全文
摘要:
一、隐藏并捕捉光标 偏航角和俯仰角是通过鼠标移动获得的,水平的移动影响偏航角,竖直的移动影响俯仰角。 原理是,存储上一帧鼠标的位置,在当前帧中计算鼠标位置与上一帧的位置相差多少。如果水平/竖直差别越大,那么俯仰角或偏航角就改变越大,也就是摄像机需要移动更多的距离。 首先我们应该告诉GLFW,它应该隐 阅读全文
摘要:
1、摄像机位置 正z轴是从屏幕指向自己的,如果我们希望摄像机向后移动,就是沿着z轴的正方向移动。 2、摄像机方向 即摄像机指向哪个方向。若让摄像机指向场景原点,用场景原点向量减去摄像机位置向量的结果就是摄像机的指向向量。摄像机指向z轴负方向,但我们希望方向向量指向摄像机的z轴正方向。所以我们交换相减 阅读全文
摘要:
建议在组合矩阵时,先进行缩放操作,然后是旋转,最后才是位移,否则它们会(消极地)互相影响。 模型平移后,模型还是以原点进行旋转。而模型中心已经不在原点上,导致旋转异常。 这时因为: 在物体刚刚放入世界坐标系的时候使用的是本地坐标,也就是本地和世界坐标系的原点和坐标轴都是重合的,此时所有物体都“把世界 阅读全文
摘要:
一、纹理 纹理坐标:用来标明该从纹理图像的哪个部分采样 为了能够把纹理映射(Map)到三角形上,我们需要指定三角形的每个顶点各自对应纹理的哪个部分。这样每个顶点就会关联着一个纹理坐标,之后在图形的其它片段上进行片段插值。 采样:使用纹理坐标获取纹理颜色 纹理坐标在x和y轴上,范围为0到1之间(注意我 阅读全文
摘要:
一、目的:不需要在着色器中指定图形的颜色,直接在顶点数据中指定颜色 //画三角形的顶点数组 float vertices[] = { //位置 //颜色 -0.5f, -0.5f, 0.0f,1.0f,0.0f,0.0f, 0.5f, -0.5f,0.0f,0.0f,1.0f,0.0f, 0.0f, 阅读全文
摘要:
一、添加头文件 首先,将头文件加到项目的.cpp文件中 注: 包含glad的头文件一定要在包含glfw的头文件之前使用。因为glad的头文件包含了正确的openGL头文件(例如GL/gl.h),所以需要在需要依赖于openGL的头文件之前使用glad. 二、创建main函数 在main函数中实例化G 阅读全文
摘要:
从我们构造模型的局部坐标系(Local/Object Space)经过一系列的处理最终渲染到屏幕坐标系(Screen Space)下,这个过程有6种坐标系。 一、世界坐标系(World Coordinates) 学名:右手笛卡尔坐标系统。 在OpenGL中,世界坐标系是以屏幕中心为原点(0, 0, 阅读全文
摘要:
一、 其函数原型为glViewport(GLint x,GLint y,GLsizei width,GLsizei height) x,y 以像素为单位,指定了窗口的左下角位置。 width,height表示视口矩形的宽度和高度,根据窗口的实时变化重绘窗口。 二、 在默认情况下,视口被设置为占据窗口 阅读全文