坐标空间
MVP是有顺序的.project * view * model
局部坐标系先乘model,在view,再project.
MVP的矩阵是裁剪空间.
裁剪空间最后到fs是ndc空间.
ndc空间opengl和d3d的z不一样.
opengl是-1,1.
d3d是0,1
在构建project矩阵时,可以设置.
1 2 3 4 5 6 7 8 9 10 11 12
| template<typename T> GLM_FUNC_QUALIFIER mat<4, 4, T, defaultp> perspective(T fovy, T aspect, T zNear, T zFar) { if(GLM_CONFIG_CLIP_CONTROL == GLM_CLIP_CONTROL_LH_ZO) return perspectiveLH_ZO(fovy, aspect, zNear, zFar); else if(GLM_CONFIG_CLIP_CONTROL == GLM_CLIP_CONTROL_LH_NO) return perspectiveLH_NO(fovy, aspect, zNear, zFar); else if(GLM_CONFIG_CLIP_CONTROL == GLM_CLIP_CONTROL_RH_ZO) return perspectiveRH_ZO(fovy, aspect, zNear, zFar); else if(GLM_CONFIG_CLIP_CONTROL == GLM_CLIP_CONTROL_RH_NO) return perspectiveRH_NO(fovy, aspect, zNear, zFar); }
|
1
| "ZO" stands for Zero to One, indicating a depth range of 0 to 1.
|
opengl默认使用perspectiveRH_NO来构建project矩阵
1
| "NO" stands for Negative One to One, signifying a depth range of -1 to 1.
|