![WebGL编程指南](https://wfqqreader-1252317822.image.myqcloud.com/cover/252/46841252/b_46841252.jpg)
使用<canvas>标签
让我们来看一下HTML是如何使用<canvas>标签,以及DrawRectangle函数是如何工作的。例2.1显示了DrawingRectangle.html。请注意,本书中所有的HTML文件都是采用HTML5编写的。
例2.1 DrawingRectangle.html
![](https://epubservercos.yuewen.com/762C61/26126292801765606/epubprivate/OEBPS/Images/txt002_4.jpg?sign=1739233899-98sYcqAKitgx1XXmaoqHlzbPJDEeVgAw-0-8fb05d23d24056a0806d8083fe6aaa76)
我们定义了<canvas>标签(第9行),通过width属性和height属性规定它是一片400×400像素的区域,并用id属性为其指定了唯一的标识符(这将在之后用到):
![](https://epubservercos.yuewen.com/762C61/26126292801765606/epubprivate/OEBPS/Images/txt002_5.jpg?sign=1739233899-LB5lBJ2ktKD8Nkwgxvp2K8Jky0cjWy8m-0-c409d08d717eebf01dc541b995050295)
默认情况下,<canvas>是透明的,如果不用JavaScript在上面画些什么(我们马上就要这样做了),你是看不到<canvas>的。在HTML中为WebGL程序准备一个<canvas>就是这么简单,需要注意的是,这行代码只在支持<canvas>的浏览器中起作用,不支持<canvas>的老式浏览器会直接忽略这一行,当然也不会显示<canvas>。我们可以像下面这样在标签中加入一条错误信息,以提醒还在用着那些老式浏览器的用户。
![](https://epubservercos.yuewen.com/762C61/26126292801765606/epubprivate/OEBPS/Images/txt002_6.jpg?sign=1739233899-2RqF6GQiokc6UYCUQgTxGT19LvWKzBol-0-2c1d0754b3952ef87e0670fbb3b61a72)
为了在<canvas>中绘图,还需要编写一些相关的JavaScript代码。可以将其直接写在HTML文件中,也可以写成单独的JavaScript文件。为使代码更加易读,在我们的例子中采用第二种方式。但是不论采取哪种方式,你都需要告诉浏览器JavaScript代码从何处开始执行。我们为<body>元素指定onload属性,告诉浏览器<body>元素加载完成后(也就是页面加载完成后)执行main()函数,并作为JavaScript程序的入口(第8行)。
![](https://epubservercos.yuewen.com/762C61/26126292801765606/epubprivate/OEBPS/Images/txt002_7.jpg?sign=1739233899-Ic8Y08QZfzu2Uwefq4nEFKBedwxZ1qEz-0-5a72925efd1a35e093e636cd2d30e270)
然后让浏览器去加载JavaScript文件DrawRectangle.js,main()函数就定义在其中。
![](https://epubservercos.yuewen.com/762C61/26126292801765606/epubprivate/OEBPS/Images/txt002_8.jpg?sign=1739233899-TzXZQR1vLAHgSjARQOcLgLm2iCfuvWAv-0-c6bf9810e60100a4ca6520cb57b4c7e9)
为了避免混淆,本书中的所有示例程序的HTML文件,和加载到其中的JavaScript文件都使用相同的名称(如图2.3所示)。
![](https://epubservercos.yuewen.com/762C61/26126292801765606/epubprivate/OEBPS/Images/txt002_9.jpg?sign=1739233899-RPFAAa9MTORTVeVGC3B7ijyE1RTJSFoS-0-b205cd1cf9605ee00d60264dd99b4746)
图2.3 DrawRectangle.html和DrawRectangle.js