WAYNETS.ORG

Game and Program

渲染流

作者:

发表于

Context Polling System Post-Processing Renderer

物体:材质,所处的位置

相机:

环境:灯光

渲染指令队列

当拥有场景全貌时,才可以进行优化

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