惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

酷 壳 – CoolShell
酷 壳 – CoolShell
GbyAI
GbyAI
SecWiki News
SecWiki News
Project Zero
Project Zero
C
Cisco Blogs
Simon Willison's Weblog
Simon Willison's Weblog
P
Privacy International News Feed
D
Darknet – Hacking Tools, Hacker News & Cyber Security
Scott Helme
Scott Helme
A
Arctic Wolf
Security Latest
Security Latest
Threat Intelligence Blog | Flashpoint
Threat Intelligence Blog | Flashpoint
P
Privacy & Cybersecurity Law Blog
Apple Machine Learning Research
Apple Machine Learning Research
T
Tailwind CSS Blog
The Hacker News
The Hacker News
T
Tenable Blog
雷峰网
雷峰网
有赞技术团队
有赞技术团队
V
V2EX
C
CXSECURITY Database RSS Feed - CXSecurity.com
T
Threat Research - Cisco Blogs
T
Threatpost
AWS News Blog
AWS News Blog
L
LINUX DO - 热门话题
Application and Cybersecurity Blog
Application and Cybersecurity Blog
K
KPMG report finds enterprise disconnect between AI and its ROI | CIO
S
SegmentFault 最新的问题
月光博客
月光博客
Spread Privacy
Spread Privacy
S
Secure Thoughts
宝玉的分享
宝玉的分享
博客园 - 三生石上(FineUI控件)
Forbes - Security
Forbes - Security
T
The Exploit Database - CXSecurity.com
G
GRAHAM CLULEY
The Last Watchdog
The Last Watchdog
Y
Y Combinator Blog
I
Intezer
博客园 - 【当耐特】
B
Blog RSS Feed
Attack and Defense Labs
Attack and Defense Labs
I
InfoQ
博客园 - 叶小钗
Cyberwarzone
Cyberwarzone
V2EX - 技术
V2EX - 技术
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
Hugging Face - Blog
Hugging Face - Blog
H
Help Net Security
C
CERT Recently Published Vulnerability Notes

Sanonz

使用 Invox Setup 实现 Electron 安装包界面美化 用 VS Code 编辑器开发 STM32 嵌入式 使用 FontCreator 编辑字体库 | Sanonz 使用 React Context API 和 Hooks 实现全局状态管理和性能优化 使用 Phonegap + Cordova 搭建混合开发平台 利用 Github Actions 自动部署 Hexo 博客 在 WEB 端实现亮/暗主题跟随系统功能 | Sanonz Metalness vs Specular Workflows for PBR Shading 以太坊概念与使用 wep3/infura 实现以太币及合约币交易流程 | Sanonz 实现树莓派(Raspberry Pi)联网发送本机IP到绑定的微信 | Sanonz 使用 Three.js 的 RenderTarget 实现离屏渲染 使用 redux-store-provider 简化 react 开发流程 浏览器 HTTP 并发请求规则探讨 | Sanonz JavaScript Event Loop、Micro Task、Macro Task WebAssembly 从入门到吃鸡 | Sanonz Let's Encrypt 使用教程,免费的 SSL 证书,让你的网站拥抱 HTTPS Let's Encrypt 使用教程,免费的 SSL 证书,让你的网站拥抱 HTTPS Ubuntu 搭建 php、mysql、nginx 开发环境 | Sanonz WebGL 三维教程 - 绘制矩形和点(二) | Sanonz Hexo 搭建静态博客与 hexo-theme-concise 主题使用教程 | Sanonz
WebGL 三维教程 - WebGL 介绍(一)
Sanonz · 2017-10-24 · via Sanonz

WebGL 概述

WebGL 是一项在网页上绘制和渲染复杂三维图形(3D 图形),并允许用户与之进行交互的技术,在传统上只有高配置的计算机或专用的游戏机才能渲染三维图形,而现在随着个人计算机与浏览器的性能越来越强,使用便捷通用的 Web 技术创建和渲染三维图形已经成为可能。HTML5 作为目前最新的 HTML 标准,扩展了传统 HTML 的特征,如二维图形、网络传输、本地数据储存等,HTML5 时代的到来使浏览器正在迅速地从简单的展示工具转变为复杂的应用平台,人们希望网页不仅仅由二维图组成,所以 WebGL就顺着时代的召唤到来了。

WebGL 的起源

在个人计算机上使用最广泛的两种三维图形渲染技术使 Direct3D 和 OpenGL。Direct3D 是微软DirectX 技术的一部分,是一套由微软控制的编程接口(API),主要用在 Windows 平台;而 OpenGL 由于其开放和免费的特征,在多种平台上都有广泛地使用,后来 Windows 对 OpenGL 也提供了良好的支撑,开发者也可以使用它来代替 Direct3D。

OpenGL 最初是由 SGI(Silicon Graphics Inc)开发,并在 1992 年发布为开源标准。多年以来,OpenGL 发展了数个版本,并对三维图形开发、软件产品开发、甚至电影制作产生了深远的影响。虽然 WebGL 根植于 OpenGL,但它实际上是从 OpenGL 的一个特殊版本 OpenGL ES 派生出来的,OpenGL ES 主要专用于嵌入式计算机、智能手机、家用用洗等设备。OpenGL ES 于 2003~2004 年被首次提出,并在 2007 年(ES 2.0)进行了两次升级,WebGL 是基于 OpenGL ES 2.0 的。这几年采用 OpenGL ES 技术的电子设备的数量大幅度增长,尤其是移动端设备。OpenGL ES 成功被这些设备采用的部分原因是,它在添加新特性的同时从 OpenGL 中移除了许多陈旧的旧特性,这使它在保持轻量级的同时,仍具有足够的能力来渲染出精美的三维图形。

WebGL 的优势

这些年随着 HTML 的发展,网页由最初简单的静态页面变得越来越复杂,从引入 JavaScript 等脚本语言,HTML 开始提供一些动态的内容,并具有一定的交互性。现在出现了更强大的 HTML5,它可以使用 canvas 或 svg 标签在网页上绘制二维图形,以呈现更丰富的内容如:在线的在线作图 ProcessOn、原型设计 墨刀 以及提供一整套的在线办公软件的 Zohu 等工具。

WebGL 则走的更远,它允许 JavaScript 在网页上显示和操作三维图形。有了 WebGL 技术,开发三维的客户端界面、运行三维的网页游戏,对互联网上的海量数据进行三维可视化都成了可能,无需考虑平台问题、无需繁琐的安装过程、无需经堂备份自己的文件到云端来实现共享。虽然 WebGL 强大到令人惊叹,但使用这项技术进行开发却异常简单,让我们一步步探索吧。

WebGL 程序结构

在写 WebGL 页面时需要三种语言:HTML5/(CSS)、JavaScript和 GLSL ES(着色器语言),因为通常 GLSL ES 是以字符串的形式在 JavaScript 中编写的,实际上在写 WebGL 页面时结构还是和平常一样。所以,虽然 WebGL 页面更加复杂了一些,但是仍然保持着和传统页面一样的风格。