【《WebGL编程指南》读书笔记-WebGL概述】

《WebGL编程指南》读书笔记
目录链接:https://blog.csdn.net/floating_heart/article/details/124001572

第一章 WebGL概述

WebGL,是一项用来在网页上绘制和渲染复杂三维图形3D图形),并允许用户与之进行交互的技术。在其官网中的介绍如下:

WebGL™ is a cross-platform, royalty-free open web standard for a low-level 3D graphics API based on OpenGL ES, exposed to ECMAScript via the HTML5 Canvas element. Developers familiar with OpenGL ES 2.0 will recognize WebGL as a Shader-based API using GLSL, with constructs that are semantically similar to those of the underlying OpenGL ES API. It stays very close to the OpenGL ES specification, with some concessions made for what developers expect out of memory-managed languages such as JavaScript. WebGL 1.0 exposes the OpenGL ES 2.0 feature set; WebGL 2.0 exposes the OpenGL ES 3.0 API.

WebGL brings plugin-free 3D to the web, implemented right into the browser. Major browser vendors Apple (Safari), Google (Chrome), Microsoft (Edge), and Mozilla (Firefox) are members of the WebGL Working Group.

翻译过来就是:

WebGL™ 是一个跨平台、开放版权的开放式web标准,用于搭建基于OpenGL ES的底层3D图形API,并通过HTML5 Canvas元素向ECMAScript公开。熟悉OpenGL ES 2.0的开发人员将使用GLSL将WebGL识别为基于着色器的API,其结构在语义上与底层OpenGL ES API的结构相似。它与OpenGL ES规范非常接近,对开发人员期望的JavaScript等内存管理语言做出了一些让步。WebGL 1.0公开了OpenGL ES 2.0功能集;WebGL 2.0公开了OpenGL ES 3.0 API。
WebGL将无插件的3D技术引入网络,并直接在浏览器中实现。主要浏览器供应商苹果(Safari)、谷歌(Chrome)、微软(Edge)和Mozilla(Firefox)都是WebGL工作组的成员。

纵观上文,关于WebGL有几个重要的信息:

  • 表层基于HTML5标准,通过Canvas元素公开
  • 底层基于OpenGL,与OpenGL ES规范非常接近
  • 暂时采用JavaScript在web端编辑
  • 同时,WebGL是内嵌在浏览器中的(不是基于操作系统的),所以它具有很好的跨平台能力

为了判断浏览器是否支持WebGL,可以登录网站https://get.webgl.org/,如果支持,会出现以下内容:

当然,JavaScript也有方法测试浏览器是否支持WebGL,方法在网上有很多,在此不再总结。

WebGL的起源

在个人计算机上使用最广泛的两种三维图形渲染技术是Direct3D和OpenGL。

  • Direct3D是微软DirectX技术的一部分,是一套由微软控制的编程接口(API),主要用在Windows平台;
  • OpenGL全称Open Graphics Library,是一套开源的三维图形开发标准,在多种平台上都有广泛的应用,也是WebGL的重要基石。

相信很多初步接触OpenGL的小伙伴都使用过glut的C++库,现在glut库已经不再维护,更多的库可以从网上找到

OpenGL最初由SGI(Silicon Graphics Inc)开发,并在1992年发布为开源标准。多年以来,OpenGL经历了数个版本,部分版本更新情况及其与WebGL的关系如下图所示:

在这里插入图片描述
从OpenGL2.0开始,这一三维图形技术支持了一个非常重要的特性:可编程着色器方法(programmable shader functions),这一方法被OpenGL ES 2.0继承并成为WebGL 1.0标准的核心部分。

着色器方法,或称着色器,使用一种类似于C的编程语言实现了精美的视觉效果。编写着色器的语言又称为着色器语言(shading language),OpenGL ES 2.0基于OpenGL着色器语言(GLSL),因此后者又被称为OpenGL ES着色器语言(GLSL ES)。WebGL基于OpenGL ES 2.0,也使用GLSL ES编写着色器。

这一部分的缩写要留有印象,后文可能会出现

OpenGL规范的更新和标准化由Khronos组织(一个非盈利的行业协会,专注于制定、发布、推广多种开放标准)负责。2009年,Khronos建立了WebGL工作小组,开始基于OpenGL ES着手建立WebGL规范,并于2011年发布了WebGL规范的第一个版本。

WebGL程序的结构

在网页引入WebGL之后,除了原本的HTML(超文本标记语言)和JavaScript语言之外,还包含了着色器语言GLSL ES。下图展示了传统动态网页和使用WebGL的网页的软件结构:

在这里插入图片描述

因为通常GLSL ES是(以字符串的形式)在JavaScript中编写的,所以,虽然WebGL网页更加复杂,在编写时也只用到了HTML文件和JavaScript文件。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
基本信息 原书名:WebGL Programming Guide: Interactive 3D Graphics Programming with WebGL (OpenGL) 原出版社: Addison-Wesley Professional 作者: (美)Kouichi Matsuda Rodger Lea(松田浩一,罗杰.李) 译者: 谢光磊 出版社:电子工业出版社 ISBN:9787121229428 上架时间:2014-6-11 出版日期:2014 年6月 开本:16开 页码:470 版次:1-1 ---------------------------------------- 目录 《WebGL编程指南》 第1 章 WebGL 概述 1 WebGL 的优势 3 使用文本编辑器开发三维应用 3 轻松发布三维图形程序 4 充分利用浏览器的功能 5 学习和使用WebGL 很简单 5 WebGL 的起源 5 WebGL 程序的结构 6 总结 7 第2 章 WebGL 入门 9 Canvas 是什么? 10 使用[canvas] 标签 11 DrawRectangle.js 13 最短的WebGL 程序:清空绘图区 16 HTML 文件(HelloCanvas.html) 16 JavaScript 程序(HelloCanvas.js) 17 用示例程序做实验 22 绘制一个点(版本1) 22 HelloPoint1.html 24 HelloPoint1.js 24 着色器是什么? 25 使用着色器的WebGL 程序的结构 27 初始化着色器 29 顶点着色器 31 片元着色器 33 绘制操作 34 WebGL 坐标系统 35 用示例程序做实验 37 绘制一个点(版本2) 38 使用attribute 变量 38 示例程序(HelloPoint2.js) 39 获取attribute 变量的存储位置 41 向attribute 变量赋值 42 gl.vertexAttrib3f() 的同族函数 44 用示例程序做实验 45 通过鼠标点击绘点 46 示例程序(ClickedPoints.js) 47 注册事件响应函数 48 响应鼠标点击事件 50 用示例程序做实验 53 改变点的颜色 55 示例程序(ColoredPoints.js) 56 uniform 变量 58 获取uniform 变量的存储地址 59 向uniform 变量赋值 60 gl.uniform4f() 的同族函数 61 总结 62 第3 章 绘制和变换三角形 63 绘制多个点 64 示例程序(MultiPoint.js) 66 使用缓冲区对象 69 创建缓冲区对象(gl.createBuffer()) 70 绑定缓冲区(gl.bindBuffer()) 71 向缓冲区对象中写入数据(gl.bufferData()) 72 类型化数组 74 将缓冲区对象分配给attribute 变量(gl.vertexAttribPointer()) 75 开启attribute 变量(gl.enableVertexAttribArray()) 77 gl.drawArrays() 的第2 个和第3 个参数 78 用示例程序做实验 79 Hello Triangle 80 示例程序(HelloTriangle.js) 80 基本图形 82 用示例程序做实验 83 Hello Rectangle(HelloQuad) 84 用示例程序做实验 85 移动、旋转和缩放 86 平移 87 示例程序(TranslatedTriangle.js) 88 旋转 91 示例程序(RotatedTriangle.js) 93 变换矩阵:旋转 97 变换矩阵:平移 100 4×4 的旋转矩阵 101 示例程序(RotatedTriangle_Matrix.js) 102 平移:相同的策略 105 变换矩阵:缩放 106 总结 108 第4 章 高级变换与动画基础 109 平移,然后旋转 109 矩阵变换库:cuon-matrix.js 110 示例程序(RotatedTriangle_Matrix4.js) 111 复合变换 113 示例程序(RotatedTranslatedTriangle.js) 115 用示例程序做实验 117 动画 118 动画基础 119 示例程序(RotatingTriangle.js) 119 反复调用绘制函数(tick()) 123 按照指定的旋转角度绘制三角形(dr

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值