OpenGL_17_点光源

1,(环境光,漫射光和镜面反射光),这三种模型都是基于平行光的。平行光只是通过一个向量来表示,没有光源起点,因此它不会随着距离的增大而衰减点光源:它有光源起点而且有衰减效果,距离光源越远光线越弱。平行光的方向是恒定的,但点光源光线的方向是变化的,四处扩散。点光源向各个方向均匀照射,因此点光源的方向要
2次阅读

OpenGL_16_镜面反射

1,我们在计算环境光的时候,光的强度是唯一的影响因素。然后处理漫射光的时候公式中加入了光的方向参数。镜面反射包含了上面所有的综合因素并且添加了一个新的元素:观察者的位置。镜面反射时光以一定角度照射到物体表面,同时会在法线的另一侧对称的角度上反射出去,如果观察者刚好在反射光线的路径上那么就会看到格外强
4次阅读

OpenGL_15_漫反射

1,漫射光和环境光的主要不同是漫射光的特性依赖光线的方向,而环境光完全忽略光的方向。当只有环境光时整个场景是被均匀照亮的,而漫射光使物体朝向它的那一面比其他背向光的面要更亮。漫射光还增加了一个光强度的变化现象,光的强度大小还取决于光线和物体表面的角度。漫射光模型是建立在兰伯特余弦定律上的,光线的强度
2次阅读

OpenGL入门学习(转载)

说起编程作图,大概还有很多人想起TC的#include <graphics.h>吧?但是各位是否想过,那些画面绚丽的PC游戏是如何编写出来的?就靠TC那可怜的640*480分辨率、16色来做吗?显然是不行的。本帖的目的是让大家放弃TC的老旧图形接口,让大家接触一些新事物。OpenGL作为
9次阅读

Opengl_14_环境光

1,光源颜色 * 物体表面颜色 => 得到反射回来的颜色再乘以环境光的强度因素从而得到最终的颜色值。2,获取键盘事件修改环境强度因素值。每次渲染的时候传入光源颜色值和环境强度因素值。glUniform3f(dirlight_colorlocation, directionallight.Co
5次阅读

Opengl_13_纹理贴图

1,为了实现纹理贴图我们需要做三件事:将一张贴图加载到OpenGL中,提供纹理坐标和顶点(将纹理对应匹配到顶点上),并使用纹理坐标从纹理中进行取样操作取得像素颜色。由于三角形会被缩放、旋转、平移变换导致最后会以不同的结果投影显示到屏幕上,而且由于camera的不同操作看上去也会很不一样。GPU要做的
7次阅读

Opengl_12_相机控制

1,使用键盘控制位置的移动没有使用glutSpecialFunc,glutKeyboardFunc因为我这个win32程序。2,相机类里面定义了相机的三个方向成员:位置(position),target向量和up向量前后移动是最简单的,因为这俩种移动方向和tartget向量在一条线上,我们只需要从起
5次阅读

Opengl_11_相机空间

1,相机开始往下朝向Z轴,可以看到相机的坐标系可能和世界坐标系一致(上面的图)。但是顺时针旋转45度之后,也可能不一样了(下面的图)。所以事实上同时会有两个坐标系。有一个定义物体位置的世界坐标系,还有一个和相机的三个轴线(相机的目标朝向,上,右)一致的相机坐标系。这两个坐标系叫做'世界空间'和'相机
8次阅读

Opengl_10_透视投影

1,We have finally reached the item that represents 3D graphics best - the projection from the 3D world on a 2D plane while maintaining the appearance
8次阅读

Opengl_9_复合变换

1,多数情况下,你会想缩放物体来和3d世界相适应,旋转物体到合适的方向,移动物体到某个地方等等。到现在我们已经实践了每一次的单一图形变换。为了实现上面一系列的变换,我们需要对顶点位置左乘第一个变换矩阵,然后得到的结果再左乘下一个变换矩阵等等,将所有变换矩阵都左乘顶点位置之后实现多个变换。在shade
9次阅读