webgl第三课-浅谈着色器

需要源码可以Q群:828202939 或者点击这里  希望可以和大家一起学习、一起进步!!纯手打!!

书籍是PDF电子档,也在Q群里,所有的课程源代码在我上传的资源里面,本来想设置开源,好像不行!

如有错别字或有理解不到位的地方,可以留言或者加微信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()这个函数来绘制各种各样的图像,具体的可以搜狗一下。本文只对着色器做初步讲解!!!!

 

 

 

 

 

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

webgl_谷子

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值