OpenGL Transformation 几何变换的顺序概要(MVP,NDC,Window坐标变换过程)
Geometry transforming or culling sequence:
- application passing the vertex pos(object space pos) to the shader program。
- transforming of clip space pos from object space pos by mulipling the MVP matrix。
- to world space pos from object space pos by multipling the model/world matrix。 ( x w o r l d y w o r l d z w o r l d ) = M m o d e l / w o r l d ( x o b j y o b j z o b j ) \left( \begin{matrix} x_{\color{#aaaaaa}world}\\ y_{\color{#aaaaaa}world}\\ z_{\color{#aaaaaa}world} \end{matrix} \right)= M_{\color{#aaaaaa}model/world} \left( \begin{matrix} x_{\color{#aaaaaa}obj}\\ y_{\color{#aaaaaa}obj}\\ z_{\color{#aaaaaa}obj} \end{matrix} \right) xworldyworldzworld =Mmodel/world xobjyobjzobj
- to view space pos from world space pos by multipling the view/camera/eye matrix。
- right-hand coordinates ( x e y e y e y e z e y e ) = M m o d e l V i e w ( x o b j y o b j z o b j ) = M v i e w ⋅ M m o d e l / w o r l d ( x o b j y o b j z o b j ) \left( \begin{matrix} x_{\color{#aaaaaa}eye}\\ y_{\color{#aaaaaa}eye}\\ z_{\color{#aaaaaa}eye} \end{matrix} \right)= M_{\color{#aaaaaa}modelView} \left( \begin{matrix} x_{\color{#aaaaaa}obj}\\ y_{\color{#aaaaaa}obj}\\ z_{\color{#aaaaaa}obj} \end{matrix} \right)= M_{\color{#aaaaaa}view} \cdot M_{\color{#aaaaaa}model/world} \left( \begin{matrix} x_{\color{#aaaaaa}obj}\\ y_{\color{#aaaaaa}obj}\\ z_{\color{#aaaaaa}obj} \end{matrix} \right) xeyeyeyezeye =MmodelView xobjyobjzobj =Mview⋅Mmodel/world xobjyobjzobj
- to projection/clip space pos from view space pos by multipling the projective/clip matrix。
(
x
c
l
i
p
y
c
l
i
p
z
c
l
i
p
)
=
M
p
r
o
j
e
c
t
(
x
e
y
e
y
e
y
e
z
e
y
e
)
\left( \begin{matrix} x_{\color{#aaaaaa}clip}\\ y_{\color{#aaaaaa}clip}\\ z_{\color{#aaaaaa}clip} \end{matrix} \right)= M_{\color{#aaaaaa}project} \left( \begin{matrix} x_{\color{#aaaaaa}eye}\\ y_{\color{#aaaaaa}eye}\\ z_{\color{#aaaaaa}eye} \end{matrix} \right)
xclipyclipzclip
=Mproject
xeyeyeyezeye
- culling the vertex which
−
w
c
l
i
p
>
x
y
z
c
l
i
p
>
w
c
l
i
p
-w_{\color{#aaaaaa}clip}>xyz_{\color{#aaaaaa}clip}>w_{\color{#aaaaaa}clip}
−wclip>xyzclip>wclip。
- add edge/vertex when culling occurs。
- only reserve the vertex which
−
w
c
l
i
p
<
x
y
z
c
l
i
p
<
w
c
l
i
p
-w_{\color{#aaaaaa}clip}
关注打赏
- culling the vertex which
−
w
c
l
i
p
>
x
y
z
c
l
i
p
>
w
c
l
i
p
-w_{\color{#aaaaaa}clip}>xyz_{\color{#aaaaaa}clip}>w_{\color{#aaaaaa}clip}
−wclip>xyzclip>wclip。
最近更新
- 深拷贝和浅拷贝的区别(重点)
- 【Vue】走进Vue框架世界
- 【云服务器】项目部署—搭建网站—vue电商后台管理系统
- 【React介绍】 一文带你深入React
- 【React】React组件实例的三大属性之state,props,refs(你学废了吗)
- 【脚手架VueCLI】从零开始,创建一个VUE项目
- 【React】深入理解React组件生命周期----图文详解(含代码)
- 【React】DOM的Diffing算法是什么?以及DOM中key的作用----经典面试题
- 【React】1_使用React脚手架创建项目步骤--------详解(含项目结构说明)
- 【React】2_如何使用react脚手架写一个简单的页面?