物体:材质,所处的位置
相机:
环境:灯光
渲染指令队列
当拥有场景全貌时,才可以进行优化
1. 变换(Transform)
变换(Transform)= 平移(T)+ 旋转(R)+ 缩放(S),这就是所谓的 TRS。
TRS(本地变换)
在游戏中,每个物体通常都有它的“局部坐标系”(Local Space),而我们需要把它变换到“世界空间”(World Space),于是使用模型变换矩阵 Model Matrix(M),而这个矩阵就是由 TRS 构成的。
平移(Translate):移动物体的位置。
glm::translate(glm::mat4(1.0f), glm::vec3(x, y, z))
旋转(Rotate):绕某个轴旋转物体。
glm::rotate(glm::mat4(1.0f), glm::radians(angle), glm::vec3(axis))
缩放(Scale):将物体放大或缩小。
glm::scale(glm::mat4(1.0f), glm::vec3(sx, sy, sz))
将以上的三个矩阵组合我们就得到了Model Matrix:
glm::mat4 model = glm::translate(...) * glm::rotate(...) * glm::scale(...);
值得注意的是,变换矩阵的乘法顺序是从右往左生效!
有了Model Matrix后,就可以采用MVP乘积,将世界空间变换为屏幕空间:
gl_Position = Projection * View * Model * vec4(Vertex, 1.0);

Leave a comment