目录¶
这是免费在线教科书《计算机图形学概论》的目录。
第一章: 简介¶
第 2 章: 二维图形¶
- 2.1 像素、坐标和颜色
- 2.1.1 像素坐标
- 2.1.2 实数坐标系
- 2.1.3 纵横比
- 2.1.4 颜色模型
- 2.2 形状
- 2.2.1 基本形状
- 2.2.2 描边和填充
- 2.2.3 多边形、曲线和路径
- 2.3 变换
- 2.3.1 查看和建模
- 2.3.2 翻译
- 2.3.3 旋转
- 2.3.4 组合变换
- 2.3.5 缩放
- 2.3.6 剪切
- 2.3.7 窗口到视口
- 2.3.8 矩阵和向量
- 2.4 层次建模
- 2.4.1 构建复杂对象
- 2.4.2 场景图
- 2.4.3 变换堆栈
- 2.5 Java Graphics2D
- 2.5.1 二维图形
- 2.5.2 形状
- 2.5.3 描边和填充
- 2.5.4 变换
- 2.5.5 BufferedImage 和像素
- 第 2.6 节 HTML Canvas 图形
- 2.6.1 2D 图形上下文
- 2.6.2 形状
- 2.6.3 描边和填充
- 2.6.4 变换
- 2.6.5 辅助画布
- 2.6.6 像素操作
- 2.6.7 图片
- 2.7 SVG:场景描述语言
- 2.7.1 SVG 文档结构
- 2.7.2 形状、样式和变换
- 2.7.3 多边形和路径
- 2.7.4 层次模型
- 2.7.5 动画
第 3 章: OpenGL 1.1:几何¶
- 3.1 OpenGL 1.1 中的形状和颜色
- 3.1.1 OpenGL基元
- 3.1.2 OpenGL颜色
- 3.1.3 glColor 和 glVertex 与数组
- 3.1.4 深度测试
- 3.2 3D 坐标和变换
- 3.2.1 3D坐标
- 3.2.2 基本 3D 变换
- 3.2.3 层次建模
- 3.3 投影与观看
- 3.3.1 多种坐标系
- 3.3.2 视口变换
- 3.3.3 投影变换
- 3.3.4 模型视图转换
- 3.3.5 相机抽象
- 3.4 多边形网格和 glDrawArrays
- 3.4.1 索引面集
- 3.4.2 glDrawArrays和glDrawElements
- 3.4.3 Java 中的数据缓冲区
- 3.4.4 显示列表和VBO
- 3.5 部分线性代数基础
- 3.5.1 向量和向量数学
- 3.5.2 矩阵和变换
- 3.5.3 齐次坐标
- 3.6 使用 GLUT 和 JOGL
- 3.6.1 使用过剩
- 3.6.2 使用JOGL
- 3.6.3 关于 glsim.js
第 4 章: OpenGL 1.1:灯光和材质¶
- 4.1 照明简介
- 4.1.1 光与材料
- 4.1.2 光属性
- 4.1.3 法向量
- 4.1.4 OpenGL 1.1 光照方程
- 4.2 OpenGL 1.1 中的光和材质
- 4.2.1 使用材料
- 4.2.2 定义法向量
- 4.2.3 使用灯光
- 4.2.4 全局光照属性
- 4.3 图像纹理
- 4.3.1 纹理坐标
- 4.3.2 MipMap 和过滤
- 4.3.3 纹理目标和纹理参数
- 4.3.4 纹理变换
- 4.3.5 从内存加载纹理
- 4.3.6 来自颜色缓冲区的纹理
- 4.3.7 纹理对象
- 4.3.8 在 C 中加载纹理
- 4.3.9 通过 JOGL 使用纹理
- 4.4 灯光、相机、动作
- 4.4.1 属性栈
- 4.4.2 移动相机
- 4.4.3 移动光
第 5 章: Three.js:3D 场景图 API¶
- 5.1 Three.js 基础知识
- 5.1.1 关于 JavaScript 模块
- 5.1.2 场景、渲染器、相机
- 5.1.3 三.Object3D
- 5.1.4 物体、几何形状、材料
- 5.1.5 灯光
- 5.1.6 建模示例
- 5.2 构建对象
- 5.2.1 多边形网格和 IFS
- 5.2.2 曲线和曲面
- 5.2.3 纹理
- 5.2.4 变换
- 5.2.5 加载模型
- 5.3 其他功能
- 5.3.1 实例化网格
- 5.3.2 用户输入
- 5.3.3 阴影
- 5.3.4 立方体贴图纹理和天空盒
- 5.3.5 反射和折射
第 6 章: WebGL 简介¶
- 6.1 可编程流水线
- 6.1.1 WebGL 图形上下文
- 6.1.2 着色器程序
- 6.1.3 管道中的数据流
- 6.1.4 统一变量的值
- 6.1.5 属性值
- 6.1.6 绘制基元
- 6.1.7 WebGL 2.0:顶点数组对象
- 6.1.8 WebGL 2.0:实例化绘图
- 6.2 第一个例子
- 6.2.1 WebGL 上下文选项
- 6.2.2 GLSL 简介
- 6.2.3 WebGL 中的 RGB 三角形
- 6.2.4 形状压模
- 6.2.5 POINTS原语
- 6.2.6 WebGL 错误处理
- 6.3 GLSL
- 6.3.1 基本类型
- 6.3.2 数据结构
- 6.3.3 预选赛
- 6.3.4 表达式
- 6.3.5 函数定义
- 6.3.6 控制结构
- 6.3.7 限制
- 6.4 图像纹理
- 6.4.1 纹理单元和纹理对象
- 6.4.2 处理图像
- 6.4.3 更多制作纹理的方法
- 6.4.4 立方体贴图纹理
- 6.4.5 计算示例
- 6.4.6 WebGL 2.0 中的纹理
- 6.5 实现 2D 变换
- 6.5.1 GLSL 中的转换
- 6.5.2 JavaScript 中的转换
第 7 章: 使用 WebGL 进行 3D 图形¶
- 7.1 3D变换
- 7.1.1 关于着色器脚本
- 7.1.2 介绍glMatrix
- 7.1.3 变换坐标
- 7.1.4 变换法线
- 7.1.5 鼠标旋转
- 7.2 照明和材料
- 7.2.1 最小照明
- 7.2.2 镜面反射和 Phong 着色
- 7.2.3 增加复杂性
- 7.2.4 两侧照明
- 7.2.5 摇头灯
- 7.2.6 聚光灯
- 7.2.7 光衰减
- 7.2.8 磁盘世界2
- 7.3 纹理
- 7.3.1 使用 glMatrix 进行纹理变换
- 7.3.2 生成的纹理坐标
- 7.3.3 程序纹理
- 7.3.4 凹凸贴图
- 7.3.5 环境映射
- 7.4 帧缓冲区
- 7.4.1 帧缓冲区操作
- 7.4.2 渲染到纹理
- 7.4.3 渲染缓冲区
- 7.4.4 动态立方体贴图纹理
- 7.5 WebGL 扩展
- 7.5.1 各向异性过滤
- 7.5.2 浮点颜色
- 7.5.3 WebGL 1.0 中的实例化绘图
- 7.5.4 延迟着色
- 7.5.5 WebGL 2.0 中的多个绘制缓冲区
第 8 章: 超越基本 3D 图形¶
第 9 章: WebGPU 简介¶
- 9.1 WebGPU 基础知识
- 9.1.1 适配器、设备和画布
- 9.1.2 着色器模块
- 9.1.3 渲染管线
- 9.1.4 缓冲区
- 9.1.5 绘图
- 9.1.6 多个顶点输入
- 9.1.7 自动绑定组布局
- 9.2 实例和索引
- 9.2.1 实例绘图
- 9.2.2 索引绘图
- 9.2.3 绘制多个基元
- 9.2.4 在着色器中使用索引
- 9.2.5 多重采样
- 9.3 WGSL
- 9.3.1 地址空间和对齐
- 9.3.2 数据类型
- 9.3.3 声明和注释
- 9.3.4 表达式和内置函数
- 9.3.5 语句和控制
- 9.3.6 函数定义
- 9.4 使用 WebGPU 的 3D 图形
- 9.4.1 深度测试
- 9.4.2 坐标系
- 9.4.3 进入 3D
- 9.4.4 wgpu 矩阵
- 9.4.5 再次磁盘世界
- 9.5 纹理
- 9.5.1 纹理坐标
- 9.5.2 纹理和采样器
- 9.5.3 Mipmap
- 9.5.4 立方体贴图纹理
- 9.5.5 纹理格式
- 9.6 计算着色器
- 9.6.1 工作组和调度
- 9.6.2 计算着色器
- 9.6.3 模拟
- 9.6.4 检索输出
- 9.7 一些细节
- 9.7.1 丢失设备
- 9.7.2 错误处理
- 9.7.3 限制和特征
- 9.7.4 渲染通道选项
- 9.7.5 渲染管线选项
附录 A: 编程语言¶
- A.1 Java 编程语言
- A.1.1 基本语言结构
- A.1.2 对象和数据结构
- A.1.3 窗口和事件
- A.2 C 编程语言
- A.2.1 语言基础知识
- A.2.2 指针和数组
- A.2.3 数据结构
- A.3 JavaScript 编程语言
- A.3.1 核心语言
- A.3.2 数组和对象
- A.3.3 网页上的 JavaScript
- A.3.4 与页面交互
- A.4 JavaScript Promise 和异步函数
- A.4.1 异步函数和等待
- A.4.2 直接使用 Promise
附录 B: Blender:3D 建模程序¶
- B.1 节 Blender 基础知识
- B.1.1 3D 视图
- B.1.2 将对象添加到场景中
- B.1.3 编辑模式
- B.1.4 光、材质和纹理
- B.1.5 保存您的工作
- B.1.6 更多功能
- B.2 节 Blender 建模
- B.2.1 文本
- B.2.2 曲线
- B.2.3 比例编辑
- B.2.4 拉伸网格
- B.2.5 网格修改器
- B.3 节 Blender 动画
- B.3.1 关键帧动画和函数曲线
- B.3.2 追踪
- B.3.3 路径动画
- B.3.4 渲染动画
- B.4 节 有关光和材料的更多信息
- B.4.1 照明
- B.4.2 Eevee 与 Cycles
- B.4.3 着色器编辑器
附录 C: 用于 2D 图形的 Gimp 和 Inkscape¶
- C.1 节 Gimp:2D 绘画程序
- C.1.1 绘画工具
- C.1.2 选择和路径
- C.1.3 层
- C.2 节 Inkscape:2D 绘图程序