术语表
本书术语表按术语首次介绍章节排序。
Java轻量级游戏库(Lightweight Java Game Library,LWJGL): OpenGL、OpenCL、OpenAL和Vulkan对Java平台的原生绑定,常用于开发游戏。
GLFW: 为OpenGL、OpenGL ES和Vulkan提供的跨平台窗口与输入库。
帧率(Frames Per Second,FPS): 以帧称为单位的位图图像连续出现在显示器上的频率(速率),单位为Hz或FPS,通俗来讲就是每秒出现在屏幕上的画面数。
定长游戏循环(Fixed Step Game Loop): 以固定时间周期更新的游戏循环。
垂直同步(Vertical Synchronization): 避免因为游戏运行速度过快导致的画面撕裂现象。
图形管线(Graphics Pipeline): 又称渲染管线(Rendering Pipeline),是将三维表示映射到二维屏幕的一系列步骤。
固定管线(Fixed-function Pipeline): 固定管线在绘制过程中定义了一组固定的操作步骤,程序员被每一步骤可用的函数集约束,可以使用的效果和可进行的操作受到API的限制,但是这些功能的实现是固定的,并且不能修改。
可编程管线(Programmable Pipeline): 可编程管线使组成图形管线的不同步骤可以通过使用一组叫做着色器的特定程序来控制或编程。
着色器(Shader): 用于控制图形管线不同阶段的特定程序。
顶点(Vertex): 用于描述二维或者三维空间中的点的数据结构。
顶点缓冲区(Vertex Buffer): 使用顶点数组来包装所有需要渲染的顶点的数据结构,并使这些数据能够在图形管线的着色器中使用。
顶点着色器(Vertex Shader): 着色器之一,用于计算每个顶点到屏幕空间中的投影位置。
几何处理阶段(Geometry Processing): 图形管线阶段之一,此阶段将由顶点着色器变换的顶点连接成三角形。
三角形(Triangle): 显卡的基本工作单元之一,最简单的二维几何形状。
光栅化(Rasterization): 图形管线阶段之一,此阶段将几何处理阶段生成的三角形剪辑并将其转换为像素大小的片元。
片元处理阶段(Fragment Processing): 图形管线阶段之一,生成写入到帧缓冲区的像素的最终颜色。
片元(Fragment): 组成帧的最小单位,通常相当于一个像素的大小,可认为其即是像素(Pixel)。
片元着色器(Fragment Shader): 着色器之一,用于生成写入到帧缓冲区的像素的最终颜色。
帧缓冲区(Framebuffer): 用于储存图形管线的输出,由多个像素组成的数据结构。
OpenGL着色器语言(GLSL): 用于编写OpenGL着色器的类C语言。
齐次坐标(Homogeneous Coordinates): 齐次坐标就是将一个原本是n维的向量用一个n+1维向量来表示。
顶点缓冲对象(Vertex Buffer Object,VBO): 显存中存储顶点或其他数据的内存缓冲区。
顶点数组对象(Vertex Array Object,VAO): 用于储存一个或多个顶点缓冲对象的对象,便于使用显卡中的储存的数据。
四边形(Quad): 可由两个三角形组成的几何形状,由四个顶点组成。
网格(Mesh): 游戏开发中常见概念之一,通常用于包装顶点数组对象(VAO),储存模型的位置、顶点索引、颜色等数据。
索引缓冲区(Index Buffer): 用于指定顶点绘制顺序的缓冲区。
投影矩阵(Projection Matrix): 将顶点从三维世界空间投影到二维屏幕空间的矩阵。
截锥体(Frustum): 三维几何体的一种,又称为棱台。在游戏引擎中通常为四棱台。
矩阵(Matrix): 矩阵是以行和列排列的二维数组,在游戏引擎中通常用于变换三维空间中的点。
宽高比(Aspect Ratio): 高度与宽度之比。
JOML(Java OpenGL Math Library): Java OpenGL 数学库,提供了对OpenGL的一系列常用数学实体的封装。
Uniform: Uniform是着色器可以使用的全局的GLSL变量。
位移(Translation): 在三个轴中的任意一个轴上移动一个物体。
旋转(Rotation): 按任意一个轴旋转物体任意角度。
缩放(Scale): 调整物体的大小。
变换(Transformation): 位移、旋转和缩放三者的统称。
世界矩阵(World Matrix): 将物体或模型从模型坐标空间变换到世界坐标空间的矩阵,由位移矩阵、旋转矩阵和缩放矩阵相乘所得。
位移矩阵(Translation Matrix): 可对三维坐标进行位移变换的矩阵。
旋转矩阵(Rotation Matrix): 可对三维坐标进行旋转变换的矩阵。
缩放矩阵(Scale Matrix): 可对三维坐标进行缩放变换的矩阵。
深度测试(Depth Test): 对片元进行深度测试,丢弃距离屏幕较远的片元。
纹理(Texture): 用于绘制模型的像素的图像。
多级渐远纹理(Mipmap): 对于距离屏幕较远的像素,将使用细节较低的纹理进行绘制。多级渐远纹理可解决由于距离问题而导致的远处像素闪烁问题。
纹理坐标(Texture Coordinate): 通常只有两个分量,用于指定片元在纹理上的位置。
纹理单元(Texture Unit): 用于储存纹理的空间。
取样器(Sampler): Uniform类型之一,用于指定被取样的纹理。
混合(Blend): OpenGL功能之一,用于渲染透明或半透明物体,将其片元与其后片元的颜色进行混合。
摄像机(Camera): 用于自由观察三维世界的功能。OpenGL中不存在此功能和概念,移动摄像机实际上是将场景中的所有物体向相反的方向移动。
翻滚(Roll): 欧拉角(Euler Angles)之一,用于描述物体沿其纵轴旋转的角度。
俯仰(Pitch): 欧拉角之一,用于描述物体沿其横轴旋转的角度。
偏航(Yaw): 欧拉角之一,用于描述物体沿其竖轴旋转的角度。
观察矩阵(View Matrix): 用于将顶点向摄像机所在位置的相反方向和旋转状态变换的矩阵。
模型观察矩阵(Model View Matrix): 是观察矩阵与世界矩阵组合,可将模型空间的坐标变换到摄像机空间中的坐标,用于简化计算。
OBJ(.obj): Wavefront Technologies开发的一种几何定义开放文件格式,现已被广泛采用。
法线(Normal): 一个平面的法线是一个垂直于该平面的向量。
归一化(Normalize): 使向量的长度(或模长)为1。
顶点法线(Vertex Normal): 一个顶点的法线是其参与组成的三角形的面的法线的组合,其长度仍为1。
点光源(Point Light): 这种光模拟的是一个由点向空间各个方向均匀发射的光源。
聚光源(Spot Light): 这种光模拟从空间中的点发射的光源,但不是向所有方向上发射,而是限定在了一个锥形方向上。
平行光(Directional Light): 这种光模拟了太阳光,3D场景中的所有物体都会受到来自特定方向的平行光线的照射。无论物体是近抑或是远,光线总是以相同角度照射在物体上。
环境光(Ambient Light): 这种光来自空间的任何方向,并以相同的强度照亮所有物体。
漫反射(Diffuse Reflectance): 考虑到面向光源的表面更亮。
镜面反射(Specular Reflectance): 模拟光线在抛光或金属表面上的反射。
HUD(Heads-Up Display): 平视显示器,常用于飞机上将重要信息投影于挡风玻璃或头盔上,以便飞行员同时查看前方情况和飞行信息。现用于游戏中,将游戏中的重要信息显示于三维场景前。
正交投影(Orthographic Projection,Orthogonal Projection): 也称为正投影,正射投影。指不受近大远小影响的将三维物体投影到二维平面上的投影方式。
混合(Blend): 实现3D渲染中物体透明的一个功能,启用透明将允许使用Alpha分量混合颜色。
天空盒(Sky Box): 包裹3D场景并以摄像机位置为原点的巨大立方体,将纹理渲染在该立方体内部,以产生一种看到没有边缘的场景的错觉。
立方体映射(Cube Mapping): 将纹理分为六个部分,将各部分映射到立方体上。
面剔除(Face Culling): 剔除无用或看不到的面,以提升性能的OpenGL功能。