浅识WebGL和Three.js
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 能绘制的基本图元只有 3 种,分别是点、线段、三角形,对应了物理世界中的点线面。所有复杂的图形或者立方体,都是先用点组成基本结构,然后用三角形将这些点构成的平面填充起来,最后由多个平面组成几何体。
但现实情况是,如果想生成满足各种应用场景的复杂形状,几何结构会非常复杂,代码写起来也会非常复杂。这时候就会有看官会问了:那我写个
浅识WebGL和Three.js相关推荐
- 【瑞数5】浅谈某普期刊JS逆向的环境检测点
[瑞数5]浅谈某普期刊JS逆向的环境检测点 前言 JS加载流程 第一个JS 第二个JS 第三个JS AST简单解混淆 环境检测 前奏 异步执行JS流程 高潮 运行结果 总结 鸣谢 前言 这几天把某期刊 ...
- Web3D编程入门总结——WebGL与Three.js基础介绍
1 /*在这里对这段时间学习的3D编程知识做个总结,以备再次出发.计划分成"webgl与three.js基础介绍"."面向对象的基础3D场景框架编写".&quo ...
- 浅识Flutter 基本组件之TextField组件 输入框decoration属性
浅识Flutter 基本组件之TextField组件 输入框decoration属性 decoration InputDecoration控制输人框提示信息样式的常用属性 InputDecoratio ...
- 浅识Flutter 基本组件Scaffold
浅识Flutter 基本组件Scaffold 1. body 2. backgroundColor 3. appBar Scaffold是Flutter开发中实现Material Design布局结构 ...
- 浅识Flutter 基本组件MaterialAPP的theme属性 app主题
浅识Flutter 基本组件MaterialAPP的theme属性 app主题 ThemeData属性及描述 设置主题 theme属性用于指定应用程序的主题(即共享颜色和字体样式). 例如,需要将应用 ...
- 浅识Flutter 基本组件Scaffold的 drawer属性 app创建头像
浅识Flutter 基本组件Scaffold的 drawer属性 app创建头像 在项目开发中使用本地图片资源文件的步骤. 1.在项目下创建一个文件夹image 2.将本地图片放入images文件夹里 ...
- Hbuilder开发app实战-识岁06-face++的js实现【完结】
前言 因为识岁app比較简单.所以这节就完结吧, 当然另一些能够优化完好的地方,可是个人兴趣不是非常大, 有想继续完好的,源代码在这里:https://github.com/uikoo9/shisui ...
- 浅谈webGl vr全景模式
开讲之前解释一下这些词,以免没学习过webGl的同学还要再去找百度 webGL=> 是一种3D绘图协议,这种绘图技术标准允许把JavaScript和OpenGL ES 2.0结合在一起,通过增加 ...
- 关于WebGL,Three.js,OpenGL,Direct3D,CSS3D,GPU
OpenGL OpenGL(英语:Open Graphics Library,译名:开放图形库或者"开放式图形库")是用于渲染2D.3D矢量图形的跨语言.跨平台的应用程序编程接口( ...
最新文章
- ATS无法缓存QQ音乐的音频文件问题
- DataGrid/DataList
- 京东方网络推广外包将为三星提供OLED 屏幕可造成韩国显示产业动荡
- MVC中HtmlHelper用法大全
- Docker镜像上传至私有仓库
- Android Touch系统简介(二):实例详解onInterceptTouchEvent与onT
- try catch finally 关闭流标准的写法
- micropython webrepl_4-5 MicroPython WebREPL 命令行交互环境设置-2 接入点模式
- 2017.7.28 愤怒的小鸟 思考记录
- Linux Matlab服务器进一步改造成Application Server(应用程序服务器)
- Mysql 基础语法
- 2018-2019-1 20165212 《信息安全系统设计基础》第八周学习总结(pwd)
- 阶段3 3.SpringMVC·_04.SpringMVC返回值类型及响应数据类型_7 响应json数据之发送ajax的请求...
- 几步看懂晶闸管的结构和工作原理
- Cadence OrCAD Capture TCL/TK脚本实例
- 服务器系统2008r2网卡驱动,防吞Win 7/xp/10/server2008 r2网络驱动(网卡驱动)
- 信息安全工程师真题1
- 关于“该计算机已安装更高版本的Google Chrome浏览器“问题解决方法
- Caffe学习笔记(一):CIFRA-10在Caffe上进行训练学习
- 计算机导论 宋斌,宋斌(计算机科学与技术学院)老师 - 南京理工大学 - 院校大全...
热门文章
- 「π」里藏着所有人的银行卡密码和生日?
- Pycharm 2018.2.1最新版破解到2099年图解教程
- UICC 之 USIM 详解全系列——USIM鉴权函数说明以及鉴权向量结构
- css去除图片或元素的背景颜色【透明】
- npm ERR! Could not install from “Files\nodejs\node_cache--global\_npx\11516“ as it does not contain
- #20 ifconfig、route、netstat、ip、ss命令详解与修改主机名与网卡配置文件
- Stochastic Depth ResNet
- 联调QuartersII + ModelSim(下载安装)
- android模拟微信聊天功能,android仿微信聊天界面 语音录制功能
- echarts图表x轴基准线(平行y轴)