这是我参与[第五届青训营]伴学笔记创作活动的第16天
什么是WebGL
WebGL(Web Graphics Library)是一个基于Web的3D图形技术,允许在Web浏览器中创建和呈现3D图形。它使用OpenGL ES 2.0 API来为Web提供图形功能,并且在Web浏览器中运行在HTML5 Canvas元素上。可以用来做很多有趣的事情,如游戏、3D地图、科学可视化等。它可以在不需要插件的情况下跨设备运行,并且支持多种编程语言,如JavaScript、C++等。WebGL的一个主要优势是可以在Web浏览器中运行,因此可以轻松地访问全球网络中的信息和资源,并且具有广泛的支持和社区。
webGL为什么不像其他前端技术那么简单
- 3D数学:WebGL是一种3D图形技术,因此在使用WebGL之前,需要对3D数学,如三维空间、矩阵、向量等有扎实的理解。
- WebGL API:WebGL的编程接口是WebGL API,它是一组低级的图形绘制函数,需要手动实现一些复杂的图形渲染操作,例如纹理贴图、光照计算等。
- 性能问题:WebGL使用GPU来渲染图形,因此性能是一个关键因素。如果代码中存在性能问题,将导致帧率下降、渲染缓慢等问题。
- 浏览器兼容性:WebGL是一个开放标准,不同的浏览器实现可能有所差异。如果使用WebGL,需要关注浏览器兼容性,以确保在所有浏览器中都能正常运行。
CPU vs GPU
CPU (Central Processing Unit) 和 GPU (Graphics Processing Unit) 都是计算机中重要的组成部分,但它们的主要用途和工作方式有很大的差异。
- 用途:CPU是整个计算机系统的中心,主要负责执行系统的逻辑操作,如运算、判断、控制等;而GPU是专门处理图形图像的,它能够高效地进行高速并行计算,有助于提高计算机图形处理能力。
- 计算能力:CPU具有高度灵活性,可以执行各种不同的任务;而GPU专注于图形图像处理,因此具有更强的计算能力。
- 并行处理:GPU能够并行处理多个任务,使用多个核心同时处理数据;而CPU只能按顺序处理一个任务,它需要等待任务完成才能开始下一个任务。
CPU与GPU在计算机中扮演不同的角色,在完成不同的任务方面都有各自的优势。
WebGL & OpenGL
WebGL (Web Graphics Library) 和 OpenGL (Open Graphics Library) 是两种不同的图形技术。
- 用途:OpenGL是一个专业的图形编程接口,主要用于开发桌面应用程序和游戏;而WebGL是一种浏览器的图形渲染技术,专门为浏览器开发的,用于在浏览器上渲染3D图形。
- 兼容性:OpenGL只能在桌面系统上使用,并且需要安装对应的驱动;而WebGL是浏览器的一个标准,可以在任何兼容浏览器上使用。
- 编程语言:OpenGL使用C语言进行编程;而WebGL使用JavaScript进行编程,因此更容易上手。
- 功能:OpenGL拥有更为丰富的图形处理功能,支持更多的图形特效;而WebGL功能比较有限,但它的加载速度和渲染速度都很快。
为什么WebGL那么难呢
- 高效的着色器代码:WebGL需要编写高效的着色器代码,而着色器代码的高效实现需要对着色器语言和图形学有深入的了解。
- 复杂的数学:WebGL需要使用复杂的数学知识,例如矩阵计算和向量计算,以实现3D图形的渲染。
- 3D图形学:WebGL需要了解3D图形学,例如照相机、灯光和材质,以实现真实的3D效果。
- 兼容性问题:由于WebGL是一种浏览器技术,因此可能需要考虑兼容性问题,例如不同浏览器的兼容性和性能差异。
3D Matrix
3D Matrix 指的是三维矩阵,是一种数学模型,用于表示三维空间中的平移、旋转、缩放等变换操作。3D 矩阵是一个由 4 x 4 的矩阵组成的数学模型,每一个元素都是一个数字,它们可以通过矩阵乘法进行复合变换。在 3D 图形学中,3D 矩阵常常用来变换几何图形,例如移动、旋转、缩放等,从而将几何图形从一个坐标系转换到另一个坐标系。
3D标准模型的四个齐次矩阵
- 投影矩阵
- 模型矩阵
- 试图矩阵
- 法向量矩阵