WEBGL的初步认识和实践

Shidong Zhu

提到WEBGL会知道他是实现3D渲染效果的,能够展现给我们许多很炫的视觉体验,但是这些3D的效果WEBGL是怎么一步步去实现的呢,下面会有答案:

什么是WEBGL:

WebGL是一种3D绘图标准,这种绘图技术标准允许把JavaScript和OpenGL ES 2.0结合在一起,通过增加OpenGL ES 2.0的一个JavaScript绑定,WebGL可以为HTML5 Canvas提供硬件3D加速渲染。WebGL 本质上是基于光栅化的 API ,而不是基于 3D 的 API。

优点:

第一,它通过HTML脚本本身实现Web交互式三维动画的制作,无需任何浏览器插件支持;

第二,它利用底层的图形硬件加速功能进行的图形渲染,是通过统一的、标准的、跨平台的OpenGL接口实现的。

WEBGL实现3D效果的原理:

WebGL 只关注两个方面,即投影矩阵的坐标和投影矩阵的颜色。使用 WebGL 程序的任务就是实现具有投影矩阵坐标和颜色的 WebGL 对象即可。可以使用“着色器”来完成上述任务。顶点着色器可以提供投影矩阵的坐标,片段着色器可以提供投影矩阵的颜色。三角形是用于绘制模型的最基本的元素,WebGL中需要通过使用JavaScript来生成绘制信息,这些绘制信息包括指定在什么位置绘制三角形、如何绘制三角形、这些三角形的外观长的什么样子(颜色、形状、纹理等等)。然后将这些信息传递给到GPU端,GPU进行处理,最后再返回绘制结果。

WEBGL代码实现:

webgl 1.png

这里主要做了初始化对象工作,然后执行绘制图形。具体每个函数的执行内容如下:

(1)initGL(canvas);初始化WEBGL

webgl 2.png

(2)initShaders(); getShader()

initShaders使用了getShader来从网页文件的脚本中载入片元着色器和顶点着色器,所以他们可以被编译并传送给WebGL,然后提供给稍后进行的3D场景渲染时使用

getShader函数来获取两样东西,一个是“片元着色器”(Fragment Shader),另一个是“顶点着色器”(Vertex Shader);

(3)initBuffers():

webgl 3.png

主要实现把Javascript列表转换成可以传递给WebGL的形式以便填充到当前数组对象中。

triangleVertexPositionBuffer.itemSize = 3; //每个顶点由3个数字组成

triangleVertexPositionBuffer.numItems = 3; //3个不同的顶点位置

(4)drawScene();

webgl 4.png

检测浏览器是否支持WebGL网址:http://webglreport.sourceforge.net/

关于作者

Dan Hu

Shidong Zhu

Subscribe to Our Newsletter

We will deliver China-related web design, web development, and digital marketing information or tips every month.

Stephen Tseng
Stephen Tseng

不要让不确定性束缚你的SEO营销策略

无论是政策变化、经济波动,还是突发的全球事件,企业在制定营销策略时常常需要面对各种变数。不确定性营销决错失大量的市场机会。可能导致营销决策的延迟和执行的犹豫,但如果因此停滞不前,那么企业将错失大量的市场机会。

继续阅读 →

Stephen Tseng
Stephen Tseng

B2B 业务增长的关键:解析行业平均转化率及行业基准

在竞争激烈的 B2B 市场中, lead conversion rate(潜在客户转化率) 是衡量业务成功与否的关键指标之一。它不仅反映了营销策略的有效性,还直接影响到公司的收入增长。本文将深入探讨 B2B 平均转化率的相关数据和行业基准,并为您带来提升转化率的实用建议。

继续阅读 →

Stephen Tseng
Stephen Tseng

内容营销对 SEO 到底有什么用?B2B 出海营销的最佳策略指南

在数字营销领域,“内容为王”早已不是口号,而是决定企业能否被全球潜在客户发现的关键。这一点对正在拓展海外市场的 B2B 企业尤为重要:内容营销与 SEO 紧密结合,才能真正将流量转化为有效询盘和长期客户。

继续阅读 →