webgl总结

我对webgl或者说二维、三维的理解

首先咱们要作的就是把三维的东西展示在显示器里(浏览器里),但浏览器是二维的。那么就是把一个三维的物体用数学模型描述出来(x,y,z)而后把这个三维的数学模型转换到二维的浏览器里显示出来。(用webgl来模拟一个三维的空间)。
不管用DirectX仍是OpenGL,最终都须要将三维的情报向二维进行变换。就像刚开始说的那样,最终的图像都是由二维显示器来显示的。
这时候,坐标变换就是必须的了。坐标变换大体能够分为三种,将这些方法正确的组合在一块儿,最终决定显示器上的位置。
用身边的东西举例说明的话,三维向二维转换的例子就是照相机。照片和图像,经过照相机已经所有变为了二维,最终,输出成了照片和动画。程序员

三种坐标的转换

1.模型变换:在OpenGL的处理中虽然通常叫作模型变换,可是在DirectX中被叫作世界变换。
模型变换,是指为了定义参照物在三维空间的什么位置而进行的坐标变换。和现实的世界不一样,程序中的三维空间里定义了世界的中心的基准点,就是原点。从这个原点出发,为了知道参照物的相对位置,就须要进行必要的坐标变换。假设,虚拟的三维空间里有一个苹果,那么为了表示这个苹果在什么位置,就须要进行相应的模型变换了。web

2.视图变换:定义了镜头的实际位置以及镜头的方向。拿刚刚举例的苹果来讲,即便三维空间中有一个苹果,若是镜头的方向不对着苹果的话,一样也是看不到这个苹果的。并且,若是将镜头大幅度远离苹果,那么也有可能看不到苹果了。为了决定镜头的位置和角度所进行的坐标变换就叫作视图变换。浏览器

3.投影变换:定义了三维空间的摄影区域。好比,是横向摄影,仍是纵向摄影,最远拍摄多远距离等。
通常的照相机,直接拍摄镜头前的全部图像,最远拍摄多远也基本上没什么意识。可是,程序是没法模拟无限大的空间的,因此,从哪里开始拍摄,拍摄到哪里,必须有一个明确的范围。投影变幻,经过远近法则,能够将近处的物体描画的比较大,远处的物体描画的比较小。动画

着色器

认识着色器以前得先了解一下什么是固定渲染管线,简单来讲,固定渲染管线就是就是3d渲染所须要进行的一连串的计算流程。也就是上面所说的模型、视图、投影的三种变化,固定渲染管线都会替咱们完成。
但webgl中不存在固定渲染管线,那么就意味着,坐标的变化得由咱们本身来解决了。在webgl中这个解决坐标变化的机制就叫着色器(shader)。而这种能够有程序员来控制的坐标变换机制又叫作,可编辑渲染管线机制。着色器又分为两种
1.顶点着色器(vertex shader):顾名思义它能处理顶点坐标、大小等(矩阵计算后的结果),可以把数学坐标光栅化。
2.片元着色器(fragment shader):可以接收光栅化数据并加以处理使其显示到屏幕上(光栅化数据包含了像素的位置、颜色等信息)webgl

光栅化就是把顶点数据转换为片元的过程。片元中的每个元素对应于帧缓冲区中的一个像素。
光栅化实际上是一种将几何图元变为二维图像的过程。该过程包含了两部分的工做。第一部分工做:决定窗口坐标中的哪些整型栅格区域被基本图元占用;第二部分工做:分配一个颜色值和一个深度值到各个区域。光栅化过程产生的是片元。把物体的数学描述以及与物体相关的颜色信息转换为屏幕上用于对应位置的像素及用于填充像素的颜色,这个过程称为光栅化,这是一个将模拟信号转化为离散信号的过程。编码

着色器的使用:使用GLSL(openGL Shading Laguage)硬编码的C语言去使用.3d

相关文章
相关标签/搜索