需要源码可以Q群:828202939 或者点击这里 <https://jq.qq.com/?_wv=1027&k=5NiS63x> 
希望可以和大家一起学习、一起进步!!纯手打!!

书籍是PDF电子档,也在Q群里,所有的课程源代码在我上传的资源
<https://download.csdn.net/user/weixin_39452320/uploads>里面,本来想设置开源,好像不行!

如有错别字或有理解不到位的地方,可以留言或者加微信15250969798,在下会及时修改!!!!!

本文开始介绍着色器的一些基础 知识!

webgl中一般涉及到两种着色器:

顶点着色器:顶点着色器是用来描述顶点特性的(如位置、颜色等)的程序。顶点是指二维或者三维空间里面的一个点,比如二维或者三维图形的端点或者交点

片元着色器:进行逐片元处理过程(如光照)的程序。片元是一个webgl的术语,暂且可以理解为像素(图像的单元)

下图是从执行JS程序到浏览器显示结果的过程(有时间给你们画个流程图):

--浏览器运行

--执行加载的JS

--JS运行相关程序(从main主方法开始,一般主方法里面会有调用着色器初始化的函数)

--执行着色器初始化方法

--顶点着色器逐顶点操作

--片元着色器逐片元操作

--清空颜色缓存

--绘制

--显示到浏览器屏幕


!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!干货来了!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

                                                                     顶点着色器初步讲解:

上面说到,顶点着色器是控制顶点的位置和大小,那么问题来了,顶点着色器怎么通过来控制的呢?

顶点着色器的内置变量:

(float  ) gl_PositSize  表示点的尺寸(像素数,这个不是必须的,默认为1.0)

(vec4)  gl_Position     表示顶点的位置(这个变量必须被赋值,否则着色器无法工作)

其中vec4和float是GLSL中的一种数据类型,和Java的8种基本类型差不多

float  表示浮点数的数据类型

vec4 表示由4个浮点数组成的矢量(实际是由3个X,Y,Z的坐标值加一个W分量组成的矢量,有关矢量后面会有讲到,别急)

特别注意:因为webgl是基于OpenGL的,OpenGL是类C或者是C的语言,属于强制型语言;

上述的变量正确赋值格式如下:

(float )gl_PositSize=10.0   //浮点型

如写成

(float  )gl_PositSize=10   会报错的,这个新入坑的朋友们请注意了  

另外一个内置变量gl_Position 表示点的位置,他的类型是vec4类型,通过内置函数

vec4 vec4 (v0,v1,v2,v3)方法来创建vec4的类型创建

其中v0,v1,v2分别代表x,y,z坐标轴的坐标,V3第4分量W之所以存在,是因为这样做可以提高处理三维数据的效率(后面会讲到)

X,Y,Z,W 4个分量组成的矢量叫   齐次坐标   ,至于啥是齐次坐标,各位童鞋可以百度一下

齐次坐标存在的意义在于,它能够让矩阵乘法来描述顶点变化成为可能

                                                          片元着色器初步讲解:

前面提到片元着色器控制点的颜,或者理解为片元就是显示在屏幕上面的一个像素(严格来讲,片元包括这个像素的位置、颜色和其他信息)

片元着色器把点的颜色赋值gl_FragColor,该变量是片元着色器中的唯一内置变量,它控制着像素在屏幕上呈现的最终颜色

(vec4 ) gl_FragColor     指定片源颜色(RGBA格式  0.0- 1.0)

大概就是这样了

接下来就是绘制方面的东西了

通过 gl.drawArrays()这个函数来绘制各种各样的图像,具体的可以搜狗一下。本文只对着色器做初步讲解!!!!

 

 

 

 

 

 

 

 

 

 

友情链接
KaDraw流程图
API参考文档
OK工具箱
云服务器优惠
阿里云优惠券
腾讯云优惠券
华为云优惠券
站点信息
问题反馈
邮箱:[email protected]
QQ群:637538335
关注微信