[WebGL入门]二,开始WebGL之前,先了解一下canvas

注:文章译自http://wgld.org/,原作者杉本雅広(doxas),文章中如果有我的额外说明,我会加上[lufy:],另外,鄙人webgl研究还不够深入,一些专业词语,如果翻译有误,欢迎大家指正。

HTML5和canvas标签

现在(2012年2月)HTML5依然处于草案阶段。

HTML5支持网页端的多媒体功能和画布功能,追加了很多全新的更合理的Tag标签,各个浏览器也都在逐渐的完善这些新的特性。

Canvas对象表示一个 HTML画布元素,如它的名字一样,它定义了一个API支持脚本化客户端来绘制图形或是图片,可以通过javascript来操作这些API。当然WebGL也是利用canvas来实现的,不过在此之前,先来简单的说明一下canvas。

lufy:2012年12月17日W3C正式宣布凝结了大量网络工作者心血的HTML5规范已经正式定稿,有消息称,在2014年底,HTML5将成为一种完整的成品标准。

canvas标签的基础知识

canvas和img等标签一样,是一个可以自由制定大小的矩形区域。

通过javascript可以对矩形区域进行操作,可以自由的绘制图形,文字等。而且,可以添加影子,进行涂色,另外还可以对绘制的图形进行旋转等操作。而且,Web上常用的gif,jpg,png等格式的图片,也可以直接进行绘制。

但是,能够管理操作动画等处理的对象和方法是没有的。也就是说,为了制作动态的应用,通常会使用javascript进行循环处理。

在渲染速度上,由于javascript近几年的执行速度在不断的飞速上升,所以,如果不是特别复杂的应用的话,达到60FPS还是不成问题的。下面是我之前用canvas做的一个小游戏,现在把它贴出来。*已经上传到了jsdo.it。

没有使用WebGL,只是利用了canvas一般的API,已经能够达到这种程度了。虽然说实际运行的结果依赖于运行的环境,但是还是相当不错的吧。

WebGL和canvas

可以看到,使用canvas已经可以比较自由的绘制各种图形了,那么,为什么还要用WebGL来做处理呢?

实际上,刚才贴出来的jsdo.it上的那个小游戏,是利用了canvas的2d的context功能。

context是一个封装了绘图处理的各种API的对象,这个对象中包含了所有的绘图函数和属性,你可以把它想象成一个司令塔,一切的设定和处理命令都是由它发出的。

2d的context可以进行图形,文字以及图片数据的描画,但是也仅限于此,像它的名字一样,只能用于2d空间的绘图。

和这个相对的,WebGL是三维,可以描画3D图形,区别于之前的2dcontext,它叫做webglcontext。

webglcontext对象和2dcontext对象 一样,提供了各种各样的属性和方法,通过webglcontext,可以实现利用WebGL来描画图形。

总结

关于context,在我写这篇文章的时候,只提供了2d和webgl两种定义。但是webglcontext暂时叫做experimental-webgl,以后,还有可能会出现新的类型,这个现在就不考虑了。

本网站的所有内容,都是使用WebGL来说明的,而2dcontext和今后出现的新的context,并没有打算去研究。(当然,也可能会出现一些2dcontext的内容......)

下次,开始介绍3d绘图的基础知识。

转载请注明:转自lufy_legend的博客http://blog.csdn.net/lufy_legend

[WebGL入门]二,开始WebGL之前,先了解一下canvas

时间: 2024-08-07 08:40:23

[WebGL入门]二,开始WebGL之前,先了解一下canvas的相关文章

[WebGL入门]二十,绘制立体模型(圆环体)

注:文章译自http://wgld.org/,原作者杉本雅広(doxas),文章中如果有我的额外说明,我会加上[lufy:],另外,鄙人webgl研究还不够深入,一些专业词语,如果翻译有误,欢迎大家指正. 本次的demo的运行结果 立体的模型 这次稍微喘口气,开始绘制立体模型.这里说的[喘口气]是指本次的文章中没有出现任何新的技术知识点.只是利用到现在为止所介绍过的内容,来绘制一个立体的圆环体.到现在为止,只绘制了三角形和四边形,当然,在三维空间中绘制简单的多边形也没什么不对,但是缺点儿说服力.

WebGL入门教程(四)-webgl颜色

前面文章: WebGL入门教程(一)-初识webgl WebGL入门教程(二)-webgl绘制三角形 WebGL入门教程(三)-webgl动画 颜色效果图: 操作步骤: 1.创建HTML5 canvas 2.获取画布 canvas 的 ID 3.获取WebGL 4.编译着色器 5.使用缓冲区对象向顶点传入多个顶点数据 6.绘制图像 以上1~3参考:http://www.cnblogs.com/bsman/p/6128447.html 4.编译着色器 改顶点着色器,片着色器 //顶点着色器程序 v

[WebGL入门]二十四,补色着色

注:文章译自http://wgld.org/,原作者杉本雅広(doxas),文章中如果有我的额外说明,我会加上[lufy:],另外,鄙人webgl研究还不够深入,一些专业词语,如果翻译有误,欢迎大家指正. 本次的demo的运行结果 着色方法 上次介绍了反射光,反射光是实现光泽的不可缺少的概念,到此为止,基本的光照效果都已经封装完毕了. 光照的效果主要就是扩散光,环境光和反射光三种方法,灵活运用这三种光照,应该就能实现非常逼真的照明效果了. 前几篇一直在说光照,这次稍微换个视点,看一下着色,着色是

[WebGL入门]二十三,反射光的光照效果

注:文章译自http://wgld.org/,原作者杉本雅広(doxas),文章中如果有我的额外说明,我会加上[lufy:],另外,鄙人webgl研究还不够深入,一些专业词语,如果翻译有误,欢迎大家指正. 本次的demo的运行结果 各种各样的光照 上次,以及上上次,介绍了通过顶点着色器来实现光照效果. 最开始介绍了从平行光源发出的光,上次介绍了平行光源的缺点,以及对应这个缺点的方法,就是环境光源. 这次是光照处理的第三篇,进一步介绍反射光照. 反射光和它的名字一样,就是模拟光的反射.通过反射光,

[WebGL入门]二十二,从环境光源发出的光

注:文章译自http://wgld.org/,原作者杉本雅広(doxas),文章中如果有我的额外说明,我会加上[lufy:],另外,鄙人webgl研究还不够深入,一些专业词语,如果翻译有误,欢迎大家指正. 本次的demo的运行结果 平行光源的弱点 上次挑战了一下从平行光源发出的光.平行光源的光的方向是固定的.而且,为了模拟这些,需要用到模型变换矩阵的逆矩阵,以及需要向模型数据中加入法线情报等等.平行光源的计算负担比较小,在一定程度上模拟了光照效果,在3D模拟世界中经常被用到.但是,平行光源也有弱

[WebGL入门]二十一,从平行光源发出的光

注:文章译自http://wgld.org/,原作者杉本雅広(doxas),文章中如果有我的额外说明,我会加上[lufy:],另外,鄙人webgl研究还不够深入,一些专业词语,如果翻译有误,欢迎大家指正. 本次的demo的运行结果 照亮世界 上次绘制了一个像甜甜圈一样的圆环体模型,虽然没有涉及特别的新知识,但是也算成功的绘制出了3D模型了吧. 那么,这次来看一下光. 光在3D渲染中有很多种类和使用方法,想把光研究透彻,也是很不容易的. 现实世界中我们能看到物体,是因为物体反射的光进入我们的眼睛.

[WebGL入门]二十七,多纹理

注:文章译自http://wgld.org/,原作者杉本雅広(doxas),文章中如果有我的额外说明,我会加上[lufy:],另外,鄙人webgl研究还不够深入,一些专业词语,如果翻译有误,欢迎大家指正. 本次的demo的运行结果 使用多个纹理 上次介绍了WebGL中的纹理的使用方法.简单的实现了将纹理贴到四边形中,果然是使用图片数据的话比较灵活吧. 那么,这次来说说使用多个纹理来合成图像的方法,学习了这个方法之后可以再一个多边形中使用多个纹理. 为了同时使用多个纹理,先来想想一下需要做些什么呢

[WebGL入门]二十五,点光源的光照

注:文章译自http://wgld.org/,原作者杉本雅広(doxas),文章中如果有我的额外说明,我会加上[lufy:],另外,鄙人webgl研究还不够深入,一些专业词语,如果翻译有误,欢迎大家指正. 本次的demo的运行结果 点光源 上次介绍了高氏着色和补色着色.使用补色着色的手法,可以渲染更加自然的阴影,3D效果更加真实.但是会有计算量比较大的缺点.这个只能case by case,根据不同的情况来处理了,是个挺烦人的地方.那么,这次,还是讲光源.我貌似听到了"不会吧......&quo

[WebGL入门]二十六,纹理绘图

注:文章译自http://wgld.org/,原作者杉本雅広(doxas),文章中如果有我的额外说明,我会加上[lufy:],另外,鄙人webgl研究还不够深入,一些专业词语,如果翻译有误,欢迎大家指正. 本次的demo的运行结果 WebGL与纹理 上次介绍了用点光源的光来进行补色着色的方法.在片段着色器中对光进行计算,阴影,亮点等效果都非常的漂亮,3D场景的真实度大幅度提升.并且能和顶点颜色一起使用,理解了前面讲解的内容之后,就应该能进行比较高质量的3D渲染了.这一次,来看高级一点的纹理的使用