WebGL编程指南

WebGL编程指南
分享
扫描下方二维码分享到微信
打开微信,点击右上角”+“,
使用”扫一扫“即可将网页分享到朋友圈。
作者: [美] , [美] ,
2014-06
版次: 1
ISBN: 9787121229428
定价: 98.00
装帧: 平装
开本: 16开
纸张: 胶版纸
页数: 500页
字数: 640千字
正文语种: 简体中文
287人买过
  •   WebGL是一项在网页上渲染三维图形的技术,也是HTML5草案的一部分。
      《WebGL编程指南》的主要篇幅讲解了WebGL原生API和三维图形学的基础知识,包括渲染管线、着色器、矩阵变换、着色器编程语言(GLSLES)等等,也讲解了使用WebGL渲染三维场景的一般技巧,如光照、阴影、雾化等等。《WebGL编程指南》提供了丰富的示例程序供读者钻研,也提供了极具价值的附录供读者参考。
      《WebGL编程指南》适合有一定前端开发基础,希望学习WebGL,但对三维图形学缺乏了解的程序员们阅读。
      KouichiMatsuda,博士是多媒体产品用户界面和用户体验设计方面的专家。他先后供职于日本电气(NEC)、索尼(Sony)研发中心、索尼(Sony)计算机科学实验室,曾经做过产品研发,也做过科学研究,最终回到产品研发的岗位。目前,他是用户体验和人机交互领域的首席研究员,负责多款消费类电子产品的设计。他曾经设计了社交三维虚拟世界“PAW”,也曾经参与过VRML97(ISO/IEC14772-1:1997)标准的开发工作,在VRML和X3D(WebGL的前身)社区中仍然非常活跃。他撰写过15本计算机技术的书籍,并翻译过25本相关书籍。他专长于用户体验、用户界面、人机交互、自然语言处理和面向娱乐的网络设备,以及接口代理系统等领域。他不仅对技术领域的新鲜事物充满热情,还热衷于温泉、夏季的海滩、红酒和漫画(为此他已经沉迷于绘制插画一段时间了)。他在东京大学工程系获得了博士学位。
      RodgerLea,博士是卑诗大学媒体与图像跨学科中心的兼职教授,对多媒体和分布式计算等领域很感兴趣。他和他带领的研究小组在学术和工业领域耕耘超过20年,参与制定了VRML97标准,开发了多媒体操作系统、可交互数字电视原型,并领导了家用多媒体网络标准的制定工作。他发表了60多篇学术论文,著有3本技术书籍,并拥有12项专利。目前,他的研究集中在探索发展中的互联网,但他仍然对有关多媒体和图形学的一切抱有热情。
      关于译者:
      谢光磊,毕业于南京大学,目前为中科院在读硕士,即将成为淘宝UED的一名前端工程师。因一次偶然的机会接触WebGL而对其萌生兴趣,并愿意持久深入地研究这项技术。 第1 章 WebGL 概述
    WebGL 的优势
    使用文本编辑器开发三维应用
    轻松发布三维图形程序
    充分利用浏览器的功能
    学习和使用WebGL 很简单
    WebGL 的起源
    WebGL 程序的结构
    总结
    第2 章 WebGL 入门
    Canvas 是什么?
    使用<canvas> 标签
    DrawRectangle.js
    最短的WebGL 程序:清空绘图区
    HTML 文件(HelloCanvas.html)
    JavaScript 程序(HelloCanvas.js)
    用示例程序做实验
    绘制一个点(版本1)
    HelloPoint1.html
    HelloPoint1.js
    着色器是什么?
    使用着色器的WebGL 程序的结构
    初始化着色器
    顶点着色器
    片元着色器
    绘制操作
    WebGL 坐标系统
    用示例程序做实验
    绘制一个点(版本2)
    使用attribute 变量
    示例程序(HelloPoint2.js)
    获取attribute 变量的存储位置
    向attribute 变量赋值
    gl.vertexAttrib3f() 的同族函数
    用示例程序做实验
    通过鼠标点击绘点
    示例程序(ClickedPoints.js)
    注册事件响应函数
    响应鼠标点击事件
    用示例程序做实验
    改变点的颜色
    示例程序(ColoredPoints.js)
    uniform 变量
    获取uniform 变量的存储地址
    向uniform 变量赋值
    gl.uniform4f() 的同族函数
    总结
    第3 章 绘制和变换三角形
    绘制多个点
    示例程序(MultiPoint.js)
    使用缓冲区对象
    创建缓冲区对象(gl.createBuffer())
    绑定缓冲区(gl.bindBuffer())
    向缓冲区对象中写入数据(gl.bufferData())
    类型化数组
    将缓冲区对象分配给attribute 变量(gl.vertexAttribPointer())
    开启attribute 变量(gl.enableVertexAttribArray())
    gl.drawArrays() 的第2 个和第3 个参数
    用示例程序做实验
    Hello Triangle
    示例程序(HelloTriangle.js)
    基本图形
    用示例程序做实验
    Hello Rectangle(HelloQuad)
    用示例程序做实验
    移动、旋转和缩放
    平移
    示例程序(TranslatedTriangle.js)
    旋转
    示例程序(RotatedTriangle.js)
    变换矩阵:旋转
    变换矩阵:平移
    4×4 的旋转矩阵
    示例程序(RotatedTriangle_Matrix.js)
    平移:相同的策略
    变换矩阵:缩放
    总结
    第4 章 高级变换与动画基础
    平移,然后旋转
    矩阵变换库:cuon-matrix.js
    示例程序(RotatedTriangle_Matrix4.js)
    复合变换
    示例程序(RotatedTranslatedTriangle.js)
    用示例程序做实验
    动画
    动画基础
    示例程序(RotatingTriangle.js)
    反复调用绘制函数(tick())
    按照指定的旋转角度绘制三角形(draw())
    请求再次被调用(requestAnimationFrame())
    更新旋转角(animate())
    用示例程序做实验
    总结
    第5 章 颜色与纹理
    将非坐标数据传入顶点着色器
    示例程序(MultiAttributeSize.js)
    创建多个缓冲区对象
    gl.vertexAttribPointer() 的步进和偏移参数
    示例程序(MultiAttributeSize_Interleaved.js)
    修改颜色(varying 变量)
    示例程序(MultiAttributeColor.js)
    用示例程序做实验
    彩色三角形(ColoredTriangle.js)
    几何形状的装配和光栅化
    调用片元着色器
    用示例程序做实验
    varying 变量的作用和内插过程
    在矩形表面贴上图像
    纹理坐标
    将纹理图像粘贴到几何图形上
    示例程序(TexturedQuad.js)
    设置纹理坐标(initVertexBuffers())
    配置和加载纹理(initTextures())
    为WebGL 配置纹理(loadTexture())
    图像Y 轴反转
    激活纹理单元(gl.activeTexture())
    绑定纹理对象(gl.bindTexture())
    配置纹理对象的参数(gl.texParameteri())
    将纹理图像分配给纹理对象(gl.texImage2D())
    将纹理单元传递给片元着色器(gl.uniform1i())
    从顶点着色器向片元着色器传输纹理坐标
    在片元着色器中获取纹理像素颜色(texture2D())
    用示例程序做试验
    使用多幅纹理
    示例程序(MultiTexture.js)
    总结
    第6 章 OpenGL ES 着色器语言(GLSL ES)
    回顾:基本着色器代码
    GLSL ES 概述
    你好,着色器!
    基础
    执行次序
    注释
    数据值类型(数值和布尔值)
    变量
    GLSL ES 是强类型语言
    基本类型
    赋值和类型转换
    运算符
    矢量和矩阵
    赋值和构造
    访问元素
    运算符
    结构体
    赋值和构造
    访问成员
    运算符
    数组
    取样器(纹理)
    运算符优先级
    程序流程控制:分支和循环
    if 语句和if-else 语句
    for 语句
    continue、break 和discard 语句
    函数
    规范声明
    参数限定词
    内置函数
    全局变量和局部变量
    存储限定字
    const 变量
    Attribute 变量
    uniform 变量
    varying 变量
    精度限定字
    预处理指令
    总结
    第7 章 进入三维世界
    立方体由三角形构成
    视点和视线
    视点、观察目标点和上方向
    示例程序(LookAtTriangles.js)
    LookAtTriangles.js 与RotatedTriangle_Matrix4.js
    从指定视点观察旋转后的三角形
    示例程序(LookAtRotatedTriangles.js)
    用示例程序做实验
    利用键盘改变视点
    示例程序(LookAtTrianglesWithKeys.js)
    独缺一角
    可视范围(正射类型)
    可视空间
    定义盒状可视空间
    示例程序(OrthoView.html)
    示例程序(OrthoView.js)
    JavaScript 修改HTML 元素
    顶点着色器的执行流程
    修改near 和far 值
    补上缺掉的角(LookAtTrianglesWithKeys_ViewVolume.js)
    用示例程序做实验
    可视空间(透视投影)
    定义透视投影可视空间
    示例程序(perspectiveview.js)
    投影矩阵的作用
    共冶一炉(模型矩阵、视图矩阵和投影矩阵)
    示例程序(PerspectiveView_mvp.js)
    用示例程序做实验
    正确处理对象的前后关系
    隐藏面消除
    示例程序(DepthBuffer.js)
    深度冲突
    立方体
    通过顶点索引绘制物体
    示例程序(HelloCube.js)
    向缓冲区中写入顶点的坐标、颜色与索引
    为立方体的每个表面指定颜色
    示例程序(ColoredCube.js)
    用示例程序做实验
    总结
    第8 章 光照
    光照原理
    光源类型
    反射类型
    平行光下的漫反射
    根据光线和表面的方向计算入射角
    法线:表面的朝向
    示例程序(LightedCube.js)
    环境光下的漫反射
    示例程序(LightedCube_ambient.js)
    运动物体的光照效果
    魔法矩阵:逆转置矩阵
    示例程序(LightedTranslatedRotatedCube.js)
    点光源光
    示例程序(PointLightedCube.js)
    更逼真:逐片元光照
    示例程序(PointLightedCube_perFragment.js)
    总结
    第9 章 层次模型
    多个简单模型组成的复杂模型
    层次结构模型
    单关节模型
    示例程序(JointMode.js)
    绘制层次模型(draw())
    多节点模型
    示例程序(MultiJointModel.js)
    绘制部件(drawBox())
    绘制部件(drawSegments())
    着色器和着色器程序对象:initShaders() 函数的作用
    创建着色器对象(gl.createShader())
    指定着色器对象的代码(gl.shaderSource())
    编译着色器(gl.compileShader())
    创建程序对象(gl.createProgram())
    为程序对象分配着色器对象(gl.attachShader())
    连接程序对象(gl.linkProgram())
    告知WebGL 系统所使用的程序对象(gl.useProgram())
    initShaders() 函数的内部流程
    总结
    第10 章 高级技术
    用鼠标控制物体旋转
    如何实现物体旋转
    示例程序(RotateObject.js)
    选中物体
    如何实现选中物体
    示例程序(PickObject.js)
    选中一个表面
    示例程序(PickFace.js)
    HUD(平视显示器)
    如何实现HUD
    示例程序(HUD.html)
    示例程序(HUD.js)
    在网页上方显示三维物体
    雾化(大气效果)
    如何实现雾化
    示例程序(Fog.js)
    使用w 分量(Fog_w.js)
    绘制圆形的点
    如何实现圆形的点
    示例程序(RoundedPoint.js)
    α 混合
    如何实现α 混合
    示例程序(LookAtBlendedTriangles.js)
    混合函数
    半透明的三维物体(BlendedCube.js)
    透明与不透明物体共存 .
    切换着色器
    如何实现切换着色器
    示例程序(ProgramObject.js)
    渲染到纹理
    帧缓冲区对象和渲染缓冲区对象
    如何实现渲染到纹理
    示例程序(FramebufferObject.js)
    创建帧缓冲区对象(gl.createFramebuffer())
    创建纹理对象并设置其尺寸和参数
    创建渲染缓冲区对象(gl.createRenderbuffer())
    绑定渲染缓冲区并设置其尺寸(gl.bindRenderbuffer(),
    gl.renderbufferStorage())
    将纹理对象关联到帧缓冲区对象(gl.bindFramebuffer(),
    gl.framebufferTexture2D())
    将渲染缓冲区对象关联到帧缓冲区对象(gl.framebufferRenderbuffer())
    检查帧缓冲区的配置(gl.checkFramebufferStatus())
    在帧缓冲区进行绘图
    绘制阴影
    如何实现阴影
    示例程序(Shadow.js)
    提高精度
    示例程序(Shadow_highp.js)
    加载三维模型
    OBJ 文件格式
    MTL 文件格式
    示例程序(OBJViewer.js)
    自定义类型对象
    示例程序(OBJViewer.js 解析数据部分)
    响应上下文丢失
    如何响应上下文丢失
    示例程序(RotatingTriangle_contextLost.js)
    总结
    附录A WebGL 中无须交换缓冲区
    附录B GLSL ES 1.0 内置函数
    角度和三角函数
    指数函数
    通用函数
    几何函数
    矩阵函数
    矢量函数
    纹理查询函数
    附录C 投影矩阵
    正射投影矩阵
    透视投影矩阵
    附录D WebGL/OpenGL :左手还是右手坐标系?
    示例程序(CoordinateSystem.js)
    隐藏面消除和裁剪坐标系统
    裁剪坐标系和可视空间
    什么是对的?
    总结
    附录E 逆转置矩阵
    附录F 从文件中加载着色器
    附录G 世界坐标系和本地坐标系
    本地坐标系
    世界坐标系
    变换与坐标系
    附录H WebGL 的浏览器设置
  • 内容简介:
      WebGL是一项在网页上渲染三维图形的技术,也是HTML5草案的一部分。
      《WebGL编程指南》的主要篇幅讲解了WebGL原生API和三维图形学的基础知识,包括渲染管线、着色器、矩阵变换、着色器编程语言(GLSLES)等等,也讲解了使用WebGL渲染三维场景的一般技巧,如光照、阴影、雾化等等。《WebGL编程指南》提供了丰富的示例程序供读者钻研,也提供了极具价值的附录供读者参考。
      《WebGL编程指南》适合有一定前端开发基础,希望学习WebGL,但对三维图形学缺乏了解的程序员们阅读。
  • 作者简介:
      KouichiMatsuda,博士是多媒体产品用户界面和用户体验设计方面的专家。他先后供职于日本电气(NEC)、索尼(Sony)研发中心、索尼(Sony)计算机科学实验室,曾经做过产品研发,也做过科学研究,最终回到产品研发的岗位。目前,他是用户体验和人机交互领域的首席研究员,负责多款消费类电子产品的设计。他曾经设计了社交三维虚拟世界“PAW”,也曾经参与过VRML97(ISO/IEC14772-1:1997)标准的开发工作,在VRML和X3D(WebGL的前身)社区中仍然非常活跃。他撰写过15本计算机技术的书籍,并翻译过25本相关书籍。他专长于用户体验、用户界面、人机交互、自然语言处理和面向娱乐的网络设备,以及接口代理系统等领域。他不仅对技术领域的新鲜事物充满热情,还热衷于温泉、夏季的海滩、红酒和漫画(为此他已经沉迷于绘制插画一段时间了)。他在东京大学工程系获得了博士学位。
      RodgerLea,博士是卑诗大学媒体与图像跨学科中心的兼职教授,对多媒体和分布式计算等领域很感兴趣。他和他带领的研究小组在学术和工业领域耕耘超过20年,参与制定了VRML97标准,开发了多媒体操作系统、可交互数字电视原型,并领导了家用多媒体网络标准的制定工作。他发表了60多篇学术论文,著有3本技术书籍,并拥有12项专利。目前,他的研究集中在探索发展中的互联网,但他仍然对有关多媒体和图形学的一切抱有热情。
      关于译者:
      谢光磊,毕业于南京大学,目前为中科院在读硕士,即将成为淘宝UED的一名前端工程师。因一次偶然的机会接触WebGL而对其萌生兴趣,并愿意持久深入地研究这项技术。
  • 目录:
    第1 章 WebGL 概述
    WebGL 的优势
    使用文本编辑器开发三维应用
    轻松发布三维图形程序
    充分利用浏览器的功能
    学习和使用WebGL 很简单
    WebGL 的起源
    WebGL 程序的结构
    总结
    第2 章 WebGL 入门
    Canvas 是什么?
    使用<canvas> 标签
    DrawRectangle.js
    最短的WebGL 程序:清空绘图区
    HTML 文件(HelloCanvas.html)
    JavaScript 程序(HelloCanvas.js)
    用示例程序做实验
    绘制一个点(版本1)
    HelloPoint1.html
    HelloPoint1.js
    着色器是什么?
    使用着色器的WebGL 程序的结构
    初始化着色器
    顶点着色器
    片元着色器
    绘制操作
    WebGL 坐标系统
    用示例程序做实验
    绘制一个点(版本2)
    使用attribute 变量
    示例程序(HelloPoint2.js)
    获取attribute 变量的存储位置
    向attribute 变量赋值
    gl.vertexAttrib3f() 的同族函数
    用示例程序做实验
    通过鼠标点击绘点
    示例程序(ClickedPoints.js)
    注册事件响应函数
    响应鼠标点击事件
    用示例程序做实验
    改变点的颜色
    示例程序(ColoredPoints.js)
    uniform 变量
    获取uniform 变量的存储地址
    向uniform 变量赋值
    gl.uniform4f() 的同族函数
    总结
    第3 章 绘制和变换三角形
    绘制多个点
    示例程序(MultiPoint.js)
    使用缓冲区对象
    创建缓冲区对象(gl.createBuffer())
    绑定缓冲区(gl.bindBuffer())
    向缓冲区对象中写入数据(gl.bufferData())
    类型化数组
    将缓冲区对象分配给attribute 变量(gl.vertexAttribPointer())
    开启attribute 变量(gl.enableVertexAttribArray())
    gl.drawArrays() 的第2 个和第3 个参数
    用示例程序做实验
    Hello Triangle
    示例程序(HelloTriangle.js)
    基本图形
    用示例程序做实验
    Hello Rectangle(HelloQuad)
    用示例程序做实验
    移动、旋转和缩放
    平移
    示例程序(TranslatedTriangle.js)
    旋转
    示例程序(RotatedTriangle.js)
    变换矩阵:旋转
    变换矩阵:平移
    4×4 的旋转矩阵
    示例程序(RotatedTriangle_Matrix.js)
    平移:相同的策略
    变换矩阵:缩放
    总结
    第4 章 高级变换与动画基础
    平移,然后旋转
    矩阵变换库:cuon-matrix.js
    示例程序(RotatedTriangle_Matrix4.js)
    复合变换
    示例程序(RotatedTranslatedTriangle.js)
    用示例程序做实验
    动画
    动画基础
    示例程序(RotatingTriangle.js)
    反复调用绘制函数(tick())
    按照指定的旋转角度绘制三角形(draw())
    请求再次被调用(requestAnimationFrame())
    更新旋转角(animate())
    用示例程序做实验
    总结
    第5 章 颜色与纹理
    将非坐标数据传入顶点着色器
    示例程序(MultiAttributeSize.js)
    创建多个缓冲区对象
    gl.vertexAttribPointer() 的步进和偏移参数
    示例程序(MultiAttributeSize_Interleaved.js)
    修改颜色(varying 变量)
    示例程序(MultiAttributeColor.js)
    用示例程序做实验
    彩色三角形(ColoredTriangle.js)
    几何形状的装配和光栅化
    调用片元着色器
    用示例程序做实验
    varying 变量的作用和内插过程
    在矩形表面贴上图像
    纹理坐标
    将纹理图像粘贴到几何图形上
    示例程序(TexturedQuad.js)
    设置纹理坐标(initVertexBuffers())
    配置和加载纹理(initTextures())
    为WebGL 配置纹理(loadTexture())
    图像Y 轴反转
    激活纹理单元(gl.activeTexture())
    绑定纹理对象(gl.bindTexture())
    配置纹理对象的参数(gl.texParameteri())
    将纹理图像分配给纹理对象(gl.texImage2D())
    将纹理单元传递给片元着色器(gl.uniform1i())
    从顶点着色器向片元着色器传输纹理坐标
    在片元着色器中获取纹理像素颜色(texture2D())
    用示例程序做试验
    使用多幅纹理
    示例程序(MultiTexture.js)
    总结
    第6 章 OpenGL ES 着色器语言(GLSL ES)
    回顾:基本着色器代码
    GLSL ES 概述
    你好,着色器!
    基础
    执行次序
    注释
    数据值类型(数值和布尔值)
    变量
    GLSL ES 是强类型语言
    基本类型
    赋值和类型转换
    运算符
    矢量和矩阵
    赋值和构造
    访问元素
    运算符
    结构体
    赋值和构造
    访问成员
    运算符
    数组
    取样器(纹理)
    运算符优先级
    程序流程控制:分支和循环
    if 语句和if-else 语句
    for 语句
    continue、break 和discard 语句
    函数
    规范声明
    参数限定词
    内置函数
    全局变量和局部变量
    存储限定字
    const 变量
    Attribute 变量
    uniform 变量
    varying 变量
    精度限定字
    预处理指令
    总结
    第7 章 进入三维世界
    立方体由三角形构成
    视点和视线
    视点、观察目标点和上方向
    示例程序(LookAtTriangles.js)
    LookAtTriangles.js 与RotatedTriangle_Matrix4.js
    从指定视点观察旋转后的三角形
    示例程序(LookAtRotatedTriangles.js)
    用示例程序做实验
    利用键盘改变视点
    示例程序(LookAtTrianglesWithKeys.js)
    独缺一角
    可视范围(正射类型)
    可视空间
    定义盒状可视空间
    示例程序(OrthoView.html)
    示例程序(OrthoView.js)
    JavaScript 修改HTML 元素
    顶点着色器的执行流程
    修改near 和far 值
    补上缺掉的角(LookAtTrianglesWithKeys_ViewVolume.js)
    用示例程序做实验
    可视空间(透视投影)
    定义透视投影可视空间
    示例程序(perspectiveview.js)
    投影矩阵的作用
    共冶一炉(模型矩阵、视图矩阵和投影矩阵)
    示例程序(PerspectiveView_mvp.js)
    用示例程序做实验
    正确处理对象的前后关系
    隐藏面消除
    示例程序(DepthBuffer.js)
    深度冲突
    立方体
    通过顶点索引绘制物体
    示例程序(HelloCube.js)
    向缓冲区中写入顶点的坐标、颜色与索引
    为立方体的每个表面指定颜色
    示例程序(ColoredCube.js)
    用示例程序做实验
    总结
    第8 章 光照
    光照原理
    光源类型
    反射类型
    平行光下的漫反射
    根据光线和表面的方向计算入射角
    法线:表面的朝向
    示例程序(LightedCube.js)
    环境光下的漫反射
    示例程序(LightedCube_ambient.js)
    运动物体的光照效果
    魔法矩阵:逆转置矩阵
    示例程序(LightedTranslatedRotatedCube.js)
    点光源光
    示例程序(PointLightedCube.js)
    更逼真:逐片元光照
    示例程序(PointLightedCube_perFragment.js)
    总结
    第9 章 层次模型
    多个简单模型组成的复杂模型
    层次结构模型
    单关节模型
    示例程序(JointMode.js)
    绘制层次模型(draw())
    多节点模型
    示例程序(MultiJointModel.js)
    绘制部件(drawBox())
    绘制部件(drawSegments())
    着色器和着色器程序对象:initShaders() 函数的作用
    创建着色器对象(gl.createShader())
    指定着色器对象的代码(gl.shaderSource())
    编译着色器(gl.compileShader())
    创建程序对象(gl.createProgram())
    为程序对象分配着色器对象(gl.attachShader())
    连接程序对象(gl.linkProgram())
    告知WebGL 系统所使用的程序对象(gl.useProgram())
    initShaders() 函数的内部流程
    总结
    第10 章 高级技术
    用鼠标控制物体旋转
    如何实现物体旋转
    示例程序(RotateObject.js)
    选中物体
    如何实现选中物体
    示例程序(PickObject.js)
    选中一个表面
    示例程序(PickFace.js)
    HUD(平视显示器)
    如何实现HUD
    示例程序(HUD.html)
    示例程序(HUD.js)
    在网页上方显示三维物体
    雾化(大气效果)
    如何实现雾化
    示例程序(Fog.js)
    使用w 分量(Fog_w.js)
    绘制圆形的点
    如何实现圆形的点
    示例程序(RoundedPoint.js)
    α 混合
    如何实现α 混合
    示例程序(LookAtBlendedTriangles.js)
    混合函数
    半透明的三维物体(BlendedCube.js)
    透明与不透明物体共存 .
    切换着色器
    如何实现切换着色器
    示例程序(ProgramObject.js)
    渲染到纹理
    帧缓冲区对象和渲染缓冲区对象
    如何实现渲染到纹理
    示例程序(FramebufferObject.js)
    创建帧缓冲区对象(gl.createFramebuffer())
    创建纹理对象并设置其尺寸和参数
    创建渲染缓冲区对象(gl.createRenderbuffer())
    绑定渲染缓冲区并设置其尺寸(gl.bindRenderbuffer(),
    gl.renderbufferStorage())
    将纹理对象关联到帧缓冲区对象(gl.bindFramebuffer(),
    gl.framebufferTexture2D())
    将渲染缓冲区对象关联到帧缓冲区对象(gl.framebufferRenderbuffer())
    检查帧缓冲区的配置(gl.checkFramebufferStatus())
    在帧缓冲区进行绘图
    绘制阴影
    如何实现阴影
    示例程序(Shadow.js)
    提高精度
    示例程序(Shadow_highp.js)
    加载三维模型
    OBJ 文件格式
    MTL 文件格式
    示例程序(OBJViewer.js)
    自定义类型对象
    示例程序(OBJViewer.js 解析数据部分)
    响应上下文丢失
    如何响应上下文丢失
    示例程序(RotatingTriangle_contextLost.js)
    总结
    附录A WebGL 中无须交换缓冲区
    附录B GLSL ES 1.0 内置函数
    角度和三角函数
    指数函数
    通用函数
    几何函数
    矩阵函数
    矢量函数
    纹理查询函数
    附录C 投影矩阵
    正射投影矩阵
    透视投影矩阵
    附录D WebGL/OpenGL :左手还是右手坐标系?
    示例程序(CoordinateSystem.js)
    隐藏面消除和裁剪坐标系统
    裁剪坐标系和可视空间
    什么是对的?
    总结
    附录E 逆转置矩阵
    附录F 从文件中加载着色器
    附录G 世界坐标系和本地坐标系
    本地坐标系
    世界坐标系
    变换与坐标系
    附录H WebGL 的浏览器设置
查看详情
12
相关图书 / 更多
WebGL编程指南
Web前端开发与项目实践
魏慧;胡沁涵
WebGL编程指南
Web前端设计
王珊
WebGL编程指南
Web应用开发技术(微课版)
白磊
WebGL编程指南
Web 3.0:打造良好体验的品牌方法论
施襄 著
WebGL编程指南
Web API设计原则通过API和微服务实现价值交付
(美)詹姆斯·希金博特姆(James Higginbotham)
WebGL编程指南
Weir & Abrahams 人体解剖影像图谱(第6版)
袁慧书 著
WebGL编程指南
Web3.0:数字时代赋能与变革
贾新峰
WebGL编程指南
Web3.0:构建数字经济新未来
翟振林
WebGL编程指南
Web前端开发基础
韩少云、王春梅 著
WebGL编程指南
Web3.0时代:创新思维赋能数字未来
徐俊
WebGL编程指南
Web前端开发实战
郭凯;孔繁玉;张有宽
WebGL编程指南
Web前端设计基础(第2版)
李立威;薛晓霞;王晓红;李丹丹;王艳娥
您可能感兴趣 / 更多
WebGL编程指南
孩子,把你的手给我1:怎么说孩子才爱听,怎么教孩子才肯学?帮助每一位3-12岁孩子的父母结束与孩子的所有冲突!
[美]海姆·G.吉诺特
WebGL编程指南
怎样做成大事
[美]丹·加德纳(Dan Gardner) 著;贾拥民 译;湛庐文化 出品;[丹麦]傅以斌(Bent Flyvbjerg)
WebGL编程指南
1200年希腊罗马神话
[美]伊迪丝·汉密尔顿
WebGL编程指南
爱情心理学(新编本)
[美]罗伯特·J. 斯腾伯格 (美)凯琳·斯腾伯格 倪爱萍 译
WebGL编程指南
黄金圈法则
[美]西蒙·斯涅克 著;磨铁文化 出品
WebGL编程指南
汤姆·索亚历险记 彩图注音版 一二三四年级5-6-7-8-9岁小学生课外阅读经典 儿童文学无障碍有声伴读世界名著童话故事
[美]马克 吐温
WebGL编程指南
富兰克林自传 名家全译本 改变无数人命运的励志传奇 埃隆马斯克反复推荐 赠富兰克林签名照及精美插图
[美]本杰明·富兰克林 著;李自修 译
WebGL编程指南
意大利文艺复兴新艺术史
[美]迈克尔·韦恩·科尔 著;[美]斯蒂芬·J·坎贝尔;邵亦杨
WebGL编程指南
汤姆素亚历险记:中小学生课外阅读快乐读书吧 儿童文学无障碍有声伴读世界名著童话故事
[美]马克·吐温
WebGL编程指南
老人与海 彩图注音版 一二三四年级5-6-7-8-9岁小学生课外阅读经典 儿童文学无障碍有声伴读世界名著童话故事
[美]海明威
WebGL编程指南
养育的觉醒:全面激发孩子自驱力,教你如何心平气和做妈妈
[美]凯文·莱曼 著;唐晓璐 译;斯坦威 出品
WebGL编程指南
国际大奖图画书系列 共11册(小老鼠的恐惧的大书,大灰狼,红豆与菲比,别烦我,下雪了 ,穿靴子的猫 ,先有蛋,绿 ,特别快递,如果你想看鲸鱼 ,一个部落的孩子 ) 麦克米伦世纪
[美]莱恩·史密斯 (英)埃米莉·格雷维特 (美)劳拉·瓦卡罗·等/文 (英)埃米莉·格雷维特 等/图 彭懿 杨玲玲 阿甲 孙慧阳 白薇 译