WebGL

想必各位看官大大都了解过,进行3D图形渲染,主要依赖显卡(GPU)为我们提供强大的运算支持。GPU也像不同CPU架构具备不同的指令集一样,不同的显卡厂商也为不同的GPU型号提供了不同的底层指令逻辑,所支持的能力也不尽相同。为了简化方便图形应用开发和硬件适配的工作量,诞生了一些可以让不同应用方便调用的图形库,用以抹平底层硬件实现的差异,例如OpenGL、 Direct3D、Vulkan......

基本概念

WebGL(Web Graphics Library,Web图形库), 是一个JavaScript API,可在任何兼容的Web浏览器中渲染高性能的交互式3D和2D图形,而无需使用插件 WebGL通过引入一个与OpenGL ES 2.0非常一致的API来做到这一点,该API可以在HTML5 元素中使用。 这种一致性使API可以利用用户设备提供的硬件图形加速。通过这些接口,开发者可以直接跟GPU进行通信。


目前支持 WebGL 的浏览器有:Firefox 4+, Google Chrome 9+, Opera 12+, Safari5.1+, Internet Explorer 11+和Microsoft Edge build 10240+;然而, WebGL一些特性也需要用户的硬件设备支持。

WebGL 2 API引入了对大部分的OpenGL ES 3.0功能集的支持; 它是通过WebGL2RenderingContext界面提供的。


WebGL 程序分为 2 部分:

  • 使用 Javascript 编写的运行在CPU的程序
  • 使用 GLSL 编写的运行在GPU的着色器程序

着色器程序接收CPU传过来的数据,并进行一定处理,最终渲染成丰富多彩的应用样式。

3D坐标系

WebGL 3D坐标系

渲染流程

WebGL 能绘制的基本图元只有 3 种,分别是点、线段、三角形,对应了物理世界中的点线面。所有复杂的图形或者立方体,都是先用点组成基本结构,然后用三角形将这些点构成的平面填充起来,最后由多个平面组成几何体。

但现实情况是,如果想生成满足各种应用场景的复杂形状,几何结构会非常复杂,代码写起来也会非常复杂。这时候就会有看官会问了:那我写个

浅识WebGL和Three.js相关推荐

  1. 【瑞数5】浅谈某普期刊JS逆向的环境检测点

    [瑞数5]浅谈某普期刊JS逆向的环境检测点 前言 JS加载流程 第一个JS 第二个JS 第三个JS AST简单解混淆 环境检测 前奏 异步执行JS流程 高潮 运行结果 总结 鸣谢 前言 这几天把某期刊 ...

  2. Web3D编程入门总结——WebGL与Three.js基础介绍

    1 /*在这里对这段时间学习的3D编程知识做个总结,以备再次出发.计划分成"webgl与three.js基础介绍"."面向对象的基础3D场景框架编写".&quo ...

  3. 浅识Flutter 基本组件之TextField组件 输入框decoration属性

    浅识Flutter 基本组件之TextField组件 输入框decoration属性 decoration InputDecoration控制输人框提示信息样式的常用属性 InputDecoratio ...

  4. 浅识Flutter 基本组件Scaffold

    浅识Flutter 基本组件Scaffold 1. body 2. backgroundColor 3. appBar Scaffold是Flutter开发中实现Material Design布局结构 ...

  5. 浅识Flutter 基本组件MaterialAPP的theme属性 app主题

    浅识Flutter 基本组件MaterialAPP的theme属性 app主题 ThemeData属性及描述 设置主题 theme属性用于指定应用程序的主题(即共享颜色和字体样式). 例如,需要将应用 ...

  6. 浅识Flutter 基本组件Scaffold的 drawer属性 app创建头像

    浅识Flutter 基本组件Scaffold的 drawer属性 app创建头像 在项目开发中使用本地图片资源文件的步骤. 1.在项目下创建一个文件夹image 2.将本地图片放入images文件夹里 ...

  7. Hbuilder开发app实战-识岁06-face++的js实现【完结】

    前言 因为识岁app比較简单.所以这节就完结吧, 当然另一些能够优化完好的地方,可是个人兴趣不是非常大, 有想继续完好的,源代码在这里:https://github.com/uikoo9/shisui ...

  8. 浅谈webGl vr全景模式

    开讲之前解释一下这些词,以免没学习过webGl的同学还要再去找百度 webGL=> 是一种3D绘图协议,这种绘图技术标准允许把JavaScript和OpenGL ES 2.0结合在一起,通过增加 ...

  9. 关于WebGL,Three.js,OpenGL,Direct3D,CSS3D,GPU

    OpenGL OpenGL(英语:Open Graphics Library,译名:开放图形库或者"开放式图形库")是用于渲染2D.3D矢量图形的跨语言.跨平台的应用程序编程接口( ...

最新文章

  1. ATS无法缓存QQ音乐的音频文件问题
  2. DataGrid/DataList
  3. 京东方网络推广外包将为三星提供OLED 屏幕可造成韩国显示产业动荡
  4. MVC中HtmlHelper用法大全
  5. Docker镜像上传至私有仓库
  6. Android Touch系统简介(二):实例详解onInterceptTouchEvent与onT
  7. try catch finally 关闭流标准的写法
  8. micropython webrepl_4-5 MicroPython WebREPL 命令行交互环境设置-2 接入点模式
  9. 2017.7.28 愤怒的小鸟 思考记录
  10. Linux Matlab服务器进一步改造成Application Server(应用程序服务器)
  11. Mysql 基础语法
  12. 2018-2019-1 20165212 《信息安全系统设计基础》第八周学习总结(pwd)
  13. 阶段3 3.SpringMVC·_04.SpringMVC返回值类型及响应数据类型_7 响应json数据之发送ajax的请求...
  14. 几步看懂晶闸管的结构和工作原理
  15. Cadence OrCAD Capture TCL/TK脚本实例
  16. 服务器系统2008r2网卡驱动,防吞Win 7/xp/10/server2008 r2网络驱动(网卡驱动)
  17. 信息安全工程师真题1
  18. 关于“该计算机已安装更高版本的Google Chrome浏览器“问题解决方法
  19. Caffe学习笔记(一):CIFRA-10在Caffe上进行训练学习
  20. 计算机导论 宋斌,宋斌(计算机科学与技术学院)老师 - 南京理工大学 - 院校大全...

热门文章

  1. 「π」里藏着所有人的银行卡密码和生日?
  2. Pycharm 2018.2.1最新版破解到2099年图解教程
  3. UICC 之 USIM 详解全系列——USIM鉴权函数说明以及鉴权向量结构
  4. css去除图片或元素的背景颜色【透明】
  5. npm ERR! Could not install from “Files\nodejs\node_cache--global\_npx\11516“ as it does not contain
  6. #20 ifconfig、route、netstat、ip、ss命令详解与修改主机名与网卡配置文件
  7. Stochastic Depth ResNet
  8. 联调QuartersII + ModelSim(下载安装)
  9. android模拟微信聊天功能,android仿微信聊天界面 语音录制功能
  10. echarts图表x轴基准线(平行y轴)