webgl总结

我对webgl或者说二维、三维的明白

起首我们要做的就是把三维的东西展如今显现器里(浏览器里),但浏览器是二维的。那末就是把一个三维的物体用数学模子形貌出来(x,y,z)然后把这个三维的数学模子转换到二维的浏览器里显现出来。(用webgl来模仿一个三维的空间)。
不管用DirectX照样OpenGL,终究都须要将三维的谍报向二维举行变更。就像刚最先说的那样,终究的图象都是由二维显现器来显现的。
这时候,坐标变更就是必需的了。坐标变更大抵可以分为三种,将这些要领准确的组合在一起,终究决议显现器上的位置。
用身旁的东西举例说明的话,三维向二维转换的例子就是照相机。照片和图象,经由历程照相机已悉数变成了二维,终究,输出成了照片和动画。

三种坐标的转换

1.模子变更:在OpenGL的处置惩罚中虽然平常叫做模子变更,然则在DirectX中被叫做天下变更。
模子变更,是指为了定义参照物在三维空间的什么位置而举行的坐标变更。和现实的天下差别,顺序中的三维空间里定义了天下的中间的基准点,就是原点。从这个原点动身,为了晓得参照物的相对位置,就须要举行必要的坐标变更。假定,假造的三维空间里有一个苹果,那末为了示意这个苹果在什么位置,就须要举行响应的模子变更了。

2.视图变更:定义了镜头的现实位置以及镜头的方向。拿方才举例的苹果来讲,纵然三维空间中有一个苹果,假如镜头的方向不对着苹果的话,一样也是看不到这个苹果的。而且,假如将镜头大幅度阔别苹果,那末也有可以看不到苹果了。为了决议镜头的位置和角度所举行的坐标变更就叫做视图变更。

3.投影变更:定义了三维空间的拍照地区。比方,是横向拍照,照样纵向拍照,最远拍摄多远间隔等。
平常的照相机,直接拍摄镜头前的一切图象,最远拍摄多远也基础上没什么熟悉。然则,顺序是没法模仿无限大的空间的,所以,从那里最先拍摄,拍摄到那里,必需有一个明白的局限。投影幻化,经由历程远近轨则,可以将近处的物体描绘的比较大,远处的物体描绘的比较小。

着色器

熟悉着色器之前得先相识一下什么是牢固衬着管线,简朴来讲,牢固衬着管线就是就是3d衬着所须要举行的一连串的盘算流程。也就是上面所说的模子、视图、投影的三种变化,牢固衬着管线都邑替我们完成。
但webgl中不存在牢固衬着管线,那末就意味着,坐标的变化得由我们本身来处理了。在webgl中这个处理坐标变化的机制就叫着色器(shader)。而这类可以有顺序员来掌握的坐标变更机制又叫做,可编辑衬着管线机制。着色器又分为两种
1.极点着色器(vertex shader):望文生义它能处置惩罚极点坐标、大小等(矩阵盘算后的效果),可以把数学坐标光栅化。
2.片元着色器(fragment shader):可以吸收光栅化数据并加以处置惩罚使其显现到屏幕上(光栅化数据包含了像素的位置、色彩等信息)

光栅化就是把极点数据转换为片元的历程。片元中的每个元素对应于帧缓冲区中的一个像素。
光栅化现实上是一种将多少图元变成二维图象的历程。该历程包含了两部份的事情。第一部份事情:决议窗口坐标中的哪些整型栅格地区被基础图元占用;第二部份事情:分派一个色彩值和一个深度值到各个地区。光栅化历程发生的是片元。把物体的数学形貌以及与物体相干的色彩信息转换为屏幕上用于对应位置的像素及用于添补像素的色彩,这个历程称为光栅化,这是一个将模仿信号转化为离散信号的历程。

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

    原文作者:lx_blog
    原文地址: https://segmentfault.com/a/1190000010470204
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞